@siteed/audio-studio 3.0.0
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/CHANGELOG.md +535 -0
- package/LICENSE +21 -0
- package/README.md +167 -0
- package/android/build.gradle +143 -0
- package/android/src/androidTest/assets/chorus.wav +0 -0
- package/android/src/androidTest/assets/jfk.wav +0 -0
- package/android/src/androidTest/assets/osr_us_000_0010_8k.wav +0 -0
- package/android/src/androidTest/assets/recorder_hello_world.wav +0 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/AudioProcessorInstrumentedTest.kt +197 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/AudioRecorderInstrumentedTest.kt +541 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/AudioRecorderPerformanceInstrumentedTest.kt +234 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/AudioFocusStrategyIntegrationTest.kt +332 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/BufferDurationIntegrationTest.kt +324 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/CompressedOnlyOutputTest.kt +253 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/DeviceDisconnectionFallbackTest.kt +218 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/EventEmissionIntervalTest.kt +120 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/M4aFormatTest.kt +345 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/OutputControlIntegrationTest.kt +340 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/PcmStreamingDurationTest.kt +252 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/README.md +95 -0
- package/android/src/androidTest/java/net/siteed/audiostudio/integration/run_integration_tests.sh +43 -0
- package/android/src/main/AndroidManifest.xml +30 -0
- package/android/src/main/CMakeLists.txt +29 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioAnalysisData.kt +188 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioDataEncoder.kt +9 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioDeviceManager.kt +1741 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioFeaturesNative.kt +26 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioFileHandler.kt +136 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioFormatUtils.kt +354 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioNotificationsManager.kt +439 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioProcessor.kt +2237 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioRecorderManager.kt +2163 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioRecordingService.kt +167 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioStudioModule.kt +1112 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioTrimmer.kt +1099 -0
- package/android/src/main/java/net/siteed/audiostudio/Constants.kt +37 -0
- package/android/src/main/java/net/siteed/audiostudio/EventSender.kt +7 -0
- package/android/src/main/java/net/siteed/audiostudio/FFT.kt +100 -0
- package/android/src/main/java/net/siteed/audiostudio/Features.kt +98 -0
- package/android/src/main/java/net/siteed/audiostudio/LogUtils.kt +93 -0
- package/android/src/main/java/net/siteed/audiostudio/MelSpectrogramNative.kt +36 -0
- package/android/src/main/java/net/siteed/audiostudio/NotificationConfig.kt +72 -0
- package/android/src/main/java/net/siteed/audiostudio/PermissionUtils.kt +68 -0
- package/android/src/main/java/net/siteed/audiostudio/RecordingActionReceiver.kt +59 -0
- package/android/src/main/java/net/siteed/audiostudio/RecordingConfig.kt +259 -0
- package/android/src/main/java/net/siteed/audiostudio/WaveformConfig.kt +19 -0
- package/android/src/main/java/net/siteed/audiostudio/WaveformRenderer.kt +159 -0
- package/android/src/main/jni/AudioFeaturesJNI.cpp +152 -0
- package/android/src/main/jni/MelSpectrogramJNI.cpp +165 -0
- package/android/src/main/res/drawable/ic_default_action_icon.xml +16 -0
- package/android/src/main/res/drawable/ic_microphone.xml +13 -0
- package/android/src/main/res/drawable/ic_pause.xml +10 -0
- package/android/src/main/res/drawable/ic_play.xml +10 -0
- package/android/src/main/res/drawable/ic_stop.xml +10 -0
- package/android/src/main/res/layout/notification_recording.xml +37 -0
- package/android/src/test/java/net/siteed/audiostudio/AudioFileHandlerTest.kt +279 -0
- package/android/src/test/java/net/siteed/audiostudio/AudioFocusStrategyTest.kt +249 -0
- package/android/src/test/java/net/siteed/audiostudio/AudioFormatTest.kt +151 -0
- package/android/src/test/java/net/siteed/audiostudio/AudioFormatUtilsTest.kt +273 -0
- package/android/src/test/java/net/siteed/audiostudio/DeviceDisconnectionFallbackUnitTest.kt +140 -0
- package/android/src/test/resources/chorus.wav +0 -0
- package/android/src/test/resources/generate_test_audio.py +94 -0
- package/android/src/test/resources/jfk.wav +0 -0
- package/android/src/test/resources/osr_us_000_0010_8k.wav +0 -0
- package/android/src/test/resources/recorder_hello_world.wav +0 -0
- package/app.plugin.js +3 -0
- package/build/cjs/AudioAnalysis/AudioAnalysis.types.js +4 -0
- package/build/cjs/AudioAnalysis/AudioAnalysis.types.js.map +1 -0
- package/build/cjs/AudioAnalysis/audioFeaturesWasm.js +164 -0
- package/build/cjs/AudioAnalysis/audioFeaturesWasm.js.map +1 -0
- package/build/cjs/AudioAnalysis/extractAudioAnalysis.js +213 -0
- package/build/cjs/AudioAnalysis/extractAudioAnalysis.js.map +1 -0
- package/build/cjs/AudioAnalysis/extractAudioData.js +21 -0
- package/build/cjs/AudioAnalysis/extractAudioData.js.map +1 -0
- package/build/cjs/AudioAnalysis/extractMelSpectrogram.js +90 -0
- package/build/cjs/AudioAnalysis/extractMelSpectrogram.js.map +1 -0
- package/build/cjs/AudioAnalysis/extractPreview.js +28 -0
- package/build/cjs/AudioAnalysis/extractPreview.js.map +1 -0
- package/build/cjs/AudioAnalysis/extractWaveform.js +18 -0
- package/build/cjs/AudioAnalysis/extractWaveform.js.map +1 -0
- package/build/cjs/AudioAnalysis/melSpectrogramWasm.js +149 -0
- package/build/cjs/AudioAnalysis/melSpectrogramWasm.js.map +1 -0
- package/build/cjs/AudioDeviceManager.js +688 -0
- package/build/cjs/AudioDeviceManager.js.map +1 -0
- package/build/cjs/AudioRecorder.provider.js +78 -0
- package/build/cjs/AudioRecorder.provider.js.map +1 -0
- package/build/cjs/AudioStudio.native.js +8 -0
- package/build/cjs/AudioStudio.native.js.map +1 -0
- package/build/cjs/AudioStudio.types.js +11 -0
- package/build/cjs/AudioStudio.types.js.map +1 -0
- package/build/cjs/AudioStudio.web.js +708 -0
- package/build/cjs/AudioStudio.web.js.map +1 -0
- package/build/cjs/AudioStudioModule.js +718 -0
- package/build/cjs/AudioStudioModule.js.map +1 -0
- package/build/cjs/WebRecorder.web.js +865 -0
- package/build/cjs/WebRecorder.web.js.map +1 -0
- package/build/cjs/constants/platformLimitations.js +99 -0
- package/build/cjs/constants/platformLimitations.js.map +1 -0
- package/build/cjs/constants.js +20 -0
- package/build/cjs/constants.js.map +1 -0
- package/build/cjs/events.js +29 -0
- package/build/cjs/events.js.map +1 -0
- package/build/cjs/hooks/useAudioDevices.js +179 -0
- package/build/cjs/hooks/useAudioDevices.js.map +1 -0
- package/build/cjs/index.js +64 -0
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/trimAudio.js +76 -0
- package/build/cjs/trimAudio.js.map +1 -0
- package/build/cjs/useAudioRecorder.js +535 -0
- package/build/cjs/useAudioRecorder.js.map +1 -0
- package/build/cjs/utils/BlobFix.js +502 -0
- package/build/cjs/utils/BlobFix.js.map +1 -0
- package/build/cjs/utils/audioProcessing.js +136 -0
- package/build/cjs/utils/audioProcessing.js.map +1 -0
- package/build/cjs/utils/cleanNativeOptions.js +22 -0
- package/build/cjs/utils/cleanNativeOptions.js.map +1 -0
- package/build/cjs/utils/concatenateBuffers.js +25 -0
- package/build/cjs/utils/concatenateBuffers.js.map +1 -0
- package/build/cjs/utils/convertPCMToFloat32.js +124 -0
- package/build/cjs/utils/convertPCMToFloat32.js.map +1 -0
- package/build/cjs/utils/crc32.js +52 -0
- package/build/cjs/utils/crc32.js.map +1 -0
- package/build/cjs/utils/encodingToBitDepth.js +17 -0
- package/build/cjs/utils/encodingToBitDepth.js.map +1 -0
- package/build/cjs/utils/getWavFileInfo.js +96 -0
- package/build/cjs/utils/getWavFileInfo.js.map +1 -0
- package/build/cjs/utils/writeWavHeader.js +88 -0
- package/build/cjs/utils/writeWavHeader.js.map +1 -0
- package/build/cjs/workers/InlineFeaturesExtractor.web.js +294 -0
- package/build/cjs/workers/InlineFeaturesExtractor.web.js.map +1 -0
- package/build/cjs/workers/inlineAudioWebWorker.web.js +190 -0
- package/build/cjs/workers/inlineAudioWebWorker.web.js.map +1 -0
- package/build/cjs/workers/wasmGlueString.web.js +27 -0
- package/build/cjs/workers/wasmGlueString.web.js.map +1 -0
- package/build/esm/AudioAnalysis/AudioAnalysis.types.js +3 -0
- package/build/esm/AudioAnalysis/AudioAnalysis.types.js.map +1 -0
- package/build/esm/AudioAnalysis/audioFeaturesWasm.js +126 -0
- package/build/esm/AudioAnalysis/audioFeaturesWasm.js.map +1 -0
- package/build/esm/AudioAnalysis/extractAudioAnalysis.js +205 -0
- package/build/esm/AudioAnalysis/extractAudioAnalysis.js.map +1 -0
- package/build/esm/AudioAnalysis/extractAudioData.js +14 -0
- package/build/esm/AudioAnalysis/extractAudioData.js.map +1 -0
- package/build/esm/AudioAnalysis/extractMelSpectrogram.js +86 -0
- package/build/esm/AudioAnalysis/extractMelSpectrogram.js.map +1 -0
- package/build/esm/AudioAnalysis/extractPreview.js +25 -0
- package/build/esm/AudioAnalysis/extractPreview.js.map +1 -0
- package/build/esm/AudioAnalysis/extractWaveform.js +11 -0
- package/build/esm/AudioAnalysis/extractWaveform.js.map +1 -0
- package/build/esm/AudioAnalysis/melSpectrogramWasm.js +111 -0
- package/build/esm/AudioAnalysis/melSpectrogramWasm.js.map +1 -0
- package/build/esm/AudioDeviceManager.js +681 -0
- package/build/esm/AudioDeviceManager.js.map +1 -0
- package/build/esm/AudioRecorder.provider.js +40 -0
- package/build/esm/AudioRecorder.provider.js.map +1 -0
- package/build/esm/AudioStudio.native.js +6 -0
- package/build/esm/AudioStudio.native.js.map +1 -0
- package/build/esm/AudioStudio.types.js +8 -0
- package/build/esm/AudioStudio.types.js.map +1 -0
- package/build/esm/AudioStudio.web.js +704 -0
- package/build/esm/AudioStudio.web.js.map +1 -0
- package/build/esm/AudioStudioModule.js +713 -0
- package/build/esm/AudioStudioModule.js.map +1 -0
- package/build/esm/WebRecorder.web.js +861 -0
- package/build/esm/WebRecorder.web.js.map +1 -0
- package/build/esm/constants/platformLimitations.js +90 -0
- package/build/esm/constants/platformLimitations.js.map +1 -0
- package/build/esm/constants.js +17 -0
- package/build/esm/constants.js.map +1 -0
- package/build/esm/events.js +21 -0
- package/build/esm/events.js.map +1 -0
- package/build/esm/hooks/useAudioDevices.js +176 -0
- package/build/esm/hooks/useAudioDevices.js.map +1 -0
- package/build/esm/index.js +23 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/trimAudio.js +69 -0
- package/build/esm/trimAudio.js.map +1 -0
- package/build/esm/useAudioRecorder.js +529 -0
- package/build/esm/useAudioRecorder.js.map +1 -0
- package/build/esm/utils/BlobFix.js +498 -0
- package/build/esm/utils/BlobFix.js.map +1 -0
- package/build/esm/utils/audioProcessing.js +133 -0
- package/build/esm/utils/audioProcessing.js.map +1 -0
- package/build/esm/utils/cleanNativeOptions.js +19 -0
- package/build/esm/utils/cleanNativeOptions.js.map +1 -0
- package/build/esm/utils/concatenateBuffers.js +21 -0
- package/build/esm/utils/concatenateBuffers.js.map +1 -0
- package/build/esm/utils/convertPCMToFloat32.js +120 -0
- package/build/esm/utils/convertPCMToFloat32.js.map +1 -0
- package/build/esm/utils/crc32.js +50 -0
- package/build/esm/utils/crc32.js.map +1 -0
- package/build/esm/utils/encodingToBitDepth.js +13 -0
- package/build/esm/utils/encodingToBitDepth.js.map +1 -0
- package/build/esm/utils/getWavFileInfo.js +92 -0
- package/build/esm/utils/getWavFileInfo.js.map +1 -0
- package/build/esm/utils/writeWavHeader.js +84 -0
- package/build/esm/utils/writeWavHeader.js.map +1 -0
- package/build/esm/workers/InlineFeaturesExtractor.web.js +291 -0
- package/build/esm/workers/InlineFeaturesExtractor.web.js.map +1 -0
- package/build/esm/workers/inlineAudioWebWorker.web.js +187 -0
- package/build/esm/workers/inlineAudioWebWorker.web.js.map +1 -0
- package/build/esm/workers/wasmGlueString.web.js +24 -0
- package/build/esm/workers/wasmGlueString.web.js.map +1 -0
- package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts +198 -0
- package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts.map +1 -0
- package/build/types/AudioAnalysis/audioFeaturesWasm.d.ts +24 -0
- package/build/types/AudioAnalysis/audioFeaturesWasm.d.ts.map +1 -0
- package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts +74 -0
- package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts.map +1 -0
- package/build/types/AudioAnalysis/extractAudioData.d.ts +3 -0
- package/build/types/AudioAnalysis/extractAudioData.d.ts.map +1 -0
- package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts +20 -0
- package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts.map +1 -0
- package/build/types/AudioAnalysis/extractPreview.d.ts +11 -0
- package/build/types/AudioAnalysis/extractPreview.d.ts.map +1 -0
- package/build/types/AudioAnalysis/extractWaveform.d.ts +8 -0
- package/build/types/AudioAnalysis/extractWaveform.d.ts.map +1 -0
- package/build/types/AudioAnalysis/melSpectrogramWasm.d.ts +16 -0
- package/build/types/AudioAnalysis/melSpectrogramWasm.d.ts.map +1 -0
- package/build/types/AudioDeviceManager.d.ts +187 -0
- package/build/types/AudioDeviceManager.d.ts.map +1 -0
- package/build/types/AudioRecorder.provider.d.ts +11 -0
- package/build/types/AudioRecorder.provider.d.ts.map +1 -0
- package/build/types/AudioStudio.native.d.ts +3 -0
- package/build/types/AudioStudio.native.d.ts.map +1 -0
- package/build/types/AudioStudio.types.d.ts +760 -0
- package/build/types/AudioStudio.types.d.ts.map +1 -0
- package/build/types/AudioStudio.web.d.ts +96 -0
- package/build/types/AudioStudio.web.d.ts.map +1 -0
- package/build/types/AudioStudioModule.d.ts +3 -0
- package/build/types/AudioStudioModule.d.ts.map +1 -0
- package/build/types/WebRecorder.web.d.ts +208 -0
- package/build/types/WebRecorder.web.d.ts.map +1 -0
- package/build/types/constants/platformLimitations.d.ts +40 -0
- package/build/types/constants/platformLimitations.d.ts.map +1 -0
- package/build/types/constants.d.ts +14 -0
- package/build/types/constants.d.ts.map +1 -0
- package/build/types/events.d.ts +29 -0
- package/build/types/events.d.ts.map +1 -0
- package/build/types/hooks/useAudioDevices.d.ts +15 -0
- package/build/types/hooks/useAudioDevices.d.ts.map +1 -0
- package/build/types/index.d.ts +21 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/trimAudio.d.ts +25 -0
- package/build/types/trimAudio.d.ts.map +1 -0
- package/build/types/useAudioRecorder.d.ts +22 -0
- package/build/types/useAudioRecorder.d.ts.map +1 -0
- package/build/types/utils/BlobFix.d.ts +9 -0
- package/build/types/utils/BlobFix.d.ts.map +1 -0
- package/build/types/utils/audioProcessing.d.ts +24 -0
- package/build/types/utils/audioProcessing.d.ts.map +1 -0
- package/build/types/utils/cleanNativeOptions.d.ts +15 -0
- package/build/types/utils/cleanNativeOptions.d.ts.map +1 -0
- package/build/types/utils/concatenateBuffers.d.ts +8 -0
- package/build/types/utils/concatenateBuffers.d.ts.map +1 -0
- package/build/types/utils/convertPCMToFloat32.d.ts +13 -0
- package/build/types/utils/convertPCMToFloat32.d.ts.map +1 -0
- package/build/types/utils/crc32.d.ts +7 -0
- package/build/types/utils/crc32.d.ts.map +1 -0
- package/build/types/utils/encodingToBitDepth.d.ts +5 -0
- package/build/types/utils/encodingToBitDepth.d.ts.map +1 -0
- package/build/types/utils/getWavFileInfo.d.ts +26 -0
- package/build/types/utils/getWavFileInfo.d.ts.map +1 -0
- package/build/types/utils/writeWavHeader.d.ts +34 -0
- package/build/types/utils/writeWavHeader.d.ts.map +1 -0
- package/build/types/workers/InlineFeaturesExtractor.web.d.ts +2 -0
- package/build/types/workers/InlineFeaturesExtractor.web.d.ts.map +1 -0
- package/build/types/workers/inlineAudioWebWorker.web.d.ts +2 -0
- package/build/types/workers/inlineAudioWebWorker.web.d.ts.map +1 -0
- package/build/types/workers/wasmGlueString.web.d.ts +2 -0
- package/build/types/workers/wasmGlueString.web.d.ts.map +1 -0
- package/cpp/AudioFeatures.cpp +274 -0
- package/cpp/AudioFeatures.h +85 -0
- package/cpp/AudioFeaturesBridge.cpp +146 -0
- package/cpp/AudioFeaturesBridge.h +47 -0
- package/cpp/MelSpectrogram.cpp +227 -0
- package/cpp/MelSpectrogram.h +82 -0
- package/cpp/MelSpectrogramBridge.cpp +112 -0
- package/cpp/MelSpectrogramBridge.h +33 -0
- package/cpp/kiss_fft/COPYING +11 -0
- package/cpp/kiss_fft/_kiss_fft_guts.h +167 -0
- package/cpp/kiss_fft/kiss_fft.c +424 -0
- package/cpp/kiss_fft/kiss_fft.h +160 -0
- package/cpp/kiss_fft/kiss_fft_log.h +36 -0
- package/cpp/kiss_fft/kiss_fftr.c +155 -0
- package/cpp/kiss_fft/kiss_fftr.h +54 -0
- package/expo-module.config.json +10 -0
- package/ios/AudioAnalysisData.swift +74 -0
- package/ios/AudioDeviceManager.swift +670 -0
- package/ios/AudioFeaturesWrapper.h +21 -0
- package/ios/AudioFeaturesWrapper.mm +63 -0
- package/ios/AudioNotificationManager.swift +154 -0
- package/ios/AudioProcessingHelpers.swift +797 -0
- package/ios/AudioProcessor.swift +1191 -0
- package/ios/AudioStreamError.swift +7 -0
- package/ios/AudioStreamManager.swift +2369 -0
- package/ios/AudioStreamManagerDelegate.swift +16 -0
- package/ios/AudioStudio.podspec +39 -0
- package/ios/AudioStudioModule.swift +1111 -0
- package/ios/AudioStudioTests/AudioFileHandlerTests.swift +338 -0
- package/ios/AudioStudioTests/AudioFormatUtilsTests.swift +331 -0
- package/ios/AudioStudioTests/AudioTestHelpers.swift +130 -0
- package/ios/AudioStudioTests/CompressedOnlyOutputTests.swift +294 -0
- package/ios/AudioStudioTests/EventEmissionIntervalTests.swift +105 -0
- package/ios/AudioStudioTests/Info.plist +22 -0
- package/ios/AudioStudioTests/README.md +39 -0
- package/ios/AudioStudioTests/SimpleAudioTest.swift +98 -0
- package/ios/AudioStudioTests/TestAudioGenerator.swift +75 -0
- package/ios/DataPoint.swift +54 -0
- package/ios/DecodingConfig.swift +59 -0
- package/ios/FFT.swift +62 -0
- package/ios/Features.swift +95 -0
- package/ios/ISSUE_IOS.md +68 -0
- package/ios/Logger.swift +39 -0
- package/ios/MelSpectrogramWrapper.h +30 -0
- package/ios/MelSpectrogramWrapper.mm +97 -0
- package/ios/NotificationExtension.swift +15 -0
- package/ios/RecordingResult.swift +22 -0
- package/ios/RecordingSettings.swift +311 -0
- package/ios/WaveformExtractor.swift +105 -0
- package/ios/tests/README.md +41 -0
- package/ios/tests/integration/buffer_and_fallback_test.swift +178 -0
- package/ios/tests/integration/buffer_duration_test.swift +185 -0
- package/ios/tests/integration/compressed_only_output_test.swift +271 -0
- package/ios/tests/integration/output_control_test.swift +322 -0
- package/ios/tests/integration/run_integration_tests.sh +37 -0
- package/ios/tests/opus_support_test_macos.swift +154 -0
- package/ios/tests/standalone/audio_processing_test.swift +144 -0
- package/ios/tests/standalone/audio_recording_test.swift +277 -0
- package/ios/tests/standalone/audio_streaming_test.swift +249 -0
- package/ios/tests/standalone/standalone_test.swift +144 -0
- package/package.json +146 -0
- package/plugin/build/index.cjs +194 -0
- package/plugin/build/index.d.cts +22 -0
- package/plugin/build/index.js +194 -0
- package/plugin/src/index.ts +285 -0
- package/plugin/tsconfig.json +10 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/prebuilt/wasm/mel-spectrogram.js +18 -0
- package/src/AudioAnalysis/AudioAnalysis.types.ts +226 -0
- package/src/AudioAnalysis/audio-features-wasm.d.ts +37 -0
- package/src/AudioAnalysis/audioFeaturesWasm.ts +200 -0
- package/src/AudioAnalysis/extractAudioAnalysis.ts +350 -0
- package/src/AudioAnalysis/extractAudioData.ts +17 -0
- package/src/AudioAnalysis/extractMelSpectrogram.ts +140 -0
- package/src/AudioAnalysis/extractPreview.ts +34 -0
- package/src/AudioAnalysis/extractWaveform.ts +22 -0
- package/src/AudioAnalysis/mel-spectrogram-wasm.d.ts +48 -0
- package/src/AudioAnalysis/melSpectrogramWasm.ts +179 -0
- package/src/AudioDeviceManager.ts +800 -0
- package/src/AudioRecorder.provider.tsx +57 -0
- package/src/AudioStudio.native.ts +6 -0
- package/src/AudioStudio.types.ts +899 -0
- package/src/AudioStudio.web.ts +911 -0
- package/src/AudioStudioModule.ts +984 -0
- package/src/WebRecorder.web.ts +1114 -0
- package/src/constants/platformLimitations.ts +118 -0
- package/src/constants.ts +21 -0
- package/src/events.ts +63 -0
- package/src/hooks/useAudioDevices.ts +213 -0
- package/src/index.ts +67 -0
- package/src/trimAudio.ts +94 -0
- package/src/types/crc-32.d.ts +9 -0
- package/src/useAudioRecorder.tsx +784 -0
- package/src/utils/BlobFix.ts +561 -0
- package/src/utils/audioProcessing.ts +205 -0
- package/src/utils/cleanNativeOptions.ts +18 -0
- package/src/utils/concatenateBuffers.ts +24 -0
- package/src/utils/convertPCMToFloat32.ts +170 -0
- package/src/utils/crc32.ts +59 -0
- package/src/utils/encodingToBitDepth.ts +18 -0
- package/src/utils/getWavFileInfo.ts +132 -0
- package/src/utils/writeWavHeader.ts +115 -0
- package/src/workers/InlineFeaturesExtractor.web.tsx +291 -0
- package/src/workers/inlineAudioWebWorker.web.tsx +186 -0
- package/src/workers/wasmGlueString.web.ts +23 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioStudio.types.d.ts","sourceRoot":"","sources":["../../src/AudioStudio.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { LegacyEventEmitter } from 'expo-modules-core';
|
|
2
|
+
import { AudioAnalysis } from './AudioAnalysis/AudioAnalysis.types';
|
|
3
|
+
import { AudioRecording, AudioStreamStatus, BitDepth, ConsoleLike, RecordingConfig, StartRecordingResult } from './AudioStudio.types';
|
|
4
|
+
import { WebRecorder } from './WebRecorder.web';
|
|
5
|
+
export interface AudioStreamEvent {
|
|
6
|
+
type: string;
|
|
7
|
+
device?: string;
|
|
8
|
+
timestamp: Date;
|
|
9
|
+
}
|
|
10
|
+
export interface AudioStudioOptions {
|
|
11
|
+
logger?: ConsoleLike;
|
|
12
|
+
eventCallback?: (event: AudioStreamEvent) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface EmitAudioEventProps {
|
|
15
|
+
data: Float32Array;
|
|
16
|
+
position: number;
|
|
17
|
+
compression?: {
|
|
18
|
+
data: Blob;
|
|
19
|
+
size: number;
|
|
20
|
+
totalSize: number;
|
|
21
|
+
mimeType: string;
|
|
22
|
+
format: string;
|
|
23
|
+
bitrate: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export type EmitAudioEventFunction = (_: EmitAudioEventProps) => void;
|
|
27
|
+
export type EmitAudioAnalysisFunction = (_: AudioAnalysis) => void;
|
|
28
|
+
export interface AudioStudioWebProps {
|
|
29
|
+
logger?: ConsoleLike;
|
|
30
|
+
audioWorkletUrl: string;
|
|
31
|
+
featuresExtratorUrl: string;
|
|
32
|
+
maxBufferSize?: number;
|
|
33
|
+
}
|
|
34
|
+
export declare class AudioStudioWeb extends LegacyEventEmitter {
|
|
35
|
+
customRecorder: WebRecorder | null;
|
|
36
|
+
audioChunks: Float32Array[];
|
|
37
|
+
isRecording: boolean;
|
|
38
|
+
isPaused: boolean;
|
|
39
|
+
recordingStartTime: number;
|
|
40
|
+
pausedTime: number;
|
|
41
|
+
currentDurationMs: number;
|
|
42
|
+
currentSize: number;
|
|
43
|
+
currentInterval: number;
|
|
44
|
+
currentIntervalAnalysis: number;
|
|
45
|
+
lastEmittedSize: number;
|
|
46
|
+
lastEmittedTime: number;
|
|
47
|
+
lastEmittedCompressionSize: number;
|
|
48
|
+
lastEmittedAnalysisTime: number;
|
|
49
|
+
streamUuid: string | null;
|
|
50
|
+
extension: 'webm' | 'wav';
|
|
51
|
+
recordingConfig?: RecordingConfig;
|
|
52
|
+
bitDepth: BitDepth;
|
|
53
|
+
audioWorkletUrl: string;
|
|
54
|
+
featuresExtratorUrl: string;
|
|
55
|
+
logger?: ConsoleLike;
|
|
56
|
+
latestPosition: number;
|
|
57
|
+
totalCompressedSize: number;
|
|
58
|
+
private readonly maxBufferSize;
|
|
59
|
+
private eventCallback?;
|
|
60
|
+
constructor({ audioWorkletUrl, featuresExtratorUrl, logger, maxBufferSize, }: AudioStudioWebProps);
|
|
61
|
+
getMediaStream(): Promise<MediaStream>;
|
|
62
|
+
prepareRecording(recordingConfig?: RecordingConfig): Promise<boolean>;
|
|
63
|
+
startRecording(recordingConfig?: RecordingConfig): Promise<StartRecordingResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Centralized handler for recording interruptions
|
|
66
|
+
*/
|
|
67
|
+
private handleRecordingInterruption;
|
|
68
|
+
/**
|
|
69
|
+
* Handler for audio events from the WebRecorder
|
|
70
|
+
*/
|
|
71
|
+
private customRecorderEventCallback;
|
|
72
|
+
/**
|
|
73
|
+
* Handler for audio analysis events from the WebRecorder
|
|
74
|
+
*/
|
|
75
|
+
private customRecorderAnalysisCallback;
|
|
76
|
+
private getRecordingDuration;
|
|
77
|
+
emitAudioEvent({ data, position, compression }: EmitAudioEventProps): void;
|
|
78
|
+
stopRecording(): Promise<AudioRecording>;
|
|
79
|
+
pauseRecording(): Promise<void>;
|
|
80
|
+
resumeRecording(): Promise<void>;
|
|
81
|
+
status(): AudioStreamStatus;
|
|
82
|
+
/**
|
|
83
|
+
* Handles device fallback when the current device is disconnected
|
|
84
|
+
*/
|
|
85
|
+
private handleDeviceFallback;
|
|
86
|
+
/**
|
|
87
|
+
* Attempts to get a fallback audio device
|
|
88
|
+
*/
|
|
89
|
+
private getFallbackDevice;
|
|
90
|
+
/**
|
|
91
|
+
* Gets user media with specific device ID
|
|
92
|
+
*/
|
|
93
|
+
private requestPermissionsAndGetUserMedia;
|
|
94
|
+
init(options?: AudioStudioOptions): Promise<void>;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=AudioStudio.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioStudio.web.d.ts","sourceRoot":"","sources":["../../src/AudioStudio.web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioStudioModule.d.ts","sourceRoot":"","sources":["../../src/AudioStudioModule.ts"],"names":[],"mappings":"AAgBA,QAAA,IAAI,iBAAiB,EAAE,GAAG,CAAA;AAu8B1B,eAAe,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { AudioAnalysis } from './AudioAnalysis/AudioAnalysis.types';
|
|
2
|
+
import { ConsoleLike, RecordingConfig } from './AudioStudio.types';
|
|
3
|
+
import { EmitAudioAnalysisFunction, EmitAudioEventFunction } from './AudioStudio.web';
|
|
4
|
+
interface AudioFeaturesEvent {
|
|
5
|
+
data: {
|
|
6
|
+
command: string;
|
|
7
|
+
result: AudioAnalysis;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare class WebRecorder {
|
|
11
|
+
audioContext: AudioContext;
|
|
12
|
+
private audioWorkletNode;
|
|
13
|
+
private featureExtractorWorker?;
|
|
14
|
+
private featureExtractorWorkerUrl?;
|
|
15
|
+
private source;
|
|
16
|
+
private emitAudioEventCallback;
|
|
17
|
+
private emitAudioAnalysisCallback;
|
|
18
|
+
private config;
|
|
19
|
+
private position;
|
|
20
|
+
private numberOfChannels;
|
|
21
|
+
private bitDepth;
|
|
22
|
+
private exportBitDepth;
|
|
23
|
+
private audioAnalysisData;
|
|
24
|
+
private readonly logger?;
|
|
25
|
+
private compressedMediaRecorder;
|
|
26
|
+
private compressedChunks;
|
|
27
|
+
private compressedSize;
|
|
28
|
+
private pendingCompressedChunk;
|
|
29
|
+
private dataPointIdCounter;
|
|
30
|
+
private deviceDisconnectionHandler;
|
|
31
|
+
private readonly mediaStream;
|
|
32
|
+
private readonly onInterruptionCallback?;
|
|
33
|
+
private _isDeviceDisconnected;
|
|
34
|
+
private pcmData;
|
|
35
|
+
private totalSampleCount;
|
|
36
|
+
private melWasmReady;
|
|
37
|
+
private melWasmInitPromise;
|
|
38
|
+
private melPendingChunks;
|
|
39
|
+
private pendingMelFrames;
|
|
40
|
+
/**
|
|
41
|
+
* Flag to indicate whether this is the first audio chunk after a device switch
|
|
42
|
+
* Used to maintain proper duration counting
|
|
43
|
+
*/
|
|
44
|
+
isFirstChunkAfterSwitch: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Gets whether the recording device has been disconnected
|
|
47
|
+
*/
|
|
48
|
+
get isDeviceDisconnected(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Initializes a new WebRecorder instance for audio recording and processing
|
|
51
|
+
* @param audioContext - The AudioContext to use for recording
|
|
52
|
+
* @param source - The MediaStreamAudioSourceNode providing the audio input
|
|
53
|
+
* @param recordingConfig - Configuration options for the recording
|
|
54
|
+
* @param emitAudioEventCallback - Callback function for audio data events
|
|
55
|
+
* @param emitAudioAnalysisCallback - Callback function for audio analysis events
|
|
56
|
+
* @param onInterruption - Callback for recording interruptions
|
|
57
|
+
* @param logger - Optional logger for debugging information
|
|
58
|
+
*/
|
|
59
|
+
constructor({ audioContext, source, recordingConfig, emitAudioEventCallback, emitAudioAnalysisCallback, onInterruption, logger, }: {
|
|
60
|
+
audioContext: AudioContext;
|
|
61
|
+
source: MediaStreamAudioSourceNode;
|
|
62
|
+
recordingConfig: RecordingConfig;
|
|
63
|
+
emitAudioEventCallback: EmitAudioEventFunction;
|
|
64
|
+
emitAudioAnalysisCallback: EmitAudioAnalysisFunction;
|
|
65
|
+
onInterruption?: (event: {
|
|
66
|
+
reason: string;
|
|
67
|
+
isPaused: boolean;
|
|
68
|
+
timestamp: number;
|
|
69
|
+
}) => void;
|
|
70
|
+
logger?: ConsoleLike;
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Initializes the audio worklet using an inline script
|
|
74
|
+
* Creates and connects the audio processing pipeline
|
|
75
|
+
*/
|
|
76
|
+
init(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Append new PCM data to the existing buffer
|
|
79
|
+
* @param newData New Float32Array data to append
|
|
80
|
+
*/
|
|
81
|
+
private appendPcmData;
|
|
82
|
+
/**
|
|
83
|
+
* Initializes the feature extractor worker for audio analysis
|
|
84
|
+
* Creates an inline worker from a blob for audio feature extraction
|
|
85
|
+
*/
|
|
86
|
+
initFeatureExtractorWorker(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Processes audio analysis results from the feature extractor worker
|
|
89
|
+
* Updates the audio analysis data and emits events
|
|
90
|
+
* @param event - The event containing audio analysis results
|
|
91
|
+
*/
|
|
92
|
+
handleFeatureExtractorMessage(event: AudioFeaturesEvent): void;
|
|
93
|
+
/**
|
|
94
|
+
* Compute mel spectrogram frames via WASM C++ for each segment in the chunk.
|
|
95
|
+
* Frames are queued in pendingMelFrames and attached to datapoints in handleFeatureExtractorMessage.
|
|
96
|
+
*/
|
|
97
|
+
private computeMelFrames;
|
|
98
|
+
/**
|
|
99
|
+
* Filters out data points with duplicate IDs
|
|
100
|
+
*/
|
|
101
|
+
private filterUniqueDataPoints;
|
|
102
|
+
/**
|
|
103
|
+
* Updates the counter based on the highest ID in datapoints
|
|
104
|
+
*/
|
|
105
|
+
private updateDataPointCounter;
|
|
106
|
+
/**
|
|
107
|
+
* Updates audio analysis data with segment results
|
|
108
|
+
*/
|
|
109
|
+
private updateAudioAnalysisData;
|
|
110
|
+
/**
|
|
111
|
+
* Merges value ranges
|
|
112
|
+
*/
|
|
113
|
+
private mergeRange;
|
|
114
|
+
/**
|
|
115
|
+
* Reset the data point counter to a specific value or zero
|
|
116
|
+
* @param startCounterFrom Optional value to start the counter from (for continuing from previous recordings)
|
|
117
|
+
*/
|
|
118
|
+
resetDataPointCounter(startCounterFrom?: number): void;
|
|
119
|
+
/**
|
|
120
|
+
* Get the current data point counter value
|
|
121
|
+
* @returns The current value of the data point counter
|
|
122
|
+
*/
|
|
123
|
+
getDataPointCounter(): number;
|
|
124
|
+
/**
|
|
125
|
+
* Prepares the recorder for continuity after device switch
|
|
126
|
+
* Sets up all necessary state to maintain proper recording continuity
|
|
127
|
+
*/
|
|
128
|
+
prepareForDeviceSwitch(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Starts the audio recording process
|
|
131
|
+
* Connects the audio nodes and begins capturing audio data
|
|
132
|
+
* @param preserveCounters If true, do not reset the counter (used for device switching)
|
|
133
|
+
*/
|
|
134
|
+
start(preserveCounters?: boolean): void;
|
|
135
|
+
/**
|
|
136
|
+
* Creates a WAV file from the stored PCM data
|
|
137
|
+
*/
|
|
138
|
+
private createWavFromPcmData;
|
|
139
|
+
/**
|
|
140
|
+
* Stops the audio recording process and returns the recorded data
|
|
141
|
+
* @returns Promise resolving to an object containing compressed and/or uncompressed blobs
|
|
142
|
+
*/
|
|
143
|
+
stop(): Promise<{
|
|
144
|
+
compressedBlob?: Blob;
|
|
145
|
+
uncompressedBlob?: Blob;
|
|
146
|
+
}>;
|
|
147
|
+
/**
|
|
148
|
+
* Cleans up resources when recording is stopped
|
|
149
|
+
* Closes audio context and disconnects nodes
|
|
150
|
+
*/
|
|
151
|
+
cleanup(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Pauses the audio recording process
|
|
154
|
+
* Disconnects audio nodes and pauses the media recorder
|
|
155
|
+
*/
|
|
156
|
+
pause(): void;
|
|
157
|
+
/**
|
|
158
|
+
* Stops all media stream tracks to release hardware resources
|
|
159
|
+
* Ensures recording indicators (like microphone icon) are turned off
|
|
160
|
+
*/
|
|
161
|
+
stopMediaStreamTracks(): void;
|
|
162
|
+
/**
|
|
163
|
+
* Determines the audio format capabilities of the current audio context
|
|
164
|
+
* @param sampleRate - The sample rate to check
|
|
165
|
+
* @returns Object containing format information (sample rate, bit depth, channels)
|
|
166
|
+
*/
|
|
167
|
+
private checkAudioContextFormat;
|
|
168
|
+
/**
|
|
169
|
+
* Resumes a paused recording
|
|
170
|
+
* Reconnects audio nodes and resumes the media recorder
|
|
171
|
+
*/
|
|
172
|
+
resume(): void;
|
|
173
|
+
/**
|
|
174
|
+
* Initializes the compressed media recorder if compression is enabled
|
|
175
|
+
* Sets up event handlers for compressed audio data
|
|
176
|
+
*/
|
|
177
|
+
private initializeCompressedRecorder;
|
|
178
|
+
/**
|
|
179
|
+
* Processes features if enabled
|
|
180
|
+
*/
|
|
181
|
+
processFeatures(chunk: Float32Array, sampleRate: number, chunkPosition: number, startPosition: number, endPosition: number, samples: number): void;
|
|
182
|
+
/**
|
|
183
|
+
* Sets up detection for device disconnection events
|
|
184
|
+
*/
|
|
185
|
+
private setupDeviceDisconnectionDetection;
|
|
186
|
+
/**
|
|
187
|
+
* Explicitly set the position for continuous recording across device switches
|
|
188
|
+
* @param position The position in seconds to continue from
|
|
189
|
+
*/
|
|
190
|
+
setPosition(position: number): void;
|
|
191
|
+
/**
|
|
192
|
+
* Get the current position in seconds
|
|
193
|
+
* @returns The current position
|
|
194
|
+
*/
|
|
195
|
+
getPosition(): number;
|
|
196
|
+
/**
|
|
197
|
+
* Gets the current compressed chunks
|
|
198
|
+
* @returns Array of current compressed audio chunks
|
|
199
|
+
*/
|
|
200
|
+
getCompressedChunks(): Blob[];
|
|
201
|
+
/**
|
|
202
|
+
* Sets the compressed chunks from a previous recorder
|
|
203
|
+
* @param chunks Array of compressed chunks from a previous recorder
|
|
204
|
+
*/
|
|
205
|
+
setCompressedChunks(chunks: Blob[]): void;
|
|
206
|
+
}
|
|
207
|
+
export {};
|
|
208
|
+
//# sourceMappingURL=WebRecorder.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebRecorder.web.d.ts","sourceRoot":"","sources":["../../src/WebRecorder.web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-specific audio recording limitations and capabilities
|
|
3
|
+
*/
|
|
4
|
+
import { EncodingType, BitDepth } from '../AudioStudio.types';
|
|
5
|
+
export interface PlatformCapabilities {
|
|
6
|
+
supportedEncodings: EncodingType[];
|
|
7
|
+
supportedBitDepths: BitDepth[];
|
|
8
|
+
notes: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare const PLATFORM_CAPABILITIES: Record<string, PlatformCapabilities>;
|
|
11
|
+
/**
|
|
12
|
+
* Get the current platform's audio capabilities
|
|
13
|
+
*/
|
|
14
|
+
export declare function getPlatformCapabilities(): PlatformCapabilities;
|
|
15
|
+
/**
|
|
16
|
+
* Check if a specific encoding is supported on the current platform
|
|
17
|
+
*/
|
|
18
|
+
export declare function isEncodingSupported(encoding: EncodingType): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a specific bit depth is supported on the current platform
|
|
21
|
+
*/
|
|
22
|
+
export declare function isBitDepthSupported(bitDepth: BitDepth): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Get a fallback encoding if the requested one is not supported
|
|
25
|
+
*/
|
|
26
|
+
export declare function getFallbackEncoding(requestedEncoding: EncodingType): EncodingType;
|
|
27
|
+
/**
|
|
28
|
+
* Get a fallback bit depth if the requested one is not supported
|
|
29
|
+
*/
|
|
30
|
+
export declare function getFallbackBitDepth(requestedBitDepth: BitDepth): BitDepth;
|
|
31
|
+
/**
|
|
32
|
+
* Validate and adjust recording configuration based on platform limitations
|
|
33
|
+
*/
|
|
34
|
+
export declare function validateRecordingConfig(config: {
|
|
35
|
+
encoding?: EncodingType;
|
|
36
|
+
}): {
|
|
37
|
+
encoding: EncodingType;
|
|
38
|
+
warnings: string[];
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=platformLimitations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformLimitations.d.ts","sourceRoot":"","sources":["../../../src/constants/platformLimitations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE7D,MAAM,WAAW,oBAAoB;IACjC,kBAAkB,EAAE,YAAY,EAAE,CAAA;IAClC,kBAAkB,EAAE,QAAQ,EAAE,CAAA;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAsBtE,CAAA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAGnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAG/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,iBAAiB,EAAE,YAAY,GAChC,YAAY,CAOd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,QAAQ,GAAG,QAAQ,CAOzE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG;IAC1E,QAAQ,EAAE,YAAY,CAAA;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACrB,CAwBA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BitDepth, SampleRate } from './AudioStudio.types';
|
|
2
|
+
export declare const isWeb: boolean;
|
|
3
|
+
export declare const DEBUG_NAMESPACE = "audio-studio";
|
|
4
|
+
export declare const RIFF_HEADER = 1380533830;
|
|
5
|
+
export declare const WAVE_HEADER = 1463899717;
|
|
6
|
+
export declare const FMT_CHUNK_ID = 1718449184;
|
|
7
|
+
export declare const DATA_CHUNK_ID = 1684108385;
|
|
8
|
+
export declare const INFO_CHUNK_ID = 1229866575;
|
|
9
|
+
export declare const DEFAULT_SAMPLE_RATE: SampleRate;
|
|
10
|
+
export declare const DEFAULT_BIT_DEPTH: BitDepth;
|
|
11
|
+
export declare const DEFAULT_INTERVAL_MS = 1000;
|
|
12
|
+
export declare const DEFAULT_ANALYSIS_INTERVAL_MS = 500;
|
|
13
|
+
export declare const DEFAULT_MAX_BUFFER_SIZE = 100;
|
|
14
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE1D,eAAO,MAAM,KAAK,SAAwB,CAAA;AAC1C,eAAO,MAAM,eAAe,iBAAiB,CAAA;AAG7C,eAAO,MAAM,WAAW,aAAa,CAAA;AACrC,eAAO,MAAM,WAAW,aAAa,CAAA;AACrC,eAAO,MAAM,YAAY,aAAa,CAAA;AACtC,eAAO,MAAM,aAAa,aAAa,CAAA;AACvC,eAAO,MAAM,aAAa,aAAa,CAAA;AAGvC,eAAO,MAAM,mBAAmB,EAAE,UAAkB,CAAA;AACpD,eAAO,MAAM,iBAAiB,EAAE,QAAa,CAAA;AAC7C,eAAO,MAAM,mBAAmB,OAAO,CAAA;AACvC,eAAO,MAAM,4BAA4B,MAAM,CAAA;AAC/C,eAAO,MAAM,uBAAuB,MAAM,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type EventSubscription } from 'expo-modules-core';
|
|
2
|
+
import { AudioAnalysis } from './AudioAnalysis/AudioAnalysis.types';
|
|
3
|
+
import { RecordingInterruptionEvent } from './AudioStudio.types';
|
|
4
|
+
export interface AudioEventPayload {
|
|
5
|
+
encoded?: string;
|
|
6
|
+
/** Float32 samples in [-1, 1] — sent by native when streamFormat='float32'.
|
|
7
|
+
* Android new arch delivers Float32Array; iOS delivers number[]. */
|
|
8
|
+
pcmFloat32?: Float32Array | number[];
|
|
9
|
+
buffer?: Float32Array;
|
|
10
|
+
fileUri: string;
|
|
11
|
+
lastEmittedSize: number;
|
|
12
|
+
position: number;
|
|
13
|
+
deltaSize: number;
|
|
14
|
+
totalSize: number;
|
|
15
|
+
mimeType: string;
|
|
16
|
+
streamUuid: string;
|
|
17
|
+
compression?: {
|
|
18
|
+
data?: string | Blob;
|
|
19
|
+
position: number;
|
|
20
|
+
eventDataSize: number;
|
|
21
|
+
totalSize: number;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare function addAudioEventListener(listener: (event: AudioEventPayload) => Promise<void>): EventSubscription;
|
|
25
|
+
export interface AudioAnalysisEvent extends AudioAnalysis {
|
|
26
|
+
}
|
|
27
|
+
export declare function addAudioAnalysisListener(listener: (event: AudioAnalysisEvent) => Promise<void>): EventSubscription;
|
|
28
|
+
export declare function addRecordingInterruptionListener(listener: (event: RecordingInterruptionEvent) => void): EventSubscription;
|
|
29
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAMhE,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;yEACqE;IACrE,UAAU,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAAA;IACpC,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,QAAQ,EAAE,MAAM,CAAA;QAChB,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;KACpB,CAAA;CACJ;AAED,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GACtD,iBAAiB,CAEnB;AAGD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;CAAG;AAE5D,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GACvD,iBAAiB,CAEnB;AAED,wBAAgB,gCAAgC,CAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,GACtD,iBAAiB,CAanB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AudioDevice } from '../AudioStudio.types';
|
|
2
|
+
/**
|
|
3
|
+
* React hook for managing audio input devices
|
|
4
|
+
*/
|
|
5
|
+
export declare function useAudioDevices(): {
|
|
6
|
+
devices: AudioDevice[];
|
|
7
|
+
currentDevice: AudioDevice | null;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
error: Error | null;
|
|
10
|
+
selectDevice: (deviceId: string) => Promise<boolean>;
|
|
11
|
+
resetToDefaultDevice: () => Promise<boolean>;
|
|
12
|
+
refreshDevices: () => Promise<AudioDevice[]>;
|
|
13
|
+
initializeDeviceDetection: () => void;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useAudioDevices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioDevices.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAudioDevices.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD;;GAEG;AACH,wBAAgB,eAAe;;;;;6BA2FN,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;gCAmCK,OAAO,CAAC,OAAO,CAAC;0BAgCtB,OAAO,CAAC,WAAW,EAAE,CAAC;;EA8CtE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { extractRawWavAnalysis, extractAudioAnalysis } from './AudioAnalysis/extractAudioAnalysis';
|
|
2
|
+
import { extractAudioData } from './AudioAnalysis/extractAudioData';
|
|
3
|
+
import { extractMelSpectrogram, MAX_DURATION_MS } from './AudioAnalysis/extractMelSpectrogram';
|
|
4
|
+
import { extractPreview } from './AudioAnalysis/extractPreview';
|
|
5
|
+
import { initMelStreamingWasm, computeMelFrameWasm } from './AudioAnalysis/melSpectrogramWasm';
|
|
6
|
+
import { AudioRecorderProvider, useSharedAudioRecorder } from './AudioRecorder.provider';
|
|
7
|
+
import AudioStudioModule from './AudioStudioModule';
|
|
8
|
+
import { trimAudio } from './trimAudio';
|
|
9
|
+
import { useAudioRecorder } from './useAudioRecorder';
|
|
10
|
+
export * from './utils/convertPCMToFloat32';
|
|
11
|
+
export * from './utils/getWavFileInfo';
|
|
12
|
+
export * from './utils/writeWavHeader';
|
|
13
|
+
export { getPlatformCapabilities, isEncodingSupported, isBitDepthSupported, getFallbackEncoding, getFallbackBitDepth, validateRecordingConfig, type PlatformCapabilities, } from './constants/platformLimitations';
|
|
14
|
+
export { AudioDeviceManager, audioDeviceManager } from './AudioDeviceManager';
|
|
15
|
+
export { useAudioDevices } from './hooks/useAudioDevices';
|
|
16
|
+
export { AudioRecorderProvider, AudioStudioModule, extractRawWavAnalysis, extractAudioAnalysis, extractPreview, trimAudio, extractAudioData, extractMelSpectrogram, initMelStreamingWasm, computeMelFrameWasm, MAX_DURATION_MS, useAudioRecorder, useSharedAudioRecorder, };
|
|
17
|
+
export type * from './AudioAnalysis/AudioAnalysis.types';
|
|
18
|
+
export type * from './AudioStudio.types';
|
|
19
|
+
/** @deprecated Use AudioStudioModule instead */
|
|
20
|
+
export declare const ExpoAudioStreamModule: any;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,qBAAqB,EACrB,oBAAoB,EACvB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EACH,qBAAqB,EACrB,eAAe,EAClB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAGtC,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,oBAAoB,GAC5B,MAAM,iCAAiC,CAAA;AAGxC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,EACH,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,GACzB,CAAA;AAGD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,qBAAqB,CAAA;AAExC,gDAAgD;AAChD,eAAO,MAAM,qBAAqB,KAAoB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TrimAudioOptions, TrimAudioResult, TrimProgressEvent } from './AudioStudio.types';
|
|
2
|
+
/**
|
|
3
|
+
* Trims an audio file based on the provided options.
|
|
4
|
+
*
|
|
5
|
+
* @experimental This API is experimental and not fully optimized for production use.
|
|
6
|
+
* Performance may vary based on file size and device capabilities.
|
|
7
|
+
* Future versions may include breaking changes.
|
|
8
|
+
*
|
|
9
|
+
* @param options Configuration options for the trimming operation
|
|
10
|
+
* @param progressCallback Optional callback to receive progress updates
|
|
11
|
+
* @returns Promise resolving to the trimmed audio file information, including processing time
|
|
12
|
+
*/
|
|
13
|
+
export declare function trimAudio(options: TrimAudioOptions, progressCallback?: (event: TrimProgressEvent) => void): Promise<TrimAudioResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Simplified version of trimAudio that returns only the URI of the trimmed file.
|
|
16
|
+
*
|
|
17
|
+
* @experimental This API is experimental and not fully optimized for production use.
|
|
18
|
+
* Performance may vary based on file size and device capabilities.
|
|
19
|
+
* Future versions may include breaking changes.
|
|
20
|
+
*
|
|
21
|
+
* @param options Configuration options for the trimming operation
|
|
22
|
+
* @returns Promise resolving to the URI of the trimmed audio file
|
|
23
|
+
*/
|
|
24
|
+
export declare function trimAudioSimple(options: TrimAudioOptions): Promise<string>;
|
|
25
|
+
//# sourceMappingURL=trimAudio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trimAudio.d.ts","sourceRoot":"","sources":["../../src/trimAudio.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACpB,MAAM,qBAAqB,CAAA;AAO5B;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAC3B,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GACtD,OAAO,CAAC,eAAe,CAAC,CAiD1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACjC,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AudioAnalysis } from './AudioAnalysis/AudioAnalysis.types';
|
|
2
|
+
import { AudioRecording, CompressionInfo, ConsoleLike, RecordingConfig, StartRecordingResult } from './AudioStudio.types';
|
|
3
|
+
export interface UseAudioRecorderProps {
|
|
4
|
+
logger?: ConsoleLike;
|
|
5
|
+
audioWorkletUrl?: string;
|
|
6
|
+
featuresExtratorUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface UseAudioRecorderState {
|
|
9
|
+
prepareRecording: (_: RecordingConfig) => Promise<void>;
|
|
10
|
+
startRecording: (_: RecordingConfig) => Promise<StartRecordingResult>;
|
|
11
|
+
stopRecording: () => Promise<AudioRecording>;
|
|
12
|
+
pauseRecording: () => Promise<void>;
|
|
13
|
+
resumeRecording: () => Promise<void>;
|
|
14
|
+
isRecording: boolean;
|
|
15
|
+
isPaused: boolean;
|
|
16
|
+
durationMs: number;
|
|
17
|
+
size: number;
|
|
18
|
+
compression?: CompressionInfo;
|
|
19
|
+
analysisData?: AudioAnalysis;
|
|
20
|
+
}
|
|
21
|
+
export declare function useAudioRecorder({ logger, audioWorkletUrl, featuresExtratorUrl, }?: UseAudioRecorderProps): UseAudioRecorderState;
|
|
22
|
+
//# sourceMappingURL=useAudioRecorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioRecorder.d.ts","sourceRoot":"","sources":["../../src/useAudioRecorder.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEnE,OAAO,EAEH,cAAc,EAEd,eAAe,EACf,WAAW,EACX,eAAe,EACf,oBAAoB,EACvB,MAAM,qBAAqB,CAAA;AAW5B,MAAM,WAAW,qBAAqB;IAClC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,qBAAqB;IAClC,gBAAgB,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,cAAc,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACrE,aAAa,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAA;IAC5C,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,YAAY,CAAC,EAAE,aAAa,CAAA;CAC/B;AAmHD,wBAAgB,gBAAgB,CAAC,EAC7B,MAAM,EACN,eAAe,EACf,mBAAmB,GACtB,GAAE,qBAA0B,GAAG,qBAAqB,CA6mBpD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixes duration on MediaRecorder output.
|
|
3
|
+
* @param blob Input Blob with incorrect duration.
|
|
4
|
+
* @param duration Correct duration (in milliseconds).
|
|
5
|
+
* @param type Output blob mimetype (default: video/webm).
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const webmFixDuration: (blob: Blob, duration: number, type?: string) => Promise<Blob>;
|
|
9
|
+
//# sourceMappingURL=BlobFix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlobFix.d.ts","sourceRoot":"","sources":["../../../src/utils/BlobFix.ts"],"names":[],"mappings":"AAygBA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GACxB,MAAM,IAAI,EACV,UAAU,MAAM,EAChB,aAAmB,KACpB,OAAO,CAAC,IAAI,CA4Bd,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ConsoleLike } from '../AudioStudio.types';
|
|
2
|
+
export interface ProcessAudioBufferOptions {
|
|
3
|
+
arrayBuffer?: ArrayBuffer;
|
|
4
|
+
fileUri?: string;
|
|
5
|
+
targetSampleRate: number;
|
|
6
|
+
targetChannels: number;
|
|
7
|
+
normalizeAudio: boolean;
|
|
8
|
+
startTimeMs?: number;
|
|
9
|
+
endTimeMs?: number;
|
|
10
|
+
position?: number;
|
|
11
|
+
length?: number;
|
|
12
|
+
audioContext?: AudioContext;
|
|
13
|
+
logger?: ConsoleLike;
|
|
14
|
+
}
|
|
15
|
+
export interface ProcessedAudioData {
|
|
16
|
+
channelData: Float32Array;
|
|
17
|
+
samples: number;
|
|
18
|
+
durationMs: number;
|
|
19
|
+
sampleRate: number;
|
|
20
|
+
channels: number;
|
|
21
|
+
buffer: AudioBuffer;
|
|
22
|
+
}
|
|
23
|
+
export declare function processAudioBuffer({ arrayBuffer, fileUri, targetSampleRate, targetChannels, normalizeAudio, startTimeMs, endTimeMs, position, length, audioContext, logger, }: ProcessAudioBufferOptions): Promise<ProcessedAudioData>;
|
|
24
|
+
//# sourceMappingURL=audioProcessing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/audioProcessing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,WAAW,yBAAyB;IACtC,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,YAAY,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,WAAW,CAAA;CACtB;AAED,wBAAsB,kBAAkB,CAAC,EACrC,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,WAAW,EACX,SAAS,EACT,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,MAAM,GACT,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoKzD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strips non-serializable values (functions, ArrayBuffer, undefined) from
|
|
3
|
+
* option objects before passing them to Expo native modules.
|
|
4
|
+
*
|
|
5
|
+
* Android's Kotlin bridge crashes with "Cannot convert '[object Object]' to a
|
|
6
|
+
* Kotlin type" when it receives non-plain values such as `logger`, `ArrayBuffer`,
|
|
7
|
+
* or `undefined` fields. The JSON round-trip removes all of these safely.
|
|
8
|
+
*
|
|
9
|
+
* Only use this for small config objects (never for large audio buffers).
|
|
10
|
+
*
|
|
11
|
+
* NOTE: structuredClone() is intentionally NOT used here — it preserves
|
|
12
|
+
* undefined values and non-JSON types, which is exactly what we need to strip.
|
|
13
|
+
*/
|
|
14
|
+
export declare function cleanNativeOptions<T>(options: T): T;
|
|
15
|
+
//# sourceMappingURL=cleanNativeOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanNativeOptions.d.ts","sourceRoot":"","sources":["../../../src/utils/cleanNativeOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAInD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Concatenates an array of ArrayBuffers into a single ArrayBuffer.
|
|
3
|
+
*
|
|
4
|
+
* @param buffers - An array of ArrayBuffers to be concatenated.
|
|
5
|
+
* @returns A single ArrayBuffer containing the concatenated data.
|
|
6
|
+
*/
|
|
7
|
+
export declare const concatenateBuffers: (buffers: ArrayBuffer[]) => ArrayBuffer;
|
|
8
|
+
//# sourceMappingURL=concatenateBuffers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concatenateBuffers.d.ts","sourceRoot":"","sources":["../../../src/utils/concatenateBuffers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,WAAW,EAAE,KAAG,WAiB3D,CAAA"}
|