Audio

software-mansion-labs/skills/skills/react-native-best-practices/references/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 从公开仓库中收录这些内容。

举报或申请下架