react-native-audio-api 0.12.0-nightly-37d6b7c-20260119 → 0.12.0-nightly-75589dc-20260121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +8 -5
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +1 -1
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidFileWriterBackend.h +1 -1
- package/android/src/main/cpp/audioapi/android/core/utils/FileOptions.cpp +7 -3
- package/android/src/main/cpp/audioapi/android/core/utils/FileOptions.h +1 -1
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.cpp +4 -2
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.h +1 -1
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.cpp +5 -4
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +2 -2
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +52 -49
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +2 -1
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +6 -0
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +1 -0
- package/common/cpp/audioapi/HostObjects/utils/NodeOptions.h +111 -0
- package/common/cpp/audioapi/HostObjects/utils/NodeOptionsParser.h +262 -0
- package/common/cpp/audioapi/core/AudioNode.cpp +13 -6
- package/common/cpp/audioapi/core/AudioNode.h +2 -0
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +42 -44
- package/common/cpp/audioapi/core/BaseAudioContext.h +32 -21
- package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +8 -6
- package/common/cpp/audioapi/core/analysis/AnalyserNode.h +2 -1
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +7 -8
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +4 -1
- package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +5 -9
- package/common/cpp/audioapi/core/effects/ConvolverNode.h +2 -2
- package/common/cpp/audioapi/core/effects/DelayNode.cpp +5 -4
- package/common/cpp/audioapi/core/effects/DelayNode.h +2 -1
- package/common/cpp/audioapi/core/effects/GainNode.cpp +4 -3
- package/common/cpp/audioapi/core/effects/GainNode.h +2 -1
- package/common/cpp/audioapi/core/effects/IIRFilterNode.cpp +6 -6
- package/common/cpp/audioapi/core/effects/IIRFilterNode.h +3 -2
- package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +3 -3
- package/common/cpp/audioapi/core/effects/StereoPannerNode.h +4 -1
- package/common/cpp/audioapi/core/effects/WaveShaperNode.cpp +4 -3
- package/common/cpp/audioapi/core/effects/WaveShaperNode.h +4 -1
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +1 -1
- package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +3 -2
- package/common/cpp/audioapi/core/sources/AudioBuffer.h +2 -1
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +16 -22
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +2 -1
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +9 -6
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +2 -1
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +9 -7
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +4 -1
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +5 -8
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +4 -1
- package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +21 -16
- package/common/cpp/audioapi/core/sources/OscillatorNode.h +4 -1
- package/common/cpp/audioapi/core/sources/StreamerNode.cpp +4 -2
- package/common/cpp/audioapi/core/sources/StreamerNode.h +11 -1
- package/common/cpp/test/src/ConstantSourceTest.cpp +3 -2
- package/common/cpp/test/src/DelayTest.cpp +12 -5
- package/common/cpp/test/src/GainTest.cpp +3 -2
- package/common/cpp/test/src/IIRFilterTest.cpp +3 -2
- package/common/cpp/test/src/OscillatorTest.cpp +2 -1
- package/common/cpp/test/src/StereoPannerTest.cpp +3 -2
- package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +10 -9
- package/common/cpp/test/src/core/effects/WaveShaperNodeTest.cpp +4 -3
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +1 -1
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +5 -4
- package/ios/audioapi/ios/core/utils/FileOptions.h +3 -1
- package/ios/audioapi/ios/core/utils/FileOptions.mm +9 -3
- package/ios/audioapi/ios/core/utils/IOSFileWriter.h +2 -1
- package/ios/audioapi/ios/core/utils/IOSFileWriter.mm +5 -2
- package/lib/commonjs/api.js +11 -3
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/api.web.js +4 -10
- package/lib/commonjs/api.web.js.map +1 -1
- package/lib/commonjs/core/AnalyserNode.js +11 -0
- package/lib/commonjs/core/AnalyserNode.js.map +1 -1
- package/lib/commonjs/core/AudioBuffer.js +20 -6
- package/lib/commonjs/core/AudioBuffer.js.map +1 -1
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js +9 -0
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioBufferSourceNode.js +9 -0
- package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioRecorder.js +3 -3
- package/lib/commonjs/core/AudioRecorder.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +52 -65
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/commonjs/core/BiquadFilterNode.js +7 -1
- package/lib/commonjs/core/BiquadFilterNode.js.map +1 -1
- package/lib/commonjs/core/ConstantSourceNode.js +7 -1
- package/lib/commonjs/core/ConstantSourceNode.js.map +1 -1
- package/lib/commonjs/core/ConvolverNode.js +9 -3
- package/lib/commonjs/core/ConvolverNode.js.map +1 -1
- package/lib/commonjs/core/DelayNode.js +7 -1
- package/lib/commonjs/core/DelayNode.js.map +1 -1
- package/lib/commonjs/core/GainNode.js +9 -3
- package/lib/commonjs/core/GainNode.js.map +1 -1
- package/lib/commonjs/core/IIRFilterNode.js +9 -0
- package/lib/commonjs/core/IIRFilterNode.js.map +1 -1
- package/lib/commonjs/core/OscillatorNode.js +10 -1
- package/lib/commonjs/core/OscillatorNode.js.map +1 -1
- package/lib/commonjs/core/PeriodicWave.js +30 -2
- package/lib/commonjs/core/PeriodicWave.js.map +1 -1
- package/lib/commonjs/core/RecorderAdapterNode.js +3 -0
- package/lib/commonjs/core/RecorderAdapterNode.js.map +1 -1
- package/lib/commonjs/core/StereoPannerNode.js +7 -1
- package/lib/commonjs/core/StereoPannerNode.js.map +1 -1
- package/lib/commonjs/core/StreamerNode.js +25 -1
- package/lib/commonjs/core/StreamerNode.js.map +1 -1
- package/lib/commonjs/core/WaveShaperNode.js +12 -0
- package/lib/commonjs/core/WaveShaperNode.js.map +1 -1
- package/lib/commonjs/core/WorkletNode.js +13 -1
- package/lib/commonjs/core/WorkletNode.js.map +1 -1
- package/lib/commonjs/core/WorkletProcessingNode.js +14 -1
- package/lib/commonjs/core/WorkletProcessingNode.js.map +1 -1
- package/lib/commonjs/core/WorkletSourceNode.js +13 -1
- package/lib/commonjs/core/WorkletSourceNode.js.map +1 -1
- package/lib/commonjs/defaults.js +78 -0
- package/lib/commonjs/defaults.js.map +1 -0
- package/lib/commonjs/options-validators.js +40 -0
- package/lib/commonjs/options-validators.js.map +1 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/web-core/AnalyserNode.js +2 -1
- package/lib/commonjs/web-core/AnalyserNode.js.map +1 -1
- package/lib/commonjs/web-core/AudioBuffer.js +14 -6
- package/lib/commonjs/web-core/AudioBuffer.js.map +1 -1
- package/lib/commonjs/web-core/AudioBufferSourceNode.js +276 -89
- package/lib/commonjs/web-core/AudioBufferSourceNode.js.map +1 -1
- package/lib/commonjs/web-core/AudioContext.js +33 -32
- package/lib/commonjs/web-core/AudioContext.js.map +1 -1
- package/lib/commonjs/web-core/AudioNode.js +4 -0
- package/lib/commonjs/web-core/AudioNode.js.map +1 -1
- package/lib/commonjs/web-core/BiquadFilterNode.js +2 -1
- package/lib/commonjs/web-core/BiquadFilterNode.js.map +1 -1
- package/lib/commonjs/web-core/ConstantSourceNode.js +2 -1
- package/lib/commonjs/web-core/ConstantSourceNode.js.map +1 -1
- package/lib/commonjs/web-core/ConvolverNode.js +3 -5
- package/lib/commonjs/web-core/ConvolverNode.js.map +1 -1
- package/lib/commonjs/web-core/DelayNode.js +7 -1
- package/lib/commonjs/web-core/DelayNode.js.map +1 -1
- package/lib/commonjs/web-core/GainNode.js +2 -1
- package/lib/commonjs/web-core/GainNode.js.map +1 -1
- package/lib/commonjs/web-core/IIRFilterNode.js +12 -0
- package/lib/commonjs/web-core/IIRFilterNode.js.map +1 -1
- package/lib/commonjs/web-core/OfflineAudioContext.js +33 -32
- package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/commonjs/web-core/OscillatorNode.js +2 -1
- package/lib/commonjs/web-core/OscillatorNode.js.map +1 -1
- package/lib/commonjs/web-core/PeriodicWave.js +6 -1
- package/lib/commonjs/web-core/PeriodicWave.js.map +1 -1
- package/lib/commonjs/web-core/StereoPannerNode.js +2 -1
- package/lib/commonjs/web-core/StereoPannerNode.js.map +1 -1
- package/lib/module/api.js +2 -1
- package/lib/module/api.js.map +1 -1
- package/lib/module/api.web.js +2 -1
- package/lib/module/api.web.js.map +1 -1
- package/lib/module/core/AnalyserNode.js +11 -0
- package/lib/module/core/AnalyserNode.js.map +1 -1
- package/lib/module/core/AudioBuffer.js +19 -6
- package/lib/module/core/AudioBuffer.js.map +1 -1
- package/lib/module/core/AudioBufferQueueSourceNode.js +9 -0
- package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/module/core/AudioBufferSourceNode.js +9 -0
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/module/core/AudioRecorder.js +3 -4
- package/lib/module/core/AudioRecorder.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +52 -65
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/BiquadFilterNode.js +7 -1
- package/lib/module/core/BiquadFilterNode.js.map +1 -1
- package/lib/module/core/ConstantSourceNode.js +7 -1
- package/lib/module/core/ConstantSourceNode.js.map +1 -1
- package/lib/module/core/ConvolverNode.js +9 -3
- package/lib/module/core/ConvolverNode.js.map +1 -1
- package/lib/module/core/DelayNode.js +7 -1
- package/lib/module/core/DelayNode.js.map +1 -1
- package/lib/module/core/GainNode.js +9 -3
- package/lib/module/core/GainNode.js.map +1 -1
- package/lib/module/core/IIRFilterNode.js +9 -0
- package/lib/module/core/IIRFilterNode.js.map +1 -1
- package/lib/module/core/OscillatorNode.js +10 -1
- package/lib/module/core/OscillatorNode.js.map +1 -1
- package/lib/module/core/PeriodicWave.js +29 -2
- package/lib/module/core/PeriodicWave.js.map +1 -1
- package/lib/module/core/RecorderAdapterNode.js +3 -0
- package/lib/module/core/RecorderAdapterNode.js.map +1 -1
- package/lib/module/core/StereoPannerNode.js +7 -1
- package/lib/module/core/StereoPannerNode.js.map +1 -1
- package/lib/module/core/StreamerNode.js +25 -1
- package/lib/module/core/StreamerNode.js.map +1 -1
- package/lib/module/core/WaveShaperNode.js +12 -0
- package/lib/module/core/WaveShaperNode.js.map +1 -1
- package/lib/module/core/WorkletNode.js +13 -1
- package/lib/module/core/WorkletNode.js.map +1 -1
- package/lib/module/core/WorkletProcessingNode.js +14 -1
- package/lib/module/core/WorkletProcessingNode.js.map +1 -1
- package/lib/module/core/WorkletSourceNode.js +13 -1
- package/lib/module/core/WorkletSourceNode.js.map +1 -1
- package/lib/module/defaults.js +74 -0
- package/lib/module/defaults.js.map +1 -0
- package/lib/module/options-validators.js +36 -0
- package/lib/module/options-validators.js.map +1 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/web-core/AnalyserNode.js +2 -1
- package/lib/module/web-core/AnalyserNode.js.map +1 -1
- package/lib/module/web-core/AudioBuffer.js +13 -6
- package/lib/module/web-core/AudioBuffer.js.map +1 -1
- package/lib/module/web-core/AudioBufferSourceNode.js +277 -90
- package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -1
- package/lib/module/web-core/AudioContext.js +33 -32
- package/lib/module/web-core/AudioContext.js.map +1 -1
- package/lib/module/web-core/AudioNode.js +4 -0
- package/lib/module/web-core/AudioNode.js.map +1 -1
- package/lib/module/web-core/BiquadFilterNode.js +2 -1
- package/lib/module/web-core/BiquadFilterNode.js.map +1 -1
- package/lib/module/web-core/ConstantSourceNode.js +2 -1
- package/lib/module/web-core/ConstantSourceNode.js.map +1 -1
- package/lib/module/web-core/ConvolverNode.js +3 -5
- package/lib/module/web-core/ConvolverNode.js.map +1 -1
- package/lib/module/web-core/DelayNode.js +7 -1
- package/lib/module/web-core/DelayNode.js.map +1 -1
- package/lib/module/web-core/GainNode.js +2 -1
- package/lib/module/web-core/GainNode.js.map +1 -1
- package/lib/module/web-core/IIRFilterNode.js +12 -0
- package/lib/module/web-core/IIRFilterNode.js.map +1 -1
- package/lib/module/web-core/OfflineAudioContext.js +33 -32
- package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/module/web-core/OscillatorNode.js +2 -1
- package/lib/module/web-core/OscillatorNode.js.map +1 -1
- package/lib/module/web-core/PeriodicWave.js +6 -1
- package/lib/module/web-core/PeriodicWave.js.map +1 -1
- package/lib/module/web-core/StereoPannerNode.js +2 -1
- package/lib/module/web-core/StereoPannerNode.js.map +1 -1
- package/lib/typescript/api.d.ts +2 -1
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/api.web.d.ts +2 -1
- package/lib/typescript/api.web.d.ts.map +1 -1
- package/lib/typescript/core/AnalyserNode.d.ts +3 -1
- package/lib/typescript/core/AnalyserNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioBuffer.d.ts +3 -0
- package/lib/typescript/core/AudioBuffer.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +3 -0
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferSourceNode.d.ts +3 -0
- package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioRecorder.d.ts +2 -2
- package/lib/typescript/core/AudioRecorder.d.ts.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +10 -6
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/BiquadFilterNode.d.ts +2 -3
- package/lib/typescript/core/BiquadFilterNode.d.ts.map +1 -1
- package/lib/typescript/core/ConstantSourceNode.d.ts +2 -2
- package/lib/typescript/core/ConstantSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/ConvolverNode.d.ts +2 -2
- package/lib/typescript/core/ConvolverNode.d.ts.map +1 -1
- package/lib/typescript/core/DelayNode.d.ts +2 -2
- package/lib/typescript/core/DelayNode.d.ts.map +1 -1
- package/lib/typescript/core/GainNode.d.ts +2 -2
- package/lib/typescript/core/GainNode.d.ts.map +1 -1
- package/lib/typescript/core/IIRFilterNode.d.ts +3 -0
- package/lib/typescript/core/IIRFilterNode.d.ts.map +1 -1
- package/lib/typescript/core/OscillatorNode.d.ts +2 -3
- package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
- package/lib/typescript/core/PeriodicWave.d.ts +4 -1
- package/lib/typescript/core/PeriodicWave.d.ts.map +1 -1
- package/lib/typescript/core/RecorderAdapterNode.d.ts +2 -0
- package/lib/typescript/core/RecorderAdapterNode.d.ts.map +1 -1
- package/lib/typescript/core/StereoPannerNode.d.ts +2 -2
- package/lib/typescript/core/StereoPannerNode.d.ts.map +1 -1
- package/lib/typescript/core/StreamerNode.d.ts +5 -0
- package/lib/typescript/core/StreamerNode.d.ts.map +1 -1
- package/lib/typescript/core/WaveShaperNode.d.ts +3 -0
- package/lib/typescript/core/WaveShaperNode.d.ts.map +1 -1
- package/lib/typescript/core/WorkletNode.d.ts +3 -0
- package/lib/typescript/core/WorkletNode.d.ts.map +1 -1
- package/lib/typescript/core/WorkletProcessingNode.d.ts +3 -0
- package/lib/typescript/core/WorkletProcessingNode.d.ts.map +1 -1
- package/lib/typescript/core/WorkletSourceNode.d.ts +3 -0
- package/lib/typescript/core/WorkletSourceNode.d.ts.map +1 -1
- package/lib/typescript/defaults.d.ts +16 -0
- package/lib/typescript/defaults.d.ts.map +1 -0
- package/lib/typescript/interfaces.d.ts +17 -16
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/options-validators.d.ts +6 -0
- package/lib/typescript/options-validators.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +83 -11
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/web-core/AnalyserNode.d.ts +2 -2
- package/lib/typescript/web-core/AnalyserNode.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioBuffer.d.ts +3 -0
- package/lib/typescript/web-core/AudioBuffer.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +24 -15
- package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioContext.d.ts +5 -6
- package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioNode.d.ts +2 -2
- package/lib/typescript/web-core/AudioNode.d.ts.map +1 -1
- package/lib/typescript/web-core/BaseAudioContext.d.ts +3 -3
- package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/BiquadFilterNode.d.ts +2 -2
- package/lib/typescript/web-core/BiquadFilterNode.d.ts.map +1 -1
- package/lib/typescript/web-core/ConstantSourceNode.d.ts +2 -1
- package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +1 -1
- package/lib/typescript/web-core/ConvolverNode.d.ts +2 -1
- package/lib/typescript/web-core/ConvolverNode.d.ts.map +1 -1
- package/lib/typescript/web-core/DelayNode.d.ts +2 -1
- package/lib/typescript/web-core/DelayNode.d.ts.map +1 -1
- package/lib/typescript/web-core/GainNode.d.ts +2 -1
- package/lib/typescript/web-core/GainNode.d.ts.map +1 -1
- package/lib/typescript/web-core/IIRFilterNode.d.ts +3 -0
- package/lib/typescript/web-core/IIRFilterNode.d.ts.map +1 -1
- package/lib/typescript/web-core/OfflineAudioContext.d.ts +5 -6
- package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/OscillatorNode.d.ts +2 -2
- package/lib/typescript/web-core/OscillatorNode.d.ts.map +1 -1
- package/lib/typescript/web-core/PeriodicWave.d.ts +3 -1
- package/lib/typescript/web-core/PeriodicWave.d.ts.map +1 -1
- package/lib/typescript/web-core/StereoPannerNode.d.ts +2 -1
- package/lib/typescript/web-core/StereoPannerNode.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api.ts +3 -1
- package/src/api.web.ts +1 -2
- package/src/core/AnalyserNode.ts +16 -1
- package/src/core/AudioBuffer.ts +26 -6
- package/src/core/AudioBufferQueueSourceNode.ts +15 -0
- package/src/core/AudioBufferSourceNode.ts +12 -0
- package/src/core/AudioRecorder.ts +4 -3
- package/src/core/BaseAudioContext.ts +48 -151
- package/src/core/BiquadFilterNode.ts +9 -2
- package/src/core/ConstantSourceNode.ts +9 -1
- package/src/core/ConvolverNode.ts +11 -3
- package/src/core/DelayNode.ts +5 -2
- package/src/core/GainNode.ts +10 -3
- package/src/core/IIRFilterNode.ts +12 -0
- package/src/core/OscillatorNode.ts +13 -2
- package/src/core/PeriodicWave.ts +36 -2
- package/src/core/RecorderAdapterNode.ts +5 -0
- package/src/core/StereoPannerNode.ts +9 -1
- package/src/core/StreamerNode.ts +29 -1
- package/src/core/WaveShaperNode.ts +17 -0
- package/src/core/WorkletNode.ts +30 -1
- package/src/core/WorkletProcessingNode.ts +39 -1
- package/src/core/WorkletSourceNode.ts +36 -1
- package/src/defaults.ts +100 -0
- package/src/interfaces.ts +38 -25
- package/src/options-validators.ts +66 -0
- package/src/types.ts +100 -12
- package/src/web-core/AnalyserNode.tsx +15 -6
- package/src/web-core/AudioBuffer.tsx +20 -6
- package/src/web-core/AudioBufferSourceNode.tsx +393 -148
- package/src/web-core/AudioContext.tsx +22 -72
- package/src/web-core/AudioNode.tsx +6 -2
- package/src/web-core/BaseAudioContext.tsx +3 -7
- package/src/web-core/BiquadFilterNode.tsx +6 -2
- package/src/web-core/ConstantSourceNode.tsx +3 -1
- package/src/web-core/ConvolverNode.tsx +8 -8
- package/src/web-core/DelayNode.tsx +5 -1
- package/src/web-core/GainNode.tsx +3 -1
- package/src/web-core/IIRFilterNode.tsx +15 -0
- package/src/web-core/OfflineAudioContext.tsx +19 -67
- package/src/web-core/OscillatorNode.tsx +3 -2
- package/src/web-core/PeriodicWave.tsx +11 -1
- package/src/web-core/StereoPannerNode.tsx +9 -1
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { InvalidAccessError, NotSupportedError } from '../errors';
|
|
2
|
-
import {
|
|
3
|
-
AudioBufferBaseSourceNodeOptions,
|
|
4
|
-
AudioContextOptions,
|
|
5
|
-
ContextState,
|
|
6
|
-
DecodeDataInput,
|
|
7
|
-
IIRFilterNodeOptions,
|
|
8
|
-
PeriodicWaveConstraints,
|
|
9
|
-
} from '../types';
|
|
2
|
+
import { AudioContextOptions, ContextState, DecodeDataInput } from '../types';
|
|
10
3
|
import AnalyserNode from './AnalyserNode';
|
|
11
4
|
import AudioBuffer from './AudioBuffer';
|
|
12
5
|
import AudioBufferSourceNode from './AudioBufferSourceNode';
|
|
@@ -14,16 +7,13 @@ import AudioDestinationNode from './AudioDestinationNode';
|
|
|
14
7
|
import BaseAudioContext from './BaseAudioContext';
|
|
15
8
|
import BiquadFilterNode from './BiquadFilterNode';
|
|
16
9
|
import ConvolverNode from './ConvolverNode';
|
|
17
|
-
import { ConvolverNodeOptions } from './ConvolverNodeOptions';
|
|
18
10
|
import DelayNode from './DelayNode';
|
|
19
11
|
import GainNode from './GainNode';
|
|
20
12
|
import IIRFilterNode from './IIRFilterNode';
|
|
21
13
|
import OscillatorNode from './OscillatorNode';
|
|
22
14
|
import PeriodicWave from './PeriodicWave';
|
|
23
15
|
import StereoPannerNode from './StereoPannerNode';
|
|
24
|
-
|
|
25
16
|
import ConstantSourceNode from './ConstantSourceNode';
|
|
26
|
-
import { globalTag, globalWasmPromise } from './custom/LoadCustomWasm';
|
|
27
17
|
import WaveShaperNode from './WaveShaperNode';
|
|
28
18
|
|
|
29
19
|
export default class AudioContext implements BaseAudioContext {
|
|
@@ -58,85 +48,49 @@ export default class AudioContext implements BaseAudioContext {
|
|
|
58
48
|
}
|
|
59
49
|
|
|
60
50
|
createOscillator(): OscillatorNode {
|
|
61
|
-
return new OscillatorNode(this
|
|
51
|
+
return new OscillatorNode(this);
|
|
62
52
|
}
|
|
63
53
|
|
|
64
54
|
createConstantSource(): ConstantSourceNode {
|
|
65
|
-
return new ConstantSourceNode(this
|
|
55
|
+
return new ConstantSourceNode(this);
|
|
66
56
|
}
|
|
67
57
|
|
|
68
58
|
createGain(): GainNode {
|
|
69
|
-
return new GainNode(this
|
|
59
|
+
return new GainNode(this);
|
|
70
60
|
}
|
|
71
61
|
|
|
72
62
|
createDelay(maxDelayTime?: number): DelayNode {
|
|
73
|
-
return new DelayNode(this,
|
|
63
|
+
return new DelayNode(this, { maxDelayTime });
|
|
74
64
|
}
|
|
75
65
|
|
|
76
66
|
createStereoPanner(): StereoPannerNode {
|
|
77
|
-
return new StereoPannerNode(this
|
|
67
|
+
return new StereoPannerNode(this);
|
|
78
68
|
}
|
|
79
69
|
|
|
80
70
|
createBiquadFilter(): BiquadFilterNode {
|
|
81
|
-
return new BiquadFilterNode(this
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
createIIRFilter(options: IIRFilterNodeOptions): IIRFilterNode {
|
|
85
|
-
return new IIRFilterNode(
|
|
86
|
-
this,
|
|
87
|
-
this.context.createIIRFilter(options.feedforward, options.feedback)
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
createConvolver(options?: ConvolverNodeOptions): ConvolverNode {
|
|
92
|
-
if (options?.buffer) {
|
|
93
|
-
const numberOfChannels = options.buffer.numberOfChannels;
|
|
94
|
-
if (
|
|
95
|
-
numberOfChannels !== 1 &&
|
|
96
|
-
numberOfChannels !== 2 &&
|
|
97
|
-
numberOfChannels !== 4
|
|
98
|
-
) {
|
|
99
|
-
throw new NotSupportedError(
|
|
100
|
-
`The number of channels provided (${numberOfChannels}) in impulse response for ConvolverNode buffer must be 1 or 2 or 4.`
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
const buffer = options?.buffer ?? null;
|
|
105
|
-
const disableNormalization = options?.disableNormalization ?? false;
|
|
106
|
-
return new ConvolverNode(
|
|
107
|
-
this,
|
|
108
|
-
this.context.createConvolver(),
|
|
109
|
-
buffer,
|
|
110
|
-
disableNormalization
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
async createBufferSource(
|
|
115
|
-
options?: AudioBufferBaseSourceNodeOptions
|
|
116
|
-
): Promise<AudioBufferSourceNode> {
|
|
117
|
-
if (!options || !options.pitchCorrection) {
|
|
118
|
-
return new AudioBufferSourceNode(
|
|
119
|
-
this,
|
|
120
|
-
this.context.createBufferSource(),
|
|
121
|
-
false
|
|
122
|
-
);
|
|
123
|
-
}
|
|
71
|
+
return new BiquadFilterNode(this);
|
|
72
|
+
}
|
|
124
73
|
|
|
125
|
-
|
|
74
|
+
createConvolver(): ConvolverNode {
|
|
75
|
+
return new ConvolverNode(this);
|
|
76
|
+
}
|
|
126
77
|
|
|
127
|
-
|
|
78
|
+
createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode {
|
|
79
|
+
return new IIRFilterNode(this, { feedforward, feedback });
|
|
80
|
+
}
|
|
128
81
|
|
|
129
|
-
|
|
82
|
+
createBufferSource(pitchCorrection?: boolean): AudioBufferSourceNode {
|
|
83
|
+
return new AudioBufferSourceNode(this, { pitchCorrection });
|
|
130
84
|
}
|
|
131
85
|
|
|
132
86
|
createBuffer(
|
|
133
|
-
|
|
87
|
+
numberOfChannels: number,
|
|
134
88
|
length: number,
|
|
135
89
|
sampleRate: number
|
|
136
90
|
): AudioBuffer {
|
|
137
|
-
if (
|
|
91
|
+
if (numberOfChannels < 1 || numberOfChannels >= 32) {
|
|
138
92
|
throw new NotSupportedError(
|
|
139
|
-
`The number of channels provided (${
|
|
93
|
+
`The number of channels provided (${numberOfChannels}) is outside the range [1, 32]`
|
|
140
94
|
);
|
|
141
95
|
}
|
|
142
96
|
|
|
@@ -152,9 +106,7 @@ export default class AudioContext implements BaseAudioContext {
|
|
|
152
106
|
);
|
|
153
107
|
}
|
|
154
108
|
|
|
155
|
-
return new AudioBuffer(
|
|
156
|
-
this.context.createBuffer(numOfChannels, length, sampleRate)
|
|
157
|
-
);
|
|
109
|
+
return new AudioBuffer(this, { numberOfChannels, length, sampleRate });
|
|
158
110
|
}
|
|
159
111
|
|
|
160
112
|
createPeriodicWave(
|
|
@@ -168,13 +120,11 @@ export default class AudioContext implements BaseAudioContext {
|
|
|
168
120
|
);
|
|
169
121
|
}
|
|
170
122
|
|
|
171
|
-
return new PeriodicWave(
|
|
172
|
-
this.context.createPeriodicWave(real, imag, constraints)
|
|
173
|
-
);
|
|
123
|
+
return new PeriodicWave(this, { real, imag, ...constraints });
|
|
174
124
|
}
|
|
175
125
|
|
|
176
126
|
createAnalyser(): AnalyserNode {
|
|
177
|
-
return new AnalyserNode(this
|
|
127
|
+
return new AnalyserNode(this);
|
|
178
128
|
}
|
|
179
129
|
|
|
180
130
|
createWaveShaper(): WaveShaperNode {
|
|
@@ -10,7 +10,7 @@ export default class AudioNode {
|
|
|
10
10
|
readonly channelCountMode: ChannelCountMode;
|
|
11
11
|
readonly channelInterpretation: ChannelInterpretation;
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
readonly node: globalThis.AudioNode;
|
|
14
14
|
|
|
15
15
|
constructor(context: BaseAudioContext, node: globalThis.AudioNode) {
|
|
16
16
|
this.context = context;
|
|
@@ -38,12 +38,16 @@ export default class AudioNode {
|
|
|
38
38
|
return destination;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
public disconnect(destination?: AudioNode): void {
|
|
41
|
+
public disconnect(destination?: AudioNode | AudioParam): void {
|
|
42
42
|
if (destination === undefined) {
|
|
43
43
|
this.node.disconnect();
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
if (destination instanceof AudioParam) {
|
|
48
|
+
this.node.disconnect(destination.param);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
47
51
|
this.node.disconnect(destination.node);
|
|
48
52
|
}
|
|
49
53
|
}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ContextState,
|
|
3
|
-
IIRFilterNodeOptions,
|
|
4
|
-
PeriodicWaveConstraints,
|
|
5
|
-
} from '../types';
|
|
1
|
+
import { ContextState } from '../types';
|
|
6
2
|
import AnalyserNode from './AnalyserNode';
|
|
7
3
|
import AudioBuffer from './AudioBuffer';
|
|
8
4
|
import AudioBufferSourceNode from './AudioBufferSourceNode';
|
|
@@ -32,9 +28,9 @@ export default interface BaseAudioContext {
|
|
|
32
28
|
createDelay(maxDelayTime?: number): DelayNode;
|
|
33
29
|
createStereoPanner(): StereoPannerNode;
|
|
34
30
|
createBiquadFilter(): BiquadFilterNode;
|
|
35
|
-
createIIRFilter(
|
|
31
|
+
createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;
|
|
36
32
|
createConvolver(): ConvolverNode;
|
|
37
|
-
createBufferSource():
|
|
33
|
+
createBufferSource(): AudioBufferSourceNode;
|
|
38
34
|
createBuffer(
|
|
39
35
|
numOfChannels: number,
|
|
40
36
|
length: number,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import AudioParam from './AudioParam';
|
|
2
2
|
import AudioNode from './AudioNode';
|
|
3
3
|
import BaseAudioContext from './BaseAudioContext';
|
|
4
|
-
import { BiquadFilterType } from '../types';
|
|
5
4
|
import { InvalidAccessError } from '../errors';
|
|
5
|
+
import { TBiquadFilterOptions } from '../types';
|
|
6
6
|
|
|
7
7
|
export default class BiquadFilterNode extends AudioNode {
|
|
8
8
|
readonly frequency: AudioParam;
|
|
@@ -12,8 +12,12 @@ export default class BiquadFilterNode extends AudioNode {
|
|
|
12
12
|
|
|
13
13
|
constructor(
|
|
14
14
|
context: BaseAudioContext,
|
|
15
|
-
|
|
15
|
+
biquadFilterOptions?: TBiquadFilterOptions
|
|
16
16
|
) {
|
|
17
|
+
const biquadFilter = new globalThis.BiquadFilterNode(
|
|
18
|
+
context.context,
|
|
19
|
+
biquadFilterOptions
|
|
20
|
+
);
|
|
17
21
|
super(context, biquadFilter);
|
|
18
22
|
this.frequency = new AudioParam(biquadFilter.frequency, context);
|
|
19
23
|
this.detune = new AudioParam(biquadFilter.detune, context);
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import AudioParam from './AudioParam';
|
|
2
2
|
import AudioScheduledSourceNode from './AudioScheduledSourceNode';
|
|
3
3
|
import BaseAudioContext from './BaseAudioContext';
|
|
4
|
+
import { TConstantSourceOptions } from '../types';
|
|
4
5
|
|
|
5
6
|
export default class ConstantSourceNode extends AudioScheduledSourceNode {
|
|
6
7
|
readonly offset: AudioParam;
|
|
7
8
|
|
|
8
|
-
constructor(context: BaseAudioContext,
|
|
9
|
+
constructor(context: BaseAudioContext, options?: TConstantSourceOptions) {
|
|
10
|
+
const node = new globalThis.ConstantSourceNode(context.context, options);
|
|
9
11
|
super(context, node);
|
|
10
12
|
this.offset = new AudioParam(node.offset, context);
|
|
11
13
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import BaseAudioContext from './BaseAudioContext';
|
|
2
2
|
import AudioNode from './AudioNode';
|
|
3
3
|
import AudioBuffer from './AudioBuffer';
|
|
4
|
+
import { TWebConvolverOptions } from '../types';
|
|
4
5
|
|
|
5
6
|
export default class ConvolverNode extends AudioNode {
|
|
6
7
|
constructor(
|
|
7
8
|
context: BaseAudioContext,
|
|
8
|
-
|
|
9
|
-
buffer: AudioBuffer | null = null,
|
|
10
|
-
disableNormalization: boolean = false
|
|
9
|
+
convolverOptions?: TWebConvolverOptions
|
|
11
10
|
) {
|
|
12
|
-
|
|
11
|
+
const convolver = new globalThis.ConvolverNode(
|
|
12
|
+
context.context,
|
|
13
|
+
convolverOptions
|
|
14
|
+
);
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
(this.node as globalThis.ConvolverNode).buffer = buffer.buffer;
|
|
17
|
-
}
|
|
16
|
+
const node = convolver;
|
|
17
|
+
super(context, node);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
public get buffer(): AudioBuffer | null {
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import BaseAudioContext from './BaseAudioContext';
|
|
2
2
|
import AudioNode from './AudioNode';
|
|
3
3
|
import AudioParam from './AudioParam';
|
|
4
|
+
import { TDelayOptions } from '../types';
|
|
5
|
+
import { DelayOptions } from '../defaults';
|
|
4
6
|
|
|
5
7
|
export default class DelayNode extends AudioNode {
|
|
6
8
|
readonly delayTime: AudioParam;
|
|
7
9
|
|
|
8
|
-
constructor(context: BaseAudioContext,
|
|
10
|
+
constructor(context: BaseAudioContext, options?: TDelayOptions) {
|
|
11
|
+
const finalOptions = { ...DelayOptions, ...options };
|
|
12
|
+
const delay = new globalThis.DelayNode(context.context, finalOptions);
|
|
9
13
|
super(context, delay);
|
|
10
14
|
this.delayTime = new AudioParam(delay.delayTime, context);
|
|
11
15
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import BaseAudioContext from './BaseAudioContext';
|
|
2
2
|
import AudioNode from './AudioNode';
|
|
3
3
|
import AudioParam from './AudioParam';
|
|
4
|
+
import { TGainOptions } from '../types';
|
|
4
5
|
|
|
5
6
|
export default class GainNode extends AudioNode {
|
|
6
7
|
readonly gain: AudioParam;
|
|
7
8
|
|
|
8
|
-
constructor(context: BaseAudioContext,
|
|
9
|
+
constructor(context: BaseAudioContext, gainOptions?: TGainOptions) {
|
|
10
|
+
const gain = new globalThis.GainNode(context.context, gainOptions);
|
|
9
11
|
super(context, gain);
|
|
10
12
|
this.gain = new AudioParam(gain.gain, context);
|
|
11
13
|
}
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
import { NotSupportedError } from '../errors';
|
|
2
2
|
import AudioNode from './AudioNode';
|
|
3
|
+
import { TIIRFilterOptions } from '../types';
|
|
4
|
+
import { AudioNodeOptions } from '../defaults';
|
|
5
|
+
import BaseAudioContext from './BaseAudioContext';
|
|
3
6
|
|
|
4
7
|
export default class IIRFilterNode extends AudioNode {
|
|
8
|
+
constructor(context: BaseAudioContext, options: TIIRFilterOptions) {
|
|
9
|
+
const finalOptions: TIIRFilterOptions = {
|
|
10
|
+
...AudioNodeOptions,
|
|
11
|
+
...options,
|
|
12
|
+
};
|
|
13
|
+
const iirFilterNode = new globalThis.IIRFilterNode(context.context, {
|
|
14
|
+
feedforward: finalOptions.feedforward,
|
|
15
|
+
feedback: finalOptions.feedback,
|
|
16
|
+
});
|
|
17
|
+
super(context, iirFilterNode);
|
|
18
|
+
}
|
|
19
|
+
|
|
5
20
|
public getFrequencyResponse(
|
|
6
21
|
frequencyArray: Float32Array,
|
|
7
22
|
magResponseOutput: Float32Array,
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ContextState,
|
|
3
|
-
PeriodicWaveConstraints,
|
|
4
|
-
OfflineAudioContextOptions,
|
|
5
|
-
AudioBufferBaseSourceNodeOptions,
|
|
6
|
-
IIRFilterNodeOptions,
|
|
7
|
-
} from '../types';
|
|
1
|
+
import { ContextState, OfflineAudioContextOptions } from '../types';
|
|
8
2
|
import { InvalidAccessError, NotSupportedError } from '../errors';
|
|
9
3
|
import BaseAudioContext from './BaseAudioContext';
|
|
10
4
|
import AnalyserNode from './AnalyserNode';
|
|
@@ -20,9 +14,7 @@ import StereoPannerNode from './StereoPannerNode';
|
|
|
20
14
|
import ConstantSourceNode from './ConstantSourceNode';
|
|
21
15
|
import WaveShaperNode from './WaveShaperNode';
|
|
22
16
|
|
|
23
|
-
import { globalWasmPromise, globalTag } from './custom/LoadCustomWasm';
|
|
24
17
|
import ConvolverNode from './ConvolverNode';
|
|
25
|
-
import { ConvolverNodeOptions } from './ConvolverNodeOptions';
|
|
26
18
|
import DelayNode from './DelayNode';
|
|
27
19
|
|
|
28
20
|
export default class OfflineAudioContext implements BaseAudioContext {
|
|
@@ -63,85 +55,49 @@ export default class OfflineAudioContext implements BaseAudioContext {
|
|
|
63
55
|
}
|
|
64
56
|
|
|
65
57
|
createOscillator(): OscillatorNode {
|
|
66
|
-
return new OscillatorNode(this
|
|
58
|
+
return new OscillatorNode(this);
|
|
67
59
|
}
|
|
68
60
|
|
|
69
61
|
createConstantSource(): ConstantSourceNode {
|
|
70
|
-
return new ConstantSourceNode(this
|
|
62
|
+
return new ConstantSourceNode(this);
|
|
71
63
|
}
|
|
72
64
|
|
|
73
65
|
createGain(): GainNode {
|
|
74
|
-
return new GainNode(this
|
|
66
|
+
return new GainNode(this);
|
|
75
67
|
}
|
|
76
68
|
|
|
77
69
|
createDelay(maxDelayTime?: number): DelayNode {
|
|
78
|
-
return new DelayNode(this,
|
|
70
|
+
return new DelayNode(this, { maxDelayTime });
|
|
79
71
|
}
|
|
80
72
|
|
|
81
73
|
createStereoPanner(): StereoPannerNode {
|
|
82
|
-
return new StereoPannerNode(this
|
|
74
|
+
return new StereoPannerNode(this);
|
|
83
75
|
}
|
|
84
76
|
|
|
85
77
|
createBiquadFilter(): BiquadFilterNode {
|
|
86
|
-
return new BiquadFilterNode(this
|
|
78
|
+
return new BiquadFilterNode(this);
|
|
87
79
|
}
|
|
88
80
|
|
|
89
|
-
|
|
90
|
-
return new
|
|
91
|
-
this,
|
|
92
|
-
this.context.createIIRFilter(options.feedforward, options.feedback)
|
|
93
|
-
);
|
|
81
|
+
createConvolver(): ConvolverNode {
|
|
82
|
+
return new ConvolverNode(this);
|
|
94
83
|
}
|
|
95
84
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const numberOfChannels = options.buffer.numberOfChannels;
|
|
99
|
-
if (
|
|
100
|
-
numberOfChannels !== 1 &&
|
|
101
|
-
numberOfChannels !== 2 &&
|
|
102
|
-
numberOfChannels !== 4
|
|
103
|
-
) {
|
|
104
|
-
throw new NotSupportedError(
|
|
105
|
-
`The number of channels provided (${numberOfChannels}) in impulse response for ConvolverNode buffer must be 1 or 2 or 4.`
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
const buffer = options?.buffer ?? null;
|
|
110
|
-
const disableNormalization = options?.disableNormalization ?? false;
|
|
111
|
-
return new ConvolverNode(
|
|
112
|
-
this,
|
|
113
|
-
this.context.createConvolver(),
|
|
114
|
-
buffer,
|
|
115
|
-
disableNormalization
|
|
116
|
-
);
|
|
85
|
+
createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode {
|
|
86
|
+
return new IIRFilterNode(this, { feedforward, feedback });
|
|
117
87
|
}
|
|
118
88
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
): Promise<AudioBufferSourceNode> {
|
|
122
|
-
if (!options || !options.pitchCorrection) {
|
|
123
|
-
return new AudioBufferSourceNode(
|
|
124
|
-
this,
|
|
125
|
-
this.context.createBufferSource(),
|
|
126
|
-
false
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
await globalWasmPromise;
|
|
131
|
-
|
|
132
|
-
const wasmStretch = await window[globalTag](this.context);
|
|
133
|
-
|
|
134
|
-
return new AudioBufferSourceNode(this, wasmStretch, true);
|
|
89
|
+
createBufferSource(pitchCorrection?: boolean): AudioBufferSourceNode {
|
|
90
|
+
return new AudioBufferSourceNode(this, { pitchCorrection });
|
|
135
91
|
}
|
|
136
92
|
|
|
137
93
|
createBuffer(
|
|
138
|
-
|
|
94
|
+
numberOfChannels: number,
|
|
139
95
|
length: number,
|
|
140
96
|
sampleRate: number
|
|
141
97
|
): AudioBuffer {
|
|
142
|
-
if (
|
|
98
|
+
if (numberOfChannels < 1 || numberOfChannels >= 32) {
|
|
143
99
|
throw new NotSupportedError(
|
|
144
|
-
`The number of channels provided (${
|
|
100
|
+
`The number of channels provided (${numberOfChannels}) is outside the range [1, 32]`
|
|
145
101
|
);
|
|
146
102
|
}
|
|
147
103
|
|
|
@@ -157,9 +113,7 @@ export default class OfflineAudioContext implements BaseAudioContext {
|
|
|
157
113
|
);
|
|
158
114
|
}
|
|
159
115
|
|
|
160
|
-
return new AudioBuffer(
|
|
161
|
-
this.context.createBuffer(numOfChannels, length, sampleRate)
|
|
162
|
-
);
|
|
116
|
+
return new AudioBuffer(this, { numberOfChannels, length, sampleRate });
|
|
163
117
|
}
|
|
164
118
|
|
|
165
119
|
createPeriodicWave(
|
|
@@ -173,13 +127,11 @@ export default class OfflineAudioContext implements BaseAudioContext {
|
|
|
173
127
|
);
|
|
174
128
|
}
|
|
175
129
|
|
|
176
|
-
return new PeriodicWave(
|
|
177
|
-
this.context.createPeriodicWave(real, imag, constraints)
|
|
178
|
-
);
|
|
130
|
+
return new PeriodicWave(this, { real, imag, ...constraints });
|
|
179
131
|
}
|
|
180
132
|
|
|
181
133
|
createAnalyser(): AnalyserNode {
|
|
182
|
-
return new AnalyserNode(this
|
|
134
|
+
return new AnalyserNode(this);
|
|
183
135
|
}
|
|
184
136
|
|
|
185
137
|
createWaveShaper(): WaveShaperNode {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OscillatorType } from '../types';
|
|
1
|
+
import { OscillatorType, TOscillatorOptions } from '../types';
|
|
2
2
|
import { InvalidStateError } from '../errors';
|
|
3
3
|
import AudioScheduledSourceNode from './AudioScheduledSourceNode';
|
|
4
4
|
import BaseAudioContext from './BaseAudioContext';
|
|
@@ -9,7 +9,8 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
|
|
|
9
9
|
readonly frequency: AudioParam;
|
|
10
10
|
readonly detune: AudioParam;
|
|
11
11
|
|
|
12
|
-
constructor(context: BaseAudioContext,
|
|
12
|
+
constructor(context: BaseAudioContext, options?: TOscillatorOptions) {
|
|
13
|
+
const node = new globalThis.OscillatorNode(context.context, options);
|
|
13
14
|
super(context, node);
|
|
14
15
|
|
|
15
16
|
this.detune = new AudioParam(node.detune, context);
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
+
import BaseAudioContext from './BaseAudioContext';
|
|
2
|
+
import { TPeriodicWaveOptions } from '../types';
|
|
3
|
+
import { generateRealAndImag } from '../core/PeriodicWave';
|
|
4
|
+
|
|
1
5
|
export default class PeriodicWave {
|
|
2
6
|
/** @internal */
|
|
3
7
|
readonly periodicWave: globalThis.PeriodicWave;
|
|
4
8
|
|
|
5
|
-
constructor(
|
|
9
|
+
constructor(context: BaseAudioContext, options?: TPeriodicWaveOptions) {
|
|
10
|
+
const finalOptions = generateRealAndImag(options);
|
|
11
|
+
const periodicWave = context.context.createPeriodicWave(
|
|
12
|
+
finalOptions.real!,
|
|
13
|
+
finalOptions.imag!,
|
|
14
|
+
{ disableNormalization: finalOptions.disableNormalization }
|
|
15
|
+
);
|
|
6
16
|
this.periodicWave = periodicWave;
|
|
7
17
|
}
|
|
8
18
|
}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import BaseAudioContext from './BaseAudioContext';
|
|
2
2
|
import AudioNode from './AudioNode';
|
|
3
3
|
import AudioParam from './AudioParam';
|
|
4
|
+
import { TSteroPannerOptions } from '../types';
|
|
4
5
|
|
|
5
6
|
export default class StereoPannerNode extends AudioNode {
|
|
6
7
|
readonly pan: AudioParam;
|
|
7
8
|
|
|
8
|
-
constructor(
|
|
9
|
+
constructor(
|
|
10
|
+
context: BaseAudioContext,
|
|
11
|
+
stereoPannerOptions?: TSteroPannerOptions
|
|
12
|
+
) {
|
|
13
|
+
const pan = new globalThis.StereoPannerNode(
|
|
14
|
+
context.context,
|
|
15
|
+
stereoPannerOptions
|
|
16
|
+
);
|
|
9
17
|
super(context, pan);
|
|
10
18
|
this.pan = new AudioParam(pan.pan, context);
|
|
11
19
|
}
|