react-native-audio-api 0.10.0-nightly-e16d7ff-20251030 → 0.11.0-alpha.1
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/RNAudioAPI.podspec +11 -16
- package/android/build.gradle +3 -33
- package/android/src/main/cpp/audioapi/CMakeLists.txt +0 -6
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +0 -5
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +0 -1
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +142 -28
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +40 -13
- package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +2 -4
- package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +9 -9
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidFileWriterBackend.h +37 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +187 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +57 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +0 -6
- package/android/src/main/cpp/audioapi/android/core/utils/FileUtils.h +34 -0
- package/android/src/main/cpp/audioapi/android/core/utils/FileUtilts.cpp +133 -0
- package/android/src/main/cpp/audioapi/android/core/utils/MiniaudioImplementation.cpp +3 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegAudioFileOptions.cpp +154 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegAudioFileOptions.h +41 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.cpp +429 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.h +113 -0
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.cpp +47 -0
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.h +28 -0
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.cpp +269 -0
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +47 -0
- package/android/src/main/cpp/audioapi/android/system/NativeFileInfo.hpp +31 -0
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +3 -29
- package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +9 -21
- package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +6 -27
- package/android/src/main/java/com/swmansion/audioapi/system/MediaNotificationManager.kt +0 -11
- package/android/src/main/java/com/swmansion/audioapi/system/NativeFileInfo.kt +18 -0
- package/android/src/main/jniLibs/arm64-v8a/libavcodec.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libavformat.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libavutil.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libswresample.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libavcodec.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libavformat.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libavutil.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libswresample.so +0 -0
- package/android/src/main/jniLibs/x86/libavcodec.so +0 -0
- package/android/src/main/jniLibs/x86/libavformat.so +0 -0
- package/android/src/main/jniLibs/x86/libavutil.so +0 -0
- package/android/src/main/jniLibs/x86/libswresample.so +0 -0
- package/android/src/main/jniLibs/x86_64/libavcodec.so +0 -0
- package/android/src/main/jniLibs/x86_64/libavformat.so +0 -0
- package/android/src/main/jniLibs/x86_64/libavutil.so +0 -0
- package/android/src/main/jniLibs/x86_64/libswresample.so +0 -0
- package/common/cpp/audioapi/AudioAPIModuleInstaller.h +2 -30
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +0 -18
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +0 -1
- package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +1 -1
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +97 -18
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +18 -6
- package/common/cpp/audioapi/core/AudioNode.h +2 -3
- package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +0 -10
- package/common/cpp/audioapi/core/BaseAudioContext.h +0 -2
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +32 -69
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +1 -37
- package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +36 -82
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +52 -31
- package/common/cpp/audioapi/core/sources/StreamerNode.cpp +58 -59
- package/common/cpp/audioapi/core/sources/StreamerNode.h +8 -37
- package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +0 -5
- package/common/cpp/audioapi/core/utils/Constants.h +1 -2
- package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +10 -0
- package/common/cpp/audioapi/dsp/AudioUtils.cpp +1 -1
- package/common/cpp/audioapi/dsp/FFT.cpp +26 -0
- package/common/cpp/audioapi/dsp/FFT.h +2 -26
- package/common/cpp/audioapi/external/arm64-v8a/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libogg.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libopus.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libssl.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libogg.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libopus.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libssl.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avcodec.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_desc.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_id.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_par.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avformat.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avutil.h +2 -2
- package/common/cpp/audioapi/external/iphoneos/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libogg.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libopus.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libssl.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libogg.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libopus.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libssl.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/Info.plist +44 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/libavcodec +0 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/Info.plist +44 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/libavformat +0 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/Info.plist +44 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/libavutil +0 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/Info.plist +44 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/libswresample +0 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
- package/common/cpp/audioapi/external/x86/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/x86/libogg.a +0 -0
- package/common/cpp/audioapi/external/x86/libopus.a +0 -0
- package/common/cpp/audioapi/external/x86/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/x86/libssl.a +0 -0
- package/common/cpp/audioapi/external/x86/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/x86/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/x86/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libogg.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libopus.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libssl.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +3 -2
- package/common/cpp/audioapi/libs/ffmpeg/INSTRUCTIONS.md +32 -0
- package/common/cpp/audioapi/libs/ffmpeg/create_xcframework.sh +111 -0
- package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +391 -0
- package/common/cpp/audioapi/utils/AudioBus.cpp +0 -28
- package/common/cpp/audioapi/utils/AudioBus.h +0 -3
- package/common/cpp/audioapi/utils/ThreadPool.hpp +1 -59
- package/common/cpp/test/CMakeLists.txt +14 -19
- package/ios/audioapi/ios/AudioAPIModule.h +1 -2
- package/ios/audioapi/ios/AudioAPIModule.mm +0 -2
- package/ios/audioapi/ios/core/IOSAudioFileOptions.h +36 -0
- package/ios/audioapi/ios/core/IOSAudioFileOptions.mm +140 -0
- package/ios/audioapi/ios/core/IOSAudioFileWriter.h +51 -0
- package/ios/audioapi/ios/core/IOSAudioFileWriter.mm +223 -0
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +28 -10
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +117 -30
- package/ios/audioapi/ios/core/IOSRecorderCallback.h +57 -0
- package/ios/audioapi/ios/core/IOSRecorderCallback.mm +189 -0
- package/ios/audioapi/ios/core/NativeAudioRecorder.h +4 -9
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +29 -71
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +1 -0
- package/ios/audioapi/ios/system/AudioEngine.mm +3 -3
- package/ios/audioapi/ios/system/AudioSessionManager.mm +0 -9
- package/ios/audioapi/ios/system/LockScreenManager.h +1 -0
- package/ios/audioapi/ios/system/LockScreenManager.mm +19 -6
- package/lib/commonjs/api.js +76 -141
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/api.web.js +0 -8
- package/lib/commonjs/api.web.js.map +1 -1
- package/lib/commonjs/core/AudioContext.js +1 -1
- package/lib/commonjs/core/AudioContext.js.map +1 -1
- package/lib/commonjs/core/AudioRecorder.js +171 -13
- package/lib/commonjs/core/AudioRecorder.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +25 -28
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/commonjs/core/OfflineAudioContext.js +1 -1
- package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
- package/lib/commonjs/types.js +46 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/bitEnums.js +33 -0
- package/lib/commonjs/utils/bitEnums.js.map +1 -0
- package/lib/commonjs/utils/index.js +21 -19
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/web-core/AudioContext.js +0 -12
- package/lib/commonjs/web-core/AudioContext.js.map +1 -1
- package/lib/commonjs/web-core/OfflineAudioContext.js +0 -12
- package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/module/api.js +15 -16
- package/lib/module/api.js.map +1 -1
- package/lib/module/api.web.js +0 -1
- package/lib/module/api.web.js.map +1 -1
- package/lib/module/core/AudioContext.js +2 -2
- package/lib/module/core/AudioContext.js.map +1 -1
- package/lib/module/core/AudioRecorder.js +171 -13
- package/lib/module/core/AudioRecorder.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +26 -29
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/OfflineAudioContext.js +2 -2
- package/lib/module/core/OfflineAudioContext.js.map +1 -1
- package/lib/module/types.js +45 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/bitEnums.js +27 -0
- package/lib/module/utils/bitEnums.js.map +1 -0
- package/lib/module/utils/index.js +2 -15
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/web-core/AudioContext.js +0 -12
- package/lib/module/web-core/AudioContext.js.map +1 -1
- package/lib/module/web-core/OfflineAudioContext.js +0 -12
- package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/typescript/api.d.ts +17 -19
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/api.web.d.ts +0 -1
- package/lib/typescript/api.web.d.ts.map +1 -1
- package/lib/typescript/core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/core/AudioRecorder.d.ts +62 -7
- package/lib/typescript/core/AudioRecorder.d.ts.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +1 -3
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/events/types.d.ts +16 -0
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +42 -9
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +79 -8
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/bitEnums.d.ts +4 -0
- package/lib/typescript/utils/bitEnums.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +2 -5
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioContext.d.ts +0 -3
- package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/BaseAudioContext.d.ts +0 -2
- package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/OfflineAudioContext.d.ts +0 -3
- package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
- package/package.json +4 -7
- package/src/api.ts +18 -45
- package/src/api.web.ts +0 -1
- package/src/core/AudioContext.ts +2 -3
- package/src/core/AudioRecorder.ts +211 -24
- package/src/core/BaseAudioContext.ts +60 -67
- package/src/core/OfflineAudioContext.ts +2 -2
- package/src/events/types.ts +18 -0
- package/src/interfaces.ts +52 -16
- package/src/types.ts +90 -9
- package/src/utils/bitEnums.ts +51 -0
- package/src/utils/index.ts +2 -22
- package/src/web-core/AudioContext.tsx +0 -25
- package/src/web-core/BaseAudioContext.tsx +0 -2
- package/src/web-core/OfflineAudioContext.tsx +0 -25
- package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.cpp +0 -47
- package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.h +0 -20
- package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +0 -210
- package/common/cpp/audioapi/core/effects/ConvolverNode.h +0 -55
- package/common/cpp/audioapi/dsp/Convolver.cpp +0 -213
- package/common/cpp/audioapi/dsp/Convolver.h +0 -45
- package/common/cpp/audioapi/libs/ffmpeg/relinking.md +0 -24
- package/common/cpp/audioapi/utils/AlignedAllocator.hpp +0 -50
- package/common/cpp/test/src/biquad/BiquadFilterChromium.cpp +0 -389
- package/common/cpp/test/src/biquad/BiquadFilterChromium.h +0 -64
- package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +0 -284
- package/common/cpp/test/src/biquad/BiquadFilterTest.h +0 -40
- package/lib/commonjs/core/ConvolverNode.js +0 -37
- package/lib/commonjs/core/ConvolverNode.js.map +0 -1
- package/lib/commonjs/web-core/ConvolverNode.js +0 -40
- package/lib/commonjs/web-core/ConvolverNode.js.map +0 -1
- package/lib/commonjs/web-core/ConvolverNodeOptions.js +0 -6
- package/lib/commonjs/web-core/ConvolverNodeOptions.js.map +0 -1
- package/lib/module/core/ConvolverNode.js +0 -31
- package/lib/module/core/ConvolverNode.js.map +0 -1
- package/lib/module/web-core/ConvolverNode.js +0 -34
- package/lib/module/web-core/ConvolverNode.js.map +0 -1
- package/lib/module/web-core/ConvolverNodeOptions.js +0 -4
- package/lib/module/web-core/ConvolverNodeOptions.js.map +0 -1
- package/lib/typescript/core/ConvolverNode.d.ts +0 -12
- package/lib/typescript/core/ConvolverNode.d.ts.map +0 -1
- package/lib/typescript/web-core/ConvolverNode.d.ts +0 -11
- package/lib/typescript/web-core/ConvolverNode.d.ts.map +0 -1
- package/lib/typescript/web-core/ConvolverNodeOptions.d.ts +0 -6
- package/lib/typescript/web-core/ConvolverNodeOptions.d.ts.map +0 -1
- package/scripts/download-prebuilt-binaries.sh +0 -52
- package/scripts/rnaa_utils.rb +0 -8
- package/scripts/validate-worklets-version.js +0 -28
- package/src/core/ConvolverNode.ts +0 -35
- package/src/web-core/ConvolverNode.tsx +0 -43
- package/src/web-core/ConvolverNodeOptions.tsx +0 -6
|
@@ -1,38 +1,196 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import AudioBuffer from "./AudioBuffer.js";
|
|
4
3
|
import { AudioEventEmitter } from "../events/index.js";
|
|
4
|
+
import { AndroidFormat, BitDepth, FileDirectory, IOSAudioQuality, IOSFormat } from "../types.js";
|
|
5
|
+
import { encodeFlags } from "../utils/index.js";
|
|
6
|
+
import AudioBuffer from "./AudioBuffer.js";
|
|
7
|
+
function withDefaultOptions(inOptions) {
|
|
8
|
+
return {
|
|
9
|
+
directory: FileDirectory.Cache,
|
|
10
|
+
sampleRate: 48000,
|
|
11
|
+
channels: 2,
|
|
12
|
+
bitRate: 128000,
|
|
13
|
+
bitDepth: BitDepth.Bit24,
|
|
14
|
+
...inOptions,
|
|
15
|
+
ios: {
|
|
16
|
+
format: IOSFormat.M4A,
|
|
17
|
+
quality: IOSAudioQuality.High,
|
|
18
|
+
...(inOptions.ios ?? {})
|
|
19
|
+
},
|
|
20
|
+
android: {
|
|
21
|
+
format: AndroidFormat.M4A,
|
|
22
|
+
...(inOptions.android ?? {})
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function parseFileOptions(inOptions) {
|
|
27
|
+
const {
|
|
28
|
+
sampleRate,
|
|
29
|
+
channels,
|
|
30
|
+
bitRate,
|
|
31
|
+
directory,
|
|
32
|
+
bitDepth,
|
|
33
|
+
ios,
|
|
34
|
+
android
|
|
35
|
+
} = withDefaultOptions(inOptions);
|
|
36
|
+
const iosFlags = encodeFlags(ios.format, ios.quality, ios.flacCompressionLevel || 0, directory, bitDepth);
|
|
37
|
+
|
|
38
|
+
// TODO: ensure directory and bitDepth are last in the bitmask
|
|
39
|
+
const androidFlags = encodeFlags(android.format, directory, bitDepth);
|
|
40
|
+
return {
|
|
41
|
+
sampleRate,
|
|
42
|
+
channels,
|
|
43
|
+
bitRate,
|
|
44
|
+
ios: iosFlags,
|
|
45
|
+
android: androidFlags
|
|
46
|
+
};
|
|
47
|
+
}
|
|
5
48
|
export default class AudioRecorder {
|
|
49
|
+
onAudioReadySubscription = null;
|
|
50
|
+
options_ = null;
|
|
51
|
+
isFileOutputEnabled = false;
|
|
6
52
|
audioEventEmitter = new AudioEventEmitter(global.AudioEventEmitter);
|
|
7
|
-
constructor(
|
|
8
|
-
this.recorder = global.createAudioRecorder(
|
|
53
|
+
constructor() {
|
|
54
|
+
this.recorder = global.createAudioRecorder();
|
|
55
|
+
}
|
|
56
|
+
enableFileOutput(options) {
|
|
57
|
+
if (this.recorder.isRecording()) {
|
|
58
|
+
throw new Error('Cannot enable file output while recording is in progress. Please stop the recorder before changing output options.');
|
|
59
|
+
}
|
|
60
|
+
this.options_ = options;
|
|
61
|
+
const parsedOptions = parseFileOptions(options);
|
|
62
|
+
this.recorder.enableFileOutput(parsedOptions);
|
|
63
|
+
this.isFileOutputEnabled = true;
|
|
9
64
|
}
|
|
65
|
+
get options() {
|
|
66
|
+
return this.options_;
|
|
67
|
+
}
|
|
68
|
+
disableFileOutput() {
|
|
69
|
+
this.options_ = null;
|
|
70
|
+
this.recorder.disableFileOutput();
|
|
71
|
+
this.isFileOutputEnabled = false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Starts the audio recording process with configured output options */
|
|
10
75
|
start() {
|
|
11
|
-
this.
|
|
76
|
+
if (!this.isFileOutputEnabled) {
|
|
77
|
+
this.recorder.start();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
return this.recorder.start();
|
|
12
81
|
}
|
|
82
|
+
|
|
83
|
+
/** Stops the audio recording process and releases internal resources */
|
|
13
84
|
stop() {
|
|
14
|
-
this.recorder.stop();
|
|
85
|
+
return this.recorder.stop();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** Pauses the audio recording process without tearing down anything */
|
|
89
|
+
pause() {
|
|
90
|
+
this.recorder.pause();
|
|
15
91
|
}
|
|
92
|
+
|
|
93
|
+
/** Resumes the audio recording process after being paused */
|
|
94
|
+
resume() {
|
|
95
|
+
this.recorder.resume();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Connects a {@link RecorderAdapterNode} to the recorder’s audio graph.
|
|
100
|
+
*
|
|
101
|
+
* Each node can only be connected once. Attempting to connect a node multiple
|
|
102
|
+
* times will throw an error.
|
|
103
|
+
*
|
|
104
|
+
* @param node - The adapter node to connect to the recorder.
|
|
105
|
+
* @throws If the node has already been connected.
|
|
106
|
+
*/
|
|
16
107
|
connect(node) {
|
|
108
|
+
if (this.recorder.isRecording()) {
|
|
109
|
+
throw new Error('Cannot connect adapter node while recording is in progress. Please stop the recorder before connecting new nodes.');
|
|
110
|
+
}
|
|
17
111
|
if (node.wasConnected) {
|
|
18
112
|
throw new Error('RecorderAdapterNode cannot be connected more than once. Refer to the documentation for more details.');
|
|
19
113
|
}
|
|
20
114
|
node.wasConnected = true;
|
|
21
115
|
this.recorder.connect(node.getNode());
|
|
22
116
|
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Disconnects the recorder from all connected adapter nodes.
|
|
120
|
+
*
|
|
121
|
+
* After calling this method, any connected {@link RecorderAdapterNode} will no
|
|
122
|
+
* longer receive audio data until reconnected.
|
|
123
|
+
*/
|
|
23
124
|
disconnect() {
|
|
24
125
|
this.recorder.disconnect();
|
|
25
126
|
}
|
|
26
|
-
|
|
27
|
-
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Registers a callback to receive raw audio data during an active recording
|
|
130
|
+
* session.
|
|
131
|
+
*
|
|
132
|
+
* The callback is periodically invoked with audio buffers that match the
|
|
133
|
+
* preferred configuration provided in `options`. These parameters (sample
|
|
134
|
+
* rate, buffer length, and channel count) guide how audio data is chunked and
|
|
135
|
+
* delivered, though the exact values may vary depending on device
|
|
136
|
+
* capabilities. Values may vary depending on device capabilities.
|
|
137
|
+
*
|
|
138
|
+
* @param options - Preferred configuration for the audio buffers delivered to
|
|
139
|
+
* the callback.
|
|
140
|
+
* @param callback - Function invoked each time a new audio buffer is
|
|
141
|
+
* available. The callback receives an {@link OnAudioReadyEventType} object
|
|
142
|
+
* containing the audio data and associated metadata.
|
|
143
|
+
*/
|
|
144
|
+
onAudioReady(options, callback) {
|
|
145
|
+
if (this.recorder.isRecording()) {
|
|
146
|
+
throw new Error('Cannot set onAudioReady callback while recording is in progress. Please stop the recorder before setting a new callback.');
|
|
147
|
+
}
|
|
148
|
+
if (this.onAudioReadySubscription) {
|
|
149
|
+
this.recorder.clearOnAudioReady();
|
|
150
|
+
this.onAudioReadySubscription.remove();
|
|
151
|
+
this.onAudioReadySubscription = null;
|
|
152
|
+
}
|
|
153
|
+
this.onAudioReadySubscription = this.audioEventEmitter.addAudioEventListener('audioReady', event => {
|
|
154
|
+
const audioBuffer = new AudioBuffer(event.buffer);
|
|
28
155
|
callback({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
when: event.when
|
|
156
|
+
...event,
|
|
157
|
+
buffer: audioBuffer
|
|
32
158
|
});
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
|
|
159
|
+
});
|
|
160
|
+
this.recorder.setOnAudioReady({
|
|
161
|
+
sampleRate: options.sampleRate,
|
|
162
|
+
bufferLength: options.bufferLength,
|
|
163
|
+
channelCount: options.channelCount,
|
|
164
|
+
callbackId: this.onAudioReadySubscription.subscriptionId
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Removes the previously registered audio data callback, if any.
|
|
170
|
+
*
|
|
171
|
+
* This stops further `onAudioReady` events from being delivered during
|
|
172
|
+
* recording. Calling this method is safe even if no callback is currently
|
|
173
|
+
* registered.
|
|
174
|
+
*/
|
|
175
|
+
clearOnAudioReady() {
|
|
176
|
+
if (this.recorder.isRecording()) {
|
|
177
|
+
throw new Error('Cannot clear onAudioReady callback while recording is in progress. Please stop the recorder before clearing the callback.');
|
|
178
|
+
}
|
|
179
|
+
if (!this.onAudioReadySubscription) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
this.recorder.clearOnAudioReady();
|
|
183
|
+
this.onAudioReadySubscription.remove();
|
|
184
|
+
this.onAudioReadySubscription = null;
|
|
185
|
+
}
|
|
186
|
+
isRecording() {
|
|
187
|
+
return this.recorder.isRecording();
|
|
188
|
+
}
|
|
189
|
+
isPaused() {
|
|
190
|
+
return this.recorder.isPaused();
|
|
191
|
+
}
|
|
192
|
+
getCurrentDuration() {
|
|
193
|
+
return this.recorder.getCurrentDuration();
|
|
36
194
|
}
|
|
37
195
|
}
|
|
38
196
|
//# sourceMappingURL=AudioRecorder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AudioBuffer","
|
|
1
|
+
{"version":3,"names":["AudioEventEmitter","AndroidFormat","BitDepth","FileDirectory","IOSAudioQuality","IOSFormat","encodeFlags","AudioBuffer","withDefaultOptions","inOptions","directory","Cache","sampleRate","channels","bitRate","bitDepth","Bit24","ios","format","M4A","quality","High","android","parseFileOptions","iosFlags","flacCompressionLevel","androidFlags","AudioRecorder","onAudioReadySubscription","options_","isFileOutputEnabled","audioEventEmitter","global","constructor","recorder","createAudioRecorder","enableFileOutput","options","isRecording","Error","parsedOptions","disableFileOutput","start","stop","pause","resume","connect","node","wasConnected","getNode","disconnect","onAudioReady","callback","clearOnAudioReady","remove","addAudioEventListener","event","audioBuffer","buffer","setOnAudioReady","bufferLength","channelCount","callbackId","subscriptionId","isPaused","getCurrentDuration"],"sourceRoot":"../../../src","sources":["core/AudioRecorder.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { InvalidAccessError, NotSupportedError } from "../errors/index.js";
|
|
4
|
-
import {
|
|
4
|
+
import { isWorkletsAvailable, workletsModule } from "../utils/index.js";
|
|
5
5
|
import WorkletSourceNode from "./WorkletSourceNode.js";
|
|
6
6
|
import WorkletProcessingNode from "./WorkletProcessingNode.js";
|
|
7
7
|
import AnalyserNode from "./AnalyserNode.js";
|
|
8
8
|
import AudioBuffer from "./AudioBuffer.js";
|
|
9
9
|
import AudioBufferQueueSourceNode from "./AudioBufferQueueSourceNode.js";
|
|
10
|
-
import ConvolverNode from "./ConvolverNode.js";
|
|
11
10
|
import AudioBufferSourceNode from "./AudioBufferSourceNode.js";
|
|
12
11
|
import AudioDestinationNode from "./AudioDestinationNode.js";
|
|
13
12
|
import BiquadFilterNode from "./BiquadFilterNode.js";
|
|
@@ -48,28 +47,37 @@ export default class BaseAudioContext {
|
|
|
48
47
|
if (bufferLength < 1) {
|
|
49
48
|
throw new NotSupportedError(`The buffer length provided (${bufferLength}) can not be less than 1`);
|
|
50
49
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
if (isWorkletsAvailable) {
|
|
51
|
+
const shareableWorklet = workletsModule.makeShareableCloneRecursive((audioBuffers, channelCount) => {
|
|
52
|
+
'worklet';
|
|
54
53
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
const floatAudioData = audioBuffers.map(buffer => new Float32Array(buffer));
|
|
55
|
+
callback(floatAudioData, channelCount);
|
|
56
|
+
});
|
|
57
|
+
return new WorkletNode(this, this.context.createWorkletNode(shareableWorklet, workletRuntime === 'UIRuntime', bufferLength, inputChannelCount));
|
|
58
|
+
}
|
|
59
|
+
/// User does not have worklets as a dependency so he cannot use the worklet API.
|
|
60
|
+
throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
|
|
59
61
|
}
|
|
60
62
|
createWorkletProcessingNode(callback, workletRuntime = 'AudioRuntime') {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
if (isWorkletsAvailable) {
|
|
64
|
+
const shareableWorklet = workletsModule.makeShareableCloneRecursive((inputBuffers, outputBuffers, framesToProcess, currentTime) => {
|
|
65
|
+
'worklet';
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
const inputData = inputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
|
|
68
|
+
const outputData = outputBuffers.map(buffer => new Float32Array(buffer, 0, framesToProcess));
|
|
69
|
+
callback(inputData, outputData, framesToProcess, currentTime);
|
|
70
|
+
});
|
|
71
|
+
return new WorkletProcessingNode(this, this.context.createWorkletProcessingNode(shareableWorklet, workletRuntime === 'UIRuntime'));
|
|
72
|
+
}
|
|
73
|
+
/// User does not have worklets as a dependency so he cannot use the worklet API.
|
|
74
|
+
throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
|
|
70
75
|
}
|
|
71
76
|
createWorkletSourceNode(callback, workletRuntime = 'AudioRuntime') {
|
|
72
|
-
|
|
77
|
+
if (!isWorkletsAvailable) {
|
|
78
|
+
/// User does not have worklets as a dependency so he cannot use the worklet API.
|
|
79
|
+
throw new Error('[RnAudioApi] Worklets are not available, please install react-native-worklets as a dependency. Refer to documentation for more details.');
|
|
80
|
+
}
|
|
73
81
|
const shareableWorklet = workletsModule.makeShareableCloneRecursive((audioBuffers, framesToProcess, currentTime, startOffset) => {
|
|
74
82
|
'worklet';
|
|
75
83
|
|
|
@@ -129,16 +137,5 @@ export default class BaseAudioContext {
|
|
|
129
137
|
createAnalyser() {
|
|
130
138
|
return new AnalyserNode(this, this.context.createAnalyser());
|
|
131
139
|
}
|
|
132
|
-
createConvolver(options) {
|
|
133
|
-
if (options?.buffer) {
|
|
134
|
-
const numberOfChannels = options.buffer.numberOfChannels;
|
|
135
|
-
if (numberOfChannels !== 1 && numberOfChannels !== 2 && numberOfChannels !== 4) {
|
|
136
|
-
throw new NotSupportedError(`The number of channels provided (${numberOfChannels}) in impulse response for ConvolverNode buffer must be 1 or 2 or 4.`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
const buffer = options?.buffer ?? null;
|
|
140
|
-
const disableNormalization = options?.disableNormalization ?? false;
|
|
141
|
-
return new ConvolverNode(this, this.context.createConvolver(buffer?.buffer, disableNormalization));
|
|
142
|
-
}
|
|
143
140
|
}
|
|
144
141
|
//# sourceMappingURL=BaseAudioContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InvalidAccessError","NotSupportedError","
|
|
1
|
+
{"version":3,"names":["InvalidAccessError","NotSupportedError","isWorkletsAvailable","workletsModule","WorkletSourceNode","WorkletProcessingNode","AnalyserNode","AudioBuffer","AudioBufferQueueSourceNode","AudioBufferSourceNode","AudioDestinationNode","BiquadFilterNode","ConstantSourceNode","GainNode","OscillatorNode","PeriodicWave","RecorderAdapterNode","StereoPannerNode","StreamerNode","WorkletNode","decodeAudioData","decodePCMInBase64","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","input","ArrayBuffer","TypeError","base64String","inputSampleRate","inputChannelCount","isInterleaved","createWorkletNode","callback","bufferLength","workletRuntime","shareableWorklet","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","Error","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","createWorkletSourceNode","startOffset","createRecorderAdapter","createOscillator","createStreamer","createConstantSource","createGain","createStereoPanner","createBiquadFilter","createBufferSource","options","pitchCorrection","createBufferQueueSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import BaseAudioContext from "./BaseAudioContext.js";
|
|
4
4
|
import { InvalidStateError, NotSupportedError } from "../errors/index.js";
|
|
5
5
|
import AudioBuffer from "./AudioBuffer.js";
|
|
6
|
-
import {
|
|
6
|
+
import { isWorkletsAvailable, workletsModule } from "../utils/index.js";
|
|
7
7
|
export default class OfflineAudioContext extends BaseAudioContext {
|
|
8
8
|
constructor(arg0, arg1, arg2) {
|
|
9
9
|
let audioRuntime = null;
|
|
10
|
-
if (
|
|
10
|
+
if (isWorkletsAvailable) {
|
|
11
11
|
audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
|
|
12
12
|
}
|
|
13
13
|
if (typeof arg0 === 'object') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BaseAudioContext","InvalidStateError","NotSupportedError","AudioBuffer","
|
|
1
|
+
{"version":3,"names":["BaseAudioContext","InvalidStateError","NotSupportedError","AudioBuffer","isWorkletsAvailable","workletsModule","OfflineAudioContext","constructor","arg0","arg1","arg2","audioRuntime","createWorkletRuntime","numberOfChannels","length","sampleRate","global","createOfflineAudioContext","duration","isSuspended","isRendering","resume","context","suspend","suspendTime","currentTime","startRendering","audioBuffer"],"sourceRoot":"../../../src","sources":["core/OfflineAudioContext.ts"],"mappings":";;AACA,OAAOA,gBAAgB,MAAM,uBAAoB;AAEjD,SAASC,iBAAiB,EAAEC,iBAAiB,QAAQ,oBAAW;AAChE,OAAOC,WAAW,MAAM,kBAAe;AACvC,SAASC,mBAAmB,EAAEC,cAAc,QAAQ,mBAAU;AAE9D,eAAe,MAAMC,mBAAmB,SAASN,gBAAgB,CAAC;EAOhEO,WAAWA,CACTC,IAAyC,EACzCC,IAAa,EACbC,IAAa,EACb;IACA,IAAIC,YAAY,GAAG,IAAI;IACvB,IAAIP,mBAAmB,EAAE;MACvBO,YAAY,GAAGN,cAAc,CAACO,oBAAoB,CAAC,qBAAqB,CAAC;IAC3E;IAEA,IAAI,OAAOJ,IAAI,KAAK,QAAQ,EAAE;MAC5B,MAAM;QAAEK,gBAAgB;QAAEC,MAAM;QAAEC;MAAW,CAAC,GAAGP,IAAI;MACrD,KAAK,CACHQ,MAAM,CAACC,yBAAyB,CAC9BJ,gBAAgB,EAChBC,MAAM,EACNC,UAAU,EACVJ,YACF,CACF,CAAC;MAED,IAAI,CAACO,QAAQ,GAAGJ,MAAM,GAAGC,UAAU;IACrC,CAAC,MAAM,IACL,OAAOP,IAAI,KAAK,QAAQ,IACxB,OAAOC,IAAI,KAAK,QAAQ,IACxB,OAAOC,IAAI,KAAK,QAAQ,EACxB;MACA,KAAK,CAACM,MAAM,CAACC,yBAAyB,CAACT,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,YAAY,CAAC,CAAC;MACvE,IAAI,CAACO,QAAQ,GAAGT,IAAI,GAAGC,IAAI;IAC7B,CAAC,MAAM;MACL,MAAM,IAAIR,iBAAiB,CAAC,+BAA+B,CAAC;IAC9D;IAEA,IAAI,CAACiB,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,WAAW,GAAG,KAAK;EAC1B;EAEA,MAAMC,MAAMA,CAAA,EAAuB;IACjC,IAAI,CAAC,IAAI,CAACD,WAAW,EAAE;MACrB,MAAM,IAAInB,iBAAiB,CACzB,sDACF,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACkB,WAAW,EAAE;MACrB,MAAM,IAAIlB,iBAAiB,CACzB,4DACF,CAAC;IACH;IAEA,IAAI,CAACkB,WAAW,GAAG,KAAK;IAExB,MAAO,IAAI,CAACG,OAAO,CAA0BD,MAAM,CAAC,CAAC;EACvD;EAEA,MAAME,OAAOA,CAACC,WAAmB,EAAsB;IACrD,IAAIA,WAAW,GAAG,CAAC,EAAE;MACnB,MAAM,IAAIvB,iBAAiB,CAAC,2CAA2C,CAAC;IAC1E;IAEA,IAAIuB,WAAW,GAAG,IAAI,CAACF,OAAO,CAACG,WAAW,EAAE;MAC1C,MAAM,IAAIxB,iBAAiB,CACzB,sDAAsDuB,WAAW,EACnE,CAAC;IACH;IAEA,IAAIA,WAAW,GAAG,IAAI,CAACN,QAAQ,EAAE;MAC/B,MAAM,IAAIjB,iBAAiB,CACzB,8DAA8DuB,WAAW,EAC3E,CAAC;IACH;IAEA,IAAI,CAACL,WAAW,GAAG,IAAI;IAEvB,MAAO,IAAI,CAACG,OAAO,CAA0BC,OAAO,CAACC,WAAW,CAAC;EACnE;EAEA,MAAME,cAAcA,CAAA,EAAyB;IAC3C,IAAI,IAAI,CAACN,WAAW,EAAE;MACpB,MAAM,IAAInB,iBAAiB,CAAC,0CAA0C,CAAC;IACzE;IAEA,IAAI,CAACmB,WAAW,GAAG,IAAI;IAEvB,MAAMO,WAAW,GAAG,MAClB,IAAI,CAACL,OAAO,CACZI,cAAc,CAAC,CAAC;IAElB,OAAO,IAAIvB,WAAW,CAACwB,WAAW,CAAC;EACrC;AACF","ignoreList":[]}
|
package/lib/module/types.js
CHANGED
|
@@ -1,4 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export let FileDirectory = /*#__PURE__*/function (FileDirectory) {
|
|
4
|
+
FileDirectory[FileDirectory["Document"] = 1] = "Document";
|
|
5
|
+
FileDirectory[FileDirectory["Cache"] = 2] = "Cache";
|
|
6
|
+
return FileDirectory;
|
|
7
|
+
}({});
|
|
8
|
+
export let IOSFormat = /*#__PURE__*/function (IOSFormat) {
|
|
9
|
+
IOSFormat[IOSFormat["Wav"] = 1] = "Wav";
|
|
10
|
+
IOSFormat[IOSFormat["Caf"] = 2] = "Caf";
|
|
11
|
+
IOSFormat[IOSFormat["M4A"] = 3] = "M4A";
|
|
12
|
+
IOSFormat[IOSFormat["Flac"] = 4] = "Flac";
|
|
13
|
+
return IOSFormat;
|
|
14
|
+
}({});
|
|
15
|
+
export let IOSAudioQuality = /*#__PURE__*/function (IOSAudioQuality) {
|
|
16
|
+
IOSAudioQuality[IOSAudioQuality["Min"] = 1] = "Min";
|
|
17
|
+
IOSAudioQuality[IOSAudioQuality["Low"] = 2] = "Low";
|
|
18
|
+
IOSAudioQuality[IOSAudioQuality["Medium"] = 3] = "Medium";
|
|
19
|
+
IOSAudioQuality[IOSAudioQuality["High"] = 4] = "High";
|
|
20
|
+
IOSAudioQuality[IOSAudioQuality["Max"] = 5] = "Max";
|
|
21
|
+
return IOSAudioQuality;
|
|
22
|
+
}({});
|
|
23
|
+
export let AndroidFormat = /*#__PURE__*/function (AndroidFormat) {
|
|
24
|
+
AndroidFormat[AndroidFormat["Wav"] = 1] = "Wav";
|
|
25
|
+
AndroidFormat[AndroidFormat["Caf"] = 2] = "Caf";
|
|
26
|
+
AndroidFormat[AndroidFormat["M4A"] = 3] = "M4A";
|
|
27
|
+
AndroidFormat[AndroidFormat["Flac"] = 4] = "Flac";
|
|
28
|
+
return AndroidFormat;
|
|
29
|
+
}({});
|
|
30
|
+
export let FlacCompressionLevel = /*#__PURE__*/function (FlacCompressionLevel) {
|
|
31
|
+
FlacCompressionLevel[FlacCompressionLevel["L0"] = 1] = "L0";
|
|
32
|
+
FlacCompressionLevel[FlacCompressionLevel["L1"] = 2] = "L1";
|
|
33
|
+
FlacCompressionLevel[FlacCompressionLevel["L2"] = 3] = "L2";
|
|
34
|
+
FlacCompressionLevel[FlacCompressionLevel["L3"] = 4] = "L3";
|
|
35
|
+
FlacCompressionLevel[FlacCompressionLevel["L4"] = 5] = "L4";
|
|
36
|
+
FlacCompressionLevel[FlacCompressionLevel["L5"] = 6] = "L5";
|
|
37
|
+
FlacCompressionLevel[FlacCompressionLevel["L6"] = 7] = "L6";
|
|
38
|
+
FlacCompressionLevel[FlacCompressionLevel["L7"] = 8] = "L7";
|
|
39
|
+
FlacCompressionLevel[FlacCompressionLevel["L8"] = 9] = "L8";
|
|
40
|
+
return FlacCompressionLevel;
|
|
41
|
+
}({});
|
|
42
|
+
export let BitDepth = /*#__PURE__*/function (BitDepth) {
|
|
43
|
+
BitDepth[BitDepth["Bit16"] = 1] = "Bit16";
|
|
44
|
+
BitDepth[BitDepth["Bit24"] = 2] = "Bit24";
|
|
45
|
+
BitDepth[BitDepth["Bit32"] = 3] = "Bit32";
|
|
46
|
+
return BitDepth;
|
|
47
|
+
}({});
|
|
4
48
|
//# sourceMappingURL=types.js.map
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["FileDirectory","IOSFormat","IOSAudioQuality","AndroidFormat","FlacCompressionLevel","BitDepth"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAwCA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAKzB,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAOrB,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAQ3B,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAOzB,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAYhC,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function setBitValue(output, value, shift, bitWidth = 4) {
|
|
4
|
+
const fieldMask = (1 << bitWidth) - 1;
|
|
5
|
+
if ((value & ~fieldMask) !== 0) {
|
|
6
|
+
throw new Error(`Value ${value} exceeds the maximum for a field with width ${bitWidth} bits.`);
|
|
7
|
+
}
|
|
8
|
+
return output & ~(fieldMask << shift) | (value & fieldMask) << shift;
|
|
9
|
+
}
|
|
10
|
+
function getBitValue(input, shift, bitWidth = 4) {
|
|
11
|
+
const fieldMask = (1 << bitWidth) - 1;
|
|
12
|
+
return input >> shift & fieldMask;
|
|
13
|
+
}
|
|
14
|
+
export function setEnumValue(output, value, shift, bitWidth = 4) {
|
|
15
|
+
return setBitValue(output, value, shift, bitWidth);
|
|
16
|
+
}
|
|
17
|
+
export function getEnumValue(input, _enum, shift, bitWidth = 4) {
|
|
18
|
+
return getBitValue(input, shift, bitWidth);
|
|
19
|
+
}
|
|
20
|
+
export function encodeFlags(...flags) {
|
|
21
|
+
let output = 0;
|
|
22
|
+
for (let i = 0; i < flags.length; i++) {
|
|
23
|
+
output |= setEnumValue(output, flags[i], i * 4);
|
|
24
|
+
}
|
|
25
|
+
return output;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=bitEnums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["setBitValue","output","value","shift","bitWidth","fieldMask","Error","getBitValue","input","setEnumValue","getEnumValue","_enum","encodeFlags","flags","i","length"],"sourceRoot":"../../../src","sources":["utils/bitEnums.ts"],"mappings":";;AAAA,SAASA,WAAWA,CAClBC,MAAc,EACdC,KAAa,EACbC,KAAa,EACbC,QAAQ,GAAG,CAAC,EACJ;EACR,MAAMC,SAAS,GAAG,CAAC,CAAC,IAAID,QAAQ,IAAI,CAAC;EAErC,IAAI,CAACF,KAAK,GAAG,CAACG,SAAS,MAAM,CAAC,EAAE;IAC9B,MAAM,IAAIC,KAAK,CACb,SAASJ,KAAK,+CAA+CE,QAAQ,QACvE,CAAC;EACH;EAEA,OAAQH,MAAM,GAAG,EAAEI,SAAS,IAAIF,KAAK,CAAC,GAAK,CAACD,KAAK,GAAGG,SAAS,KAAKF,KAAM;AAC1E;AAEA,SAASI,WAAWA,CAACC,KAAa,EAAEL,KAAa,EAAEC,QAAQ,GAAG,CAAC,EAAU;EACvE,MAAMC,SAAS,GAAG,CAAC,CAAC,IAAID,QAAQ,IAAI,CAAC;EACrC,OAAQI,KAAK,IAAIL,KAAK,GAAIE,SAAS;AACrC;AAEA,OAAO,SAASI,YAAYA,CAC1BR,MAAc,EACdC,KAAiB,EACjBC,KAAa,EACbC,QAAQ,GAAG,CAAC,EACJ;EACR,OAAOJ,WAAW,CAACC,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,CAAC;AACpD;AAEA,OAAO,SAASM,YAAYA,CAC1BF,KAAa,EACbG,KAAQ,EACRR,KAAa,EACbC,QAAQ,GAAG,CAAC,EACA;EACZ,OAAOG,WAAW,CAACC,KAAK,EAAEL,KAAK,EAAEC,QAAQ,CAAC;AAC5C;AAEA,OAAO,SAASQ,WAAWA,CACzB,GAAGC,KAAwB,EACnB;EACR,IAAIZ,MAAM,GAAG,CAAC;EAEd,KAAK,IAAIa,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;IACrCb,MAAM,IAAIQ,YAAY,CAACR,MAAM,EAAEY,KAAK,CAACC,CAAC,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC;EACjD;EAEA,OAAOb,MAAM;AACf","ignoreList":[]}
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
export * from "./bitEnums.js";
|
|
3
4
|
export function clamp(value, min, max) {
|
|
4
5
|
return Math.min(Math.max(value, min), max);
|
|
5
6
|
}
|
|
6
|
-
let isWorkletsAvailable = false;
|
|
7
|
-
export let isWorkletsVersionSupported = false;
|
|
8
|
-
export let workletsVersion = 'unknown';
|
|
9
|
-
export const supportedWorkletsVersions = ['0.6.0', '0.6.1'];
|
|
7
|
+
export let isWorkletsAvailable = false;
|
|
10
8
|
export let workletsModule;
|
|
11
|
-
export function assertWorkletsEnabled() {
|
|
12
|
-
if (!isWorkletsAvailable) {
|
|
13
|
-
throw new Error('[react-native-audio-api]: Worklets are not available. Please install react-native-worklets to use this feature.');
|
|
14
|
-
} else if (!isWorkletsVersionSupported) {
|
|
15
|
-
throw new Error(`[react-native-audio-api]: Worklets version ${workletsVersion} is not supported.
|
|
16
|
-
Please install react-native-worklets of one of the following versions: [${supportedWorkletsVersions.join(', ')}] to use this feature.`);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
9
|
try {
|
|
20
10
|
workletsModule = require('react-native-worklets');
|
|
21
|
-
const workletsModuleJson = require('react-native-worklets/package.json');
|
|
22
|
-
isWorkletsVersionSupported = supportedWorkletsVersions.includes(workletsModuleJson.version);
|
|
23
11
|
isWorkletsAvailable = true;
|
|
24
|
-
workletsVersion = workletsModuleJson.version;
|
|
25
12
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
26
13
|
} catch (error) {
|
|
27
14
|
isWorkletsAvailable = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clamp","value","min","max","Math","isWorkletsAvailable","
|
|
1
|
+
{"version":3,"names":["clamp","value","min","max","Math","isWorkletsAvailable","workletsModule","require","error"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;AACA,cAAc,eAAY;AAW1B,OAAO,SAASA,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EACrE,OAAOC,IAAI,CAACF,GAAG,CAACE,IAAI,CAACD,GAAG,CAACF,KAAK,EAAEC,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C;AAEA,OAAO,IAAIE,mBAAmB,GAAG,KAAK;AACtC,OAAO,IAAIC,cAAuC;AAElD,IAAI;EACFA,cAAc,GAAGC,OAAO,CAAC,uBAAuB,CAAC;EACjDF,mBAAmB,GAAG,IAAI;EAC1B;AACF,CAAC,CAAC,OAAOG,KAAK,EAAE;EACdH,mBAAmB,GAAG,KAAK;AAC7B","ignoreList":[]}
|
|
@@ -10,7 +10,6 @@ import GainNode from "./GainNode.js";
|
|
|
10
10
|
import OscillatorNode from "./OscillatorNode.js";
|
|
11
11
|
import PeriodicWave from "./PeriodicWave.js";
|
|
12
12
|
import StereoPannerNode from "./StereoPannerNode.js";
|
|
13
|
-
import ConvolverNode from "./ConvolverNode.js";
|
|
14
13
|
import { globalWasmPromise, globalTag } from "./custom/LoadCustomWasm.js";
|
|
15
14
|
import ConstantSourceNode from "./ConstantSourceNode.js";
|
|
16
15
|
export default class AudioContext {
|
|
@@ -45,17 +44,6 @@ export default class AudioContext {
|
|
|
45
44
|
createBiquadFilter() {
|
|
46
45
|
return new BiquadFilterNode(this, this.context.createBiquadFilter());
|
|
47
46
|
}
|
|
48
|
-
createConvolver(options) {
|
|
49
|
-
if (options?.buffer) {
|
|
50
|
-
const numberOfChannels = options.buffer.numberOfChannels;
|
|
51
|
-
if (numberOfChannels !== 1 && numberOfChannels !== 2 && numberOfChannels !== 4) {
|
|
52
|
-
throw new NotSupportedError(`The number of channels provided (${numberOfChannels}) in impulse response for ConvolverNode buffer must be 1 or 2 or 4.`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
const buffer = options?.buffer ?? null;
|
|
56
|
-
const disableNormalization = options?.disableNormalization ?? false;
|
|
57
|
-
return new ConvolverNode(this, this.context.createConvolver(), buffer, disableNormalization);
|
|
58
|
-
}
|
|
59
47
|
async createBufferSource(options) {
|
|
60
48
|
if (!options || !options.pitchCorrection) {
|
|
61
49
|
return new AudioBufferSourceNode(this, this.context.createBufferSource(), false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InvalidAccessError","NotSupportedError","AnalyserNode","AudioDestinationNode","AudioBuffer","AudioBufferSourceNode","BiquadFilterNode","GainNode","OscillatorNode","PeriodicWave","StereoPannerNode","
|
|
1
|
+
{"version":3,"names":["InvalidAccessError","NotSupportedError","AnalyserNode","AudioDestinationNode","AudioBuffer","AudioBufferSourceNode","BiquadFilterNode","GainNode","OscillatorNode","PeriodicWave","StereoPannerNode","globalWasmPromise","globalTag","ConstantSourceNode","AudioContext","constructor","options","_initSuspended","sampleRate","context","window","destination","currentTime","state","createOscillator","createConstantSource","createGain","createStereoPanner","createBiquadFilter","createBufferSource","pitchCorrection","wasmStretch","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","createAnalyser","decodeAudioDataSource","source","arrayBuffer","fetch","then","response","decodeAudioData","close","resume","suspend"],"sourceRoot":"../../../src","sources":["web-core/AudioContext.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,7 +12,6 @@ import PeriodicWave from "./PeriodicWave.js";
|
|
|
12
12
|
import StereoPannerNode from "./StereoPannerNode.js";
|
|
13
13
|
import ConstantSourceNode from "./ConstantSourceNode.js";
|
|
14
14
|
import { globalWasmPromise, globalTag } from "./custom/LoadCustomWasm.js";
|
|
15
|
-
import ConvolverNode from "./ConvolverNode.js";
|
|
16
15
|
export default class OfflineAudioContext {
|
|
17
16
|
constructor(arg0, arg1, arg2) {
|
|
18
17
|
if (typeof arg0 === 'object') {
|
|
@@ -46,17 +45,6 @@ export default class OfflineAudioContext {
|
|
|
46
45
|
createBiquadFilter() {
|
|
47
46
|
return new BiquadFilterNode(this, this.context.createBiquadFilter());
|
|
48
47
|
}
|
|
49
|
-
createConvolver(options) {
|
|
50
|
-
if (options?.buffer) {
|
|
51
|
-
const numberOfChannels = options.buffer.numberOfChannels;
|
|
52
|
-
if (numberOfChannels !== 1 && numberOfChannels !== 2 && numberOfChannels !== 4) {
|
|
53
|
-
throw new NotSupportedError(`The number of channels provided (${numberOfChannels}) in impulse response for ConvolverNode buffer must be 1 or 2 or 4.`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
const buffer = options?.buffer ?? null;
|
|
57
|
-
const disableNormalization = options?.disableNormalization ?? false;
|
|
58
|
-
return new ConvolverNode(this, this.context.createConvolver(), buffer, disableNormalization);
|
|
59
|
-
}
|
|
60
48
|
async createBufferSource(options) {
|
|
61
49
|
if (!options || !options.pitchCorrection) {
|
|
62
50
|
return new AudioBufferSourceNode(this, this.context.createBufferSource(), false);
|