Audio

作者 software-mansion-labse3f00cdb3494無授權條款291 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫10 天前更新

Software Mansion's best practices for audio in React Native using react-native-audio-api. Covers audio playback (buffer sources, oscillators, streaming), recording (file, callback, graph), audio effects (gain, filters, delay, convolver, panner, waveshaper), real-time analysis and visualization, audio worklets (custom synthesis, UIRuntime/AudioRuntime), system integration (sessions, interruptions, permissions), and testing. Trigger on: react-native-audio-api, AudioContext, AudioRecorder, AudioBuffer, AudioBufferSourceNode, AudioBufferQueueSourceNode, OscillatorNode, StreamerNode, GainNode, BiquadFilterNode, DelayNode, ConvolverNode, StereoPannerNode, WaveShaperNode, AnalyserNode, AudioParam, AudioManager, PlaybackNotificationManager, RecordingNotificationManager, WorkletNode, WorkletSourceNode, WorkletProcessingNode, audio playback, record audio, microphone, waveform, audio visualization, audio streaming, audio worklet, or any React Native feature that captures, processes, or emits sound.

AI 產生的概覽

在 React Native 中實作音訊播放、錄音、效果與分析的實務指南。

功能
此技能提供 Software Mansion 使用 react-native-audio-api 在 React Native 中處理音訊的正式環境實務模式。內容涵蓋 AudioContext 生命週期、以緩衝區來源、振盪器與串流進行的播放、錄音模式、效果鏈、即時分析與視覺化、音訊 worklet,以及工作階段、通知與權限等系統整合。它是純說明性參考資料:一份主文件加六份主題檔案,一次只載入一份,API 簽章與設定選項需從各參考檔案連結的文件頁面取得。
適用情境
適用於建置或審查會擷取、處理或輸出聲音的 React Native 功能,例如音訊播放、麥克風錄音、波形視覺化、音訊串流或自訂音訊 worklet。也適用於設定音訊工作階段、處理中斷、權限,或媒體播放與錄音通知。
執行需求
需要一個使用 react-native-audio-api 函式庫的 React Native 專案。不隨附指令碼,技能僅為說明文件。它要求代理以 webfetch 取得參考檔案中連結的文件頁面,因此取得 API 簽章與設定選項需要網路存取。

Audio

Software Mansion's production audio patterns for React Native using react-native-audio-api.

Load at most one reference file per question. For API signatures and config options, webfetch the documentation pages linked in each reference file.

Critical Rules

  • Single AudioContext: Create one AudioContext instance per app. Multiple instances lead to conflicting states (one running, another suspended). Encapsulate it in a singleton class.
  • Single AudioRecorder: Create one AudioRecorder instance and reuse it. Switching between recorder instances has noticeable impact on performance, memory, and battery.
  • Suspend when idle: A running AudioContext plays silence even with no source nodes connected, draining battery. On iOS, it also prevents the lock screen from showing a paused state. Use suspend() when audio is temporarily not needed, close() when done permanently.
  • AudioBufferSourceNode is single-use: An AudioBufferSourceNode can be started only once. To replay the same sound, create a new node. Nodes are inexpensive to create; reuse the AudioBuffer.
  • Use AudioParam scheduling for smooth changes: Direct, immediate changes to gain, frequency, or other params cause audible clicks. Use linearRampToValueAtTime, exponentialRampToValueAtTime, or setTargetAtTime for smooth transitions.
  • Mutate typed arrays in place for visualizations: When passing audio data to Reanimated shared values, use .modify() to mutate the existing Float32Array rather than allocating a new one each frame. Allocating at 60fps+ causes GC jank.

References

FileWhen to read
audio.mdDecision tree for choosing an audio approach; AudioContext lifecycle and singleton pattern; audio graph concepts; decoding audio data; AudioBuffer state management
playback.mdPlaying audio with AudioBufferSourceNode, OscillatorNode, StreamerNode, AudioBufferQueueSourceNode; looping and scheduling; AudioParam scheduling methods; playback rate and pitch; noise generation
recording.mdRecording audio with AudioRecorder; three recording modes (file, data callback, graph processing); file output configuration and formats; permissions; background recording setup
effects-and-analysis.mdAudio effects chain (GainNode, BiquadFilterNode, DelayNode, ConvolverNode, StereoPannerNode, WaveShaperNode); ADSR envelopes; AnalyserNode for time-domain and frequency-domain data; audio visualization patterns
worklets.mdAudio worklets with WorkletNode, WorkletSourceNode, WorkletProcessingNode; UIRuntime vs AudioRuntime; performance budgets and latency constraints; custom synthesis and real-time processing
system-and-notifications.mdAudioManager for session configuration and system events; PlaybackNotificationManager and RecordingNotificationManager for media controls; permissions; interruption handling; testing with mocks

來源與署名

來源:software-mansion-labs/skills位於skills/react-native-best-practices/references/audio提交e3f00cd

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架