lq-audio-studio 0.0.0-stage → 4.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 +810 -0
- package/LICENSE +21 -0
- package/README.md +268 -2
- package/android/build.gradle +143 -0
- package/android/src/main/AndroidManifest.xml +30 -0
- package/android/src/main/CMakeLists.txt +32 -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 +1666 -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 +442 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioProcessor.kt +2330 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioRecorderManager.kt +3381 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioRecordingService.kt +167 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioSourceResolver.kt +156 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioStreamDecoder.kt +852 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioStudioModule.kt +1404 -0
- package/android/src/main/java/net/siteed/audiostudio/AudioTrimmer.kt +1061 -0
- package/android/src/main/java/net/siteed/audiostudio/Constants.kt +48 -0
- package/android/src/main/java/net/siteed/audiostudio/EventSender.kt +13 -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 +279 -0
- package/android/src/main/java/net/siteed/audiostudio/SafeFilename.kt +33 -0
- package/android/src/main/java/net/siteed/audiostudio/VoiceProcessingEffects.kt +128 -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/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 +19 -0
- package/build/cjs/AudioAnalysis/audioFeaturesWasm.js.map +1 -0
- package/build/cjs/AudioAnalysis/audioFeaturesWasm.web.js +147 -0
- package/build/cjs/AudioAnalysis/audioFeaturesWasm.web.js.map +1 -0
- package/build/cjs/AudioAnalysis/extractAudioAnalysis.js +216 -0
- package/build/cjs/AudioAnalysis/extractAudioAnalysis.js.map +1 -0
- package/build/cjs/AudioAnalysis/extractAudioData.js +163 -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 +105 -0
- package/build/cjs/AudioAnalysis/extractPreview.js.map +1 -0
- package/build/cjs/AudioAnalysis/extractPreviewBars.js +134 -0
- package/build/cjs/AudioAnalysis/extractPreviewBars.js.map +1 -0
- package/build/cjs/AudioAnalysis/melSpectrogramWasm.js +17 -0
- package/build/cjs/AudioAnalysis/melSpectrogramWasm.js.map +1 -0
- package/build/cjs/AudioAnalysis/melSpectrogramWasm.web.js +107 -0
- package/build/cjs/AudioAnalysis/melSpectrogramWasm.web.js.map +1 -0
- package/build/cjs/AudioAnalysis/wasmConfig.js +26 -0
- package/build/cjs/AudioAnalysis/wasmConfig.js.map +1 -0
- package/build/cjs/AudioAnalysis/wasmLoader.web.js +79 -0
- package/build/cjs/AudioAnalysis/wasmLoader.web.js.map +1 -0
- package/build/cjs/AudioDeviceManager.js +689 -0
- package/build/cjs/AudioDeviceManager.js.map +1 -0
- package/build/cjs/AudioRecorder.provider.js +44 -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 +820 -0
- package/build/cjs/AudioStudio.web.js.map +1 -0
- package/build/cjs/AudioStudioModule.js +128 -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/errors/AudioExtractionError.js +127 -0
- package/build/cjs/errors/AudioExtractionError.js.map +1 -0
- package/build/cjs/errors/AudioStreamError.js +161 -0
- package/build/cjs/errors/AudioStreamError.js.map +1 -0
- package/build/cjs/errors/AudioStreamError.test.js +82 -0
- package/build/cjs/errors/AudioStreamError.test.js.map +1 -0
- package/build/cjs/errors/StartRecordingError.js +82 -0
- package/build/cjs/errors/StartRecordingError.js.map +1 -0
- package/build/cjs/errors/StartRecordingError.test.js +73 -0
- package/build/cjs/errors/StartRecordingError.test.js.map +1 -0
- package/build/cjs/events.js +76 -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 +87 -0
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/prebuilt/wasm/mel-spectrogram.js +18 -0
- package/build/cjs/streamAudioData.js +534 -0
- package/build/cjs/streamAudioData.js.map +1 -0
- package/build/cjs/trimAudio.js +303 -0
- package/build/cjs/trimAudio.js.map +1 -0
- package/build/cjs/useAudioRecorder.js +728 -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 +140 -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/encodeCompressedAudio.web.js +65 -0
- package/build/cjs/utils/encodeCompressedAudio.web.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/nativeRecordingOptions.js +13 -0
- package/build/cjs/utils/nativeRecordingOptions.js.map +1 -0
- package/build/cjs/utils/nativeRecordingOptions.test.js +30 -0
- package/build/cjs/utils/nativeRecordingOptions.test.js.map +1 -0
- package/build/cjs/utils/resampleAudioBuffer.web.js +25 -0
- package/build/cjs/utils/resampleAudioBuffer.web.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 +14 -0
- package/build/esm/AudioAnalysis/audioFeaturesWasm.js.map +1 -0
- package/build/esm/AudioAnalysis/audioFeaturesWasm.web.js +142 -0
- package/build/esm/AudioAnalysis/audioFeaturesWasm.web.js.map +1 -0
- package/build/esm/AudioAnalysis/extractAudioAnalysis.js +208 -0
- package/build/esm/AudioAnalysis/extractAudioAnalysis.js.map +1 -0
- package/build/esm/AudioAnalysis/extractAudioData.js +156 -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 +102 -0
- package/build/esm/AudioAnalysis/extractPreview.js.map +1 -0
- package/build/esm/AudioAnalysis/extractPreviewBars.js +128 -0
- package/build/esm/AudioAnalysis/extractPreviewBars.js.map +1 -0
- package/build/esm/AudioAnalysis/melSpectrogramWasm.js +12 -0
- package/build/esm/AudioAnalysis/melSpectrogramWasm.js.map +1 -0
- package/build/esm/AudioAnalysis/melSpectrogramWasm.web.js +102 -0
- package/build/esm/AudioAnalysis/melSpectrogramWasm.web.js.map +1 -0
- package/build/esm/AudioAnalysis/wasmConfig.js +21 -0
- package/build/esm/AudioAnalysis/wasmConfig.js.map +1 -0
- package/build/esm/AudioAnalysis/wasmLoader.web.js +43 -0
- package/build/esm/AudioAnalysis/wasmLoader.web.js.map +1 -0
- package/build/esm/AudioDeviceManager.js +682 -0
- package/build/esm/AudioDeviceManager.js.map +1 -0
- package/build/esm/AudioRecorder.provider.js +39 -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 +816 -0
- package/build/esm/AudioStudio.web.js.map +1 -0
- package/build/esm/AudioStudioModule.js +126 -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/errors/AudioExtractionError.js +122 -0
- package/build/esm/errors/AudioExtractionError.js.map +1 -0
- package/build/esm/errors/AudioStreamError.js +156 -0
- package/build/esm/errors/AudioStreamError.js.map +1 -0
- package/build/esm/errors/AudioStreamError.test.js +80 -0
- package/build/esm/errors/AudioStreamError.test.js.map +1 -0
- package/build/esm/errors/StartRecordingError.js +76 -0
- package/build/esm/errors/StartRecordingError.js.map +1 -0
- package/build/esm/errors/StartRecordingError.test.js +71 -0
- package/build/esm/errors/StartRecordingError.test.js.map +1 -0
- package/build/esm/events.js +66 -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 +31 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/prebuilt/wasm/mel-spectrogram.js +18 -0
- package/build/esm/streamAudioData.js +527 -0
- package/build/esm/streamAudioData.js.map +1 -0
- package/build/esm/trimAudio.js +296 -0
- package/build/esm/trimAudio.js.map +1 -0
- package/build/esm/useAudioRecorder.js +722 -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 +137 -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/encodeCompressedAudio.web.js +62 -0
- package/build/esm/utils/encodeCompressedAudio.web.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/nativeRecordingOptions.js +10 -0
- package/build/esm/utils/nativeRecordingOptions.js.map +1 -0
- package/build/esm/utils/nativeRecordingOptions.test.js +28 -0
- package/build/esm/utils/nativeRecordingOptions.test.js.map +1 -0
- package/build/esm/utils/resampleAudioBuffer.web.js +22 -0
- package/build/esm/utils/resampleAudioBuffer.web.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 +288 -0
- package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts.map +1 -0
- package/build/types/AudioAnalysis/audioFeaturesWasm.d.ts +8 -0
- package/build/types/AudioAnalysis/audioFeaturesWasm.d.ts.map +1 -0
- package/build/types/AudioAnalysis/audioFeaturesWasm.web.d.ts +43 -0
- package/build/types/AudioAnalysis/audioFeaturesWasm.web.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/extractPreviewBars.d.ts +12 -0
- package/build/types/AudioAnalysis/extractPreviewBars.d.ts.map +1 -0
- package/build/types/AudioAnalysis/melSpectrogramWasm.d.ts +4 -0
- package/build/types/AudioAnalysis/melSpectrogramWasm.d.ts.map +1 -0
- package/build/types/AudioAnalysis/melSpectrogramWasm.web.d.ts +16 -0
- package/build/types/AudioAnalysis/melSpectrogramWasm.web.d.ts.map +1 -0
- package/build/types/AudioAnalysis/wasmConfig.d.ts +4 -0
- package/build/types/AudioAnalysis/wasmConfig.d.ts.map +1 -0
- package/build/types/AudioAnalysis/wasmLoader.web.d.ts +3 -0
- package/build/types/AudioAnalysis/wasmLoader.web.d.ts.map +1 -0
- package/build/types/AudioDeviceManager.d.ts +188 -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 +878 -0
- package/build/types/AudioStudio.types.d.ts.map +1 -0
- package/build/types/AudioStudio.web.d.ts +112 -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/errors/AudioExtractionError.d.ts +24 -0
- package/build/types/errors/AudioExtractionError.d.ts.map +1 -0
- package/build/types/errors/AudioStreamError.d.ts +25 -0
- package/build/types/errors/AudioStreamError.d.ts.map +1 -0
- package/build/types/errors/AudioStreamError.test.d.ts +2 -0
- package/build/types/errors/AudioStreamError.test.d.ts.map +1 -0
- package/build/types/errors/StartRecordingError.d.ts +51 -0
- package/build/types/errors/StartRecordingError.d.ts.map +1 -0
- package/build/types/errors/StartRecordingError.test.d.ts +2 -0
- package/build/types/errors/StartRecordingError.test.d.ts.map +1 -0
- package/build/types/events.d.ts +74 -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 +34 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/streamAudioData.d.ts +119 -0
- package/build/types/streamAudioData.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 +25 -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/encodeCompressedAudio.web.d.ts +10 -0
- package/build/types/utils/encodeCompressedAudio.web.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/nativeRecordingOptions.d.ts +28 -0
- package/build/types/utils/nativeRecordingOptions.d.ts.map +1 -0
- package/build/types/utils/nativeRecordingOptions.test.d.ts +2 -0
- package/build/types/utils/nativeRecordingOptions.test.d.ts.map +1 -0
- package/build/types/utils/resampleAudioBuffer.web.d.ts +2 -0
- package/build/types/utils/resampleAudioBuffer.web.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 +821 -0
- package/ios/AudioProcessor.swift +1908 -0
- package/ios/AudioStreamDecoder.swift +614 -0
- package/ios/AudioStreamError.swift +7 -0
- package/ios/AudioStreamManager.swift +2989 -0
- package/ios/AudioStreamManagerDelegate.swift +17 -0
- package/ios/AudioStudio.podspec +39 -0
- package/ios/AudioStudioModule.swift +1549 -0
- package/ios/BridgedNarrowing.swift +153 -0
- package/ios/DataPoint.swift +54 -0
- package/ios/DecodingConfig.swift +59 -0
- package/ios/DeviceDisconnectionBehavior.swift +11 -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/OutputPromotion.swift +52 -0
- package/ios/PrimaryWriteFailurePolicy.swift +81 -0
- package/ios/RecordingResult.swift +86 -0
- package/ios/RecordingSettings.swift +449 -0
- package/ios/SafeFilename.swift +35 -0
- package/ios/TrimFormatResolution.swift +48 -0
- package/ios/WaveformExtractor.swift +105 -0
- package/package.json +165 -5
- package/plugin/build/index.cjs +226 -0
- package/plugin/build/index.d.cts +37 -0
- package/plugin/build/index.js +226 -0
- package/plugin/src/index.test.ts +78 -0
- package/plugin/src/index.ts +367 -0
- package/plugin/tsconfig.json +21 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/prebuilt/wasm/mel-spectrogram.js +18 -0
- package/src/AudioAnalysis/AudioAnalysis.types.ts +320 -0
- package/src/AudioAnalysis/audio-features-wasm.d.ts +37 -0
- package/src/AudioAnalysis/audioFeaturesWasm.ts +34 -0
- package/src/AudioAnalysis/audioFeaturesWasm.web.ts +211 -0
- package/src/AudioAnalysis/extractAudioAnalysis.ts +353 -0
- package/src/AudioAnalysis/extractAudioData.ts +199 -0
- package/src/AudioAnalysis/extractMelSpectrogram.ts +140 -0
- package/src/AudioAnalysis/extractPreview.ts +135 -0
- package/src/AudioAnalysis/extractPreviewBars.ts +193 -0
- package/src/AudioAnalysis/mel-spectrogram-wasm.d.ts +48 -0
- package/src/AudioAnalysis/melSpectrogramWasm.ts +33 -0
- package/src/AudioAnalysis/melSpectrogramWasm.web.ts +169 -0
- package/src/AudioAnalysis/wasmConfig.ts +24 -0
- package/src/AudioAnalysis/wasmLoader.web.ts +53 -0
- package/src/AudioDeviceManager.ts +801 -0
- package/src/AudioRecorder.provider.tsx +57 -0
- package/src/AudioStudio.native.ts +6 -0
- package/src/AudioStudio.types.ts +1040 -0
- package/src/AudioStudio.web.ts +1050 -0
- package/src/AudioStudioModule.ts +141 -0
- package/src/WebRecorder.web.ts +1114 -0
- package/src/constants/platformLimitations.ts +118 -0
- package/src/constants.ts +21 -0
- package/src/errors/AudioExtractionError.ts +167 -0
- package/src/errors/AudioStreamError.test.ts +92 -0
- package/src/errors/AudioStreamError.ts +199 -0
- package/src/errors/StartRecordingError.test.ts +97 -0
- package/src/errors/StartRecordingError.ts +91 -0
- package/src/events.ts +125 -0
- package/src/hooks/useAudioDevices.ts +213 -0
- package/src/index.ts +115 -0
- package/src/streamAudioData.ts +758 -0
- package/src/trimAudio.ts +445 -0
- package/src/types/crc-32.d.ts +9 -0
- package/src/useAudioRecorder.tsx +1037 -0
- package/src/utils/BlobFix.ts +561 -0
- package/src/utils/audioProcessing.ts +216 -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/encodeCompressedAudio.web.ts +78 -0
- package/src/utils/encodingToBitDepth.ts +18 -0
- package/src/utils/getWavFileInfo.ts +132 -0
- package/src/utils/nativeRecordingOptions.test.ts +29 -0
- package/src/utils/nativeRecordingOptions.ts +20 -0
- package/src/utils/resampleAudioBuffer.web.ts +39 -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
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,810 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [4.0.0] - 2026-10-21
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Android `audioSource: 'voiceCommunication'` now opens `VOICE_COMMUNICATION` capture and explicitly attaches every available platform AEC, noise-suppression, and automatic-gain-control effect to the `AudioRecord` session. Each effect is checked and enabled independently, logged with its OEM implementation, released before the recorder, and safely skipped when unsupported or rejected by the device. Effects are reattached when Android rebuilds capture after a route change or interruption.
|
|
13
|
+
|
|
14
|
+
## [4.0.0-beta.0] - 2026-08-24
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Android recording notifications no longer fail to initialize when the host package has no launch Activity. Headless and self-instrumenting hosts now omit the notification content intent while keeping recording actions available, instead of logging update failures throughout the recording.
|
|
19
|
+
- Android device changes now claim their recording session before the transition delay and recheck it before restart. A concurrent stop could previously finish during that delay, leaving a header-only WAV or restarting an `AudioRecord` after the manager had stopped. Pauses now defer restart without double-pausing compressed output, and a failed switch emits one truthful interruption event (#472).
|
|
20
|
+
- iOS `trimAudio` AAC output now honours the requested sample rate. Writing source-format buffers to a target-rate writer mis-timed the output — one second at 44.1kHz came back as 2.0s at 22.05kHz and 0.92s at 48kHz. The AAC path now converts against the writer's resolved format, the same treatment the WAV path received. An explicitly requested bitrate the encoder cannot serve is now an error rather than a silent substitution; only the library's own default gives way. A requested rate the AAC encoder would resolve to something else — 1Hz to 8kHz, 384kHz to 192kHz — is refused rather than returned as success (#451).
|
|
21
|
+
- iOS `trimAudio` preserves the input's bit depth when none is requested, and honours a bitDepth-only request instead of ignoring it via the fast path. An omitted depth previously forced 16-bit during any rate or channel change, contrary to the documented contract (#451).
|
|
22
|
+
|
|
23
|
+
- `trimAudio` and `startRecording` now reject a filename that is not a single path component, on both platforms. Each appended the caller's value to a directory, so `../../../../tmp/pwned` wrote outside it — `File(filesDir, ...)` and `appendingPathComponent` resolve `..` alike. Android trim rejects with `INVALID_OUTPUT_FILENAME`, Android recording with `INVALID_CONFIG`, iOS with an invalid-settings failure (#452).
|
|
24
|
+
- iOS `trimAudio` now rejects an `outputFileName` that is not a single filename. The value is appended to the output directory, so a path could traverse out of it — `../../../../tmp/pwned` resolved to `/var/tmp/pwned.wav` and the trim wrote there (#433).
|
|
25
|
+
- iOS `extractMelSpectrogram` no longer crashes on a large `windowSizeMs`, `hopLengthMs`, `startTimeMs` or `endTimeMs`. Those options are validated as representable, but the value is then multiplied by the file's sample rate, and the product can overflow the type it is narrowed to — `windowSizeMs: 100000000` is 4.41e9 samples at 44.1 kHz, which fits `Int` and traps the `Int32` the native wrapper takes. The conversions now clamp where the sample rate is known, since no bound on the option alone can be correct (#433).
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- `addRecordingErrorListener()` subscribes to errors raised while recording is already running. iOS emitted these all along with no typed way to subscribe, so a failure that does not reject a call — the stalled WAV in #420, for one — was unobservable. Both platforms now emit it: Android declares the event and reports the AudioRecord leaving its initialized state, a read returning an error code, the primary WAV failing to flush, and the recording loop dying (#447).
|
|
30
|
+
- `android.audioSource` controls which `MediaRecorder.AudioSource` Android captures from, so callers can bypass OEM voice processing. Recording was hardcoded to `MIC`, which applies noise suppression, AGC and — on Honor/Huawei and Xiaomi/Redmi devices — an aggressive enhancement pass that degrades speech-to-text and acoustic analysis. Accepts `'mic'` (default, unchanged), `'voiceRecognition'`, `'unprocessed'`, or `'auto'`. This is the Android counterpart to `ios.audioSession.mode: 'measurement'`.
|
|
31
|
+
`'unprocessed'` needs hardware support, and Android treats it as `DEFAULT` where absent — the recorder opens and reports success while processing stays on. Availability is therefore gated on `AudioManager.PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED`, with a construction probe confirming the requested format, falling back to `'mic'`. The source actually used is reported on the start result as `androidAudioSource`, so a fallback is visible instead of silent.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- iOS primary WAV output now recovers from a failed write instead of stopping silently. After an audio interruption the file handle could be left unusable; every later append failed on a background queue and was only logged, so the compressed M4A kept growing while the WAV — often used as a crash-recovery backup — stalled at its interruption-time size with no error (#420). Failed appends now reopen the handle and retry, and if that cannot be done the failure is reported once per recording rather than per dropped buffer.
|
|
36
|
+
- **Breaking for error handling:** iOS `startRecording` and `prepareRecording` no longer reject with the code `"ERROR"` and a fixed message. Callers matching on that code or on the exact string must switch on `error.code` instead; use the exported `startRecordingErrorCode()` helper to narrow it.
|
|
37
|
+
- iOS `startRecording` now rejects with a specific reason instead of the single message "Failed to start recording.". Six distinct failures — an active phone call, a recording already in progress, missing settings, a failed audio tap, preparation failure, and the audio engine refusing to start — previously collapsed into one string. The codes match the ones Android already emits (`ONGOING_CALL`, `ALREADY_RECORDING`, `FILE_CREATION_FAILED`, `START_FAILED`), so callers switch on one vocabulary rather than one per platform. New `startRecordingErrorCode()` helper and `StartRecordingErrorCode` type narrow an unknown rejection.
|
|
38
|
+
|
|
39
|
+
## [3.2.1] - 2026-06-20
|
|
40
|
+
|
|
41
|
+
Stable release of the 3.2.1 beta fixes plus recent release-blocker validation.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- iOS interruption-ended handling now resumes eligible system-paused recordings even when iOS omits interruption options.
|
|
46
|
+
- iOS recording preparation/start now fails when hardware exposes an invalid input format instead of installing a synthetic fallback tap that can silently record no buffers.
|
|
47
|
+
- Android Expo plugin foreground-only configuration removes recording service and receiver manifest entries when `enableBackgroundAudio` is disabled.
|
|
48
|
+
- Max-duration auto-stop uses the normal hook finalization path so `onRecordingStopped(recording, reason)` receives the final recording with retained analysis data.
|
|
49
|
+
|
|
50
|
+
## [3.2.1-beta.3] - 2026-05-31
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
- Android Expo plugin foreground-only configuration now removes the recording
|
|
55
|
+
service and receiver manifest entries when `enableBackgroundAudio` is
|
|
56
|
+
disabled. Regenerate native projects with Expo prebuild or rebuild Android
|
|
57
|
+
after changing this option.
|
|
58
|
+
|
|
59
|
+
## [3.2.1-beta.2] - 2026-05-29
|
|
60
|
+
|
|
61
|
+
Beta release for validating max-duration recording controls after auto-stop result handling fixes.
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
|
|
65
|
+
- Ensured `autoStopOnMaxDuration` uses the same hook finalization path as manual stop so `onRecordingStopped(recording, reason)` receives the final recording with retained analysis data.
|
|
66
|
+
- Preserved immediate `onMaxDurationReached` notifications while exposing `lastRecordingReason` after stop.
|
|
67
|
+
- Avoided passing hook-only recording callbacks/options into native start options.
|
|
68
|
+
|
|
69
|
+
## [3.2.0] - 2026-05-15
|
|
70
|
+
|
|
71
|
+
Stable release of the progressive long-audio decode API introduced in `3.2.0-beta.1`.
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
|
|
75
|
+
- `streamAudioData(options, callbacks)` for cross-platform progressive file decoding without materializing full long recordings in memory.
|
|
76
|
+
- `getAudioDecodeCapabilities()` for platform decode feature discovery.
|
|
77
|
+
- Long-audio validation tooling and playground screen for decode/transcription progress, cancellation, and Moonshine/Sherpa benchmark runs.
|
|
78
|
+
|
|
79
|
+
### Fixed
|
|
80
|
+
|
|
81
|
+
- Improved `streamAudioData` parity across iOS, Android, and web for channel defaults, sample-rate handling, range progress, cancellation, chunk sizing, and long-file memory behavior.
|
|
82
|
+
|
|
83
|
+
## [3.2.0-beta.1] - 2026-05-14
|
|
84
|
+
|
|
85
|
+
Beta release for client validation of the progressive decode API.
|
|
86
|
+
|
|
87
|
+
### Added
|
|
88
|
+
|
|
89
|
+
- `streamAudioData(options, callbacks)` — progressive Float32 file decode for
|
|
90
|
+
long compressed recordings without full-PCM materialization. Supports
|
|
91
|
+
`AbortSignal` cancellation, async `onChunk` back-pressure, target sample
|
|
92
|
+
rate, channel downmix, and stable error codes via the new
|
|
93
|
+
`AudioStreamError` class.
|
|
94
|
+
- `getAudioDecodeCapabilities()` for platform feature discovery.
|
|
95
|
+
- `validate:stream-long` physical-device harness for CDP/ADB JSONL validation
|
|
96
|
+
of long compressed files, including decode-only, full-buffer control,
|
|
97
|
+
Moonshine-feed, configurable Sherpa ONNX online-ASR, and bounded offline
|
|
98
|
+
Sherpa/Qwen3 segment modes, range-limited short-run comparisons, Android
|
|
99
|
+
memory snapshots, cancellation, stall detection, and pass/fail memory budgets.
|
|
100
|
+
- `validate:stream-long` can copy a previously downloaded Sherpa model from
|
|
101
|
+
another debug app sandbox (for example `apps/sherpa-voice`) into the
|
|
102
|
+
playground sandbox via `--stage-sherpa-model-from package:path`, or stage a
|
|
103
|
+
host model directory with `--stage-sherpa-model-host-dir`, making Qwen3
|
|
104
|
+
benchmarking reproducible without re-downloading the ~GB extracted model.
|
|
105
|
+
- Sherpa offline segment validation can release/reinitialize ASR between
|
|
106
|
+
segments (`--sherpa-release-between-segments`, defaulted on for Qwen3) to
|
|
107
|
+
reduce retained native heap during long segmented Qwen3 runs.
|
|
108
|
+
- `summarize:stream-long` converts `validate:stream-long` JSONL logs into
|
|
109
|
+
Markdown/CSV/JSON benchmark tables for comparing decode-only, Moonshine,
|
|
110
|
+
Sherpa online, and Sherpa/Qwen3 segmented runs.
|
|
111
|
+
- Long-fixture Android evidence now includes a full 100-minute Qwen3 offline
|
|
112
|
+
segment run with 30-second segments and ASR release/reinit between segments,
|
|
113
|
+
plus a Moonshine memory-budget failure path that cancels before OOM.
|
|
114
|
+
- The long-fixture validation matrix now covers Opus, MP3, and AAC/M4A Android
|
|
115
|
+
decode, with MP3/AAC short Qwen3 decode/transcribe smokes against the same
|
|
116
|
+
100-minute source recording.
|
|
117
|
+
- Playground `/long-audio-validation` page and agentic recipe for interactive
|
|
118
|
+
long compressed-audio validation with live progress, cancellation, Moonshine
|
|
119
|
+
model id selection, pasted Sherpa `AsrModelConfig` JSON, and a Qwen3-oriented
|
|
120
|
+
offline segment button.
|
|
121
|
+
- iOS: `AVAssetReader`-based decoder with per-`requestId` cancellation.
|
|
122
|
+
- Android: `MediaExtractor` + `MediaCodec` decoder with linear resampling that
|
|
123
|
+
preserves continuity across codec buffer boundaries. Codec output-format
|
|
124
|
+
changes (`INFO_OUTPUT_FORMAT_CHANGED`) now feed the resampler so emitted
|
|
125
|
+
chunk timestamps remain accurate when the codec advertises a different
|
|
126
|
+
source rate than the extractor.
|
|
127
|
+
- Docs: `docs/STREAM_AUDIO_DATA.md`.
|
|
128
|
+
|
|
129
|
+
### Fixed
|
|
130
|
+
|
|
131
|
+
- iOS `extractRawAudioData` no longer traps on non-finite or out-of-range
|
|
132
|
+
decoded samples. Float-to-`Int16`/`Int32` conversion now replaces NaN/Inf
|
|
133
|
+
with `0` and clamps the scaled value into the integer range before
|
|
134
|
+
conversion.
|
|
135
|
+
- Web `streamAudioData` now interleaves multi-channel output and defaults the
|
|
136
|
+
target sample rate to the source rate when `targetSampleRate` is omitted,
|
|
137
|
+
matching iOS/Android. `maxChunkBytes` is clamped to a minimum of one frame
|
|
138
|
+
(`channels * 4` bytes) to avoid the previous infinite-zero-chunk loop when
|
|
139
|
+
callers pass a value below the frame size.
|
|
140
|
+
- Android `streamAudioData` keeps the active pending buffer after growth so
|
|
141
|
+
the remainder shift never drops samples on the next decode iteration, and
|
|
142
|
+
`content://` inputs delete their cache copy after decode/cancel/error
|
|
143
|
+
instead of leaving a per-stream temp file on disk.
|
|
144
|
+
- iOS and Android `OnDestroy` now cancel any in-flight `streamAudioData`
|
|
145
|
+
decoders before module teardown so decoder threads cannot outlive the
|
|
146
|
+
React context and emit events through a destroyed module.
|
|
147
|
+
- iOS and Web `streamAudioData` honor `endTimeMs` when `startTimeMs` is
|
|
148
|
+
omitted, treating the missing start as `0` to match Android and the
|
|
149
|
+
documented range contract.
|
|
150
|
+
- iOS and Android `streamAudioData` report the decoded _range_ duration in
|
|
151
|
+
the progress/complete payloads (previously the full asset duration), so
|
|
152
|
+
`processedMs / durationMs` is accurate for bounded time ranges across all
|
|
153
|
+
three platforms.
|
|
154
|
+
- `streamAudioData` rounds `maxChunkBytes` down to a whole interleaved frame
|
|
155
|
+
(`channels * 4` bytes) on every platform so stereo callers with a tight
|
|
156
|
+
byte cap never split a frame across two chunks.
|
|
157
|
+
- iOS `streamAudioData` no longer pays `O(n)` `Array.removeFirst` cost per
|
|
158
|
+
emitted chunk; the pending buffer uses a head-index cursor with periodic
|
|
159
|
+
compaction.
|
|
160
|
+
- `streamAudioData` chunk timestamps are now absolute (range start + offset)
|
|
161
|
+
on Web to match iOS/Android, and `onProgress.processedMs` is elapsed time
|
|
162
|
+
within the requested range on every platform so the
|
|
163
|
+
`processedMs / durationMs` fraction stays in `[0, 1]` regardless of
|
|
164
|
+
`startTimeMs`.
|
|
165
|
+
- iOS/Android `streamAudioData` event delivery is now gated on the decoder
|
|
166
|
+
still being tracked by the module. Terminal events emitted by a worker
|
|
167
|
+
thread after `OnDestroy` (which clears the map before cancelling) are
|
|
168
|
+
dropped instead of forwarded through a destroyed React context. This also
|
|
169
|
+
survives Expo's `definition()` re-runs because there is no one-way
|
|
170
|
+
shutdown flag.
|
|
171
|
+
- Android `streamAudioData` trims encoder pre-roll: when
|
|
172
|
+
`SEEK_TO_CLOSEST_SYNC` lands before the requested `startTimeMs` (common
|
|
173
|
+
for AAC/MP3 sync-frame containers), source-rate frames whose presentation
|
|
174
|
+
time is before `startTimeMs` are dropped before resampling so the first
|
|
175
|
+
emitted sample lines up with the requested start.
|
|
176
|
+
- Web `streamAudioData` clamps the `onProgress` fraction to `[0, 1]` so
|
|
177
|
+
resample rounding on the tail chunk never reports `> 1`. iOS and Android
|
|
178
|
+
also emit a final `onProgress` after the tail chunk for parity with the
|
|
179
|
+
`complete` payload.
|
|
180
|
+
- iOS `streamAudioData` cancelled `complete` payload now reports the
|
|
181
|
+
requested range duration in `durationMs` (matching Android) instead of
|
|
182
|
+
the elapsed decoded duration; consumers still get the elapsed count via
|
|
183
|
+
`samples` and `chunks`.
|
|
184
|
+
|
|
185
|
+
## [3.1.1] - 2026-05-08
|
|
186
|
+
|
|
187
|
+
### Fixed
|
|
188
|
+
|
|
189
|
+
- Trust Android final decoded PCM metadata for range extraction and trimming, including JS `Number` options bridged as Kotlin `Double`.
|
|
190
|
+
- Keep default Android validation deterministic by replacing physical loopback assertions and gating long recorder benchmarks behind an opt-in flag.
|
|
191
|
+
|
|
192
|
+
### Changed
|
|
193
|
+
|
|
194
|
+
- Document the playground CDP regression-contract workflow and make optional VAD model loading cache-first.
|
|
195
|
+
|
|
196
|
+
## [3.1.0] - 2026-05-01
|
|
197
|
+
|
|
198
|
+
### Changed
|
|
199
|
+
|
|
200
|
+
- fix(audio-studio): preserve pause intent across interruptions (#375) ([2f0f731](https://github.com/deeeed/audiolab/commit/2f0f731e412f45fc81c4fe46bec2abd3f15b4824))
|
|
201
|
+
- fix(android): avoid recorder crashes from stale system callbacks (#374) ([34a9bc0](https://github.com/deeeed/audiolab/commit/34a9bc0c2f7c4e3e569862e8db43710abbde9043))
|
|
202
|
+
- Document when to avoid retaining live analysis history (#373) ([aa617b0](https://github.com/deeeed/audiolab/commit/aa617b048dd790218dda43ec2ed21e0abaf38daf))
|
|
203
|
+
- Let long-running analysis skip full history retention (#372) ([13c230c](https://github.com/deeeed/audiolab/commit/13c230cde655131a3a7c9472d294b2d432f79d50))
|
|
204
|
+
- Keep low-rate iOS AAC recordings from losing compressed output (#371) ([a689eb0](https://github.com/deeeed/audiolab/commit/a689eb03c7436429bd3bf997430f7f7c842b2e57))
|
|
205
|
+
- chore(audio-studio): release @siteed/audio-studio@3.0.5 ([9dff021](https://github.com/deeeed/audiolab/commit/9dff0219993803d29a03946cf81fe2bedb541cab))
|
|
206
|
+
|
|
207
|
+
## [3.0.5] - 2026-04-25
|
|
208
|
+
|
|
209
|
+
### Changed
|
|
210
|
+
|
|
211
|
+
- fix(audio-studio): don't start notification on prepareRecording (Android) (#364) ([5d40d7e](https://github.com/deeeed/audiolab/commit/5d40d7e730f2b74459d319979fd9c112891b10f2))
|
|
212
|
+
- docs: update api references for v3.0.4 ([12421ee](https://github.com/deeeed/audiolab/commit/12421ee6146187888492b957c0eee428fcab3e8b))
|
|
213
|
+
- chore(audio-studio): release @siteed/audio-studio@3.0.4 ([3a5b7da](https://github.com/deeeed/audiolab/commit/3a5b7da8f4289a599d928dce01f262ab97398143))
|
|
214
|
+
|
|
215
|
+
## [3.0.4] - 2026-04-25
|
|
216
|
+
|
|
217
|
+
### Changed
|
|
218
|
+
|
|
219
|
+
- fix(audio-studio): move module ops off main thread + fix iOS stop crash (#363) ([1a07d2d](https://github.com/deeeed/audiolab/commit/1a07d2d9222bfac1083b00d6de992fcb2a3be42d))
|
|
220
|
+
- chore(audio-studio): release @siteed/audio-studio@3.0.3 ([9d4d14e](https://github.com/deeeed/audiolab/commit/9d4d14e8dffd4378a71f2d3dfb5d7140b8248c0f))
|
|
221
|
+
- fix(audio-studio): convert trim ranges from Double to Long on Android (#347) (#360) ([6099e0e](https://github.com/deeeed/audiolab/commit/6099e0e81f3c8d7b1c109b415ad63e924f3f043b))
|
|
222
|
+
- feat(audio-studio): web trimAudio, WASM refactor, new utilities (#344) ([3d4862a](https://github.com/deeeed/audiolab/commit/3d4862a57a5eb2496169d27f758d7628d7d3659a))
|
|
223
|
+
- feat(sherpa-voice): comprehensive logging + fix Android prod model extraction (#342) ([5b20594](https://github.com/deeeed/audiolab/commit/5b20594c729a9deb703cbc2e23c07daa616149ab))
|
|
224
|
+
- fix(audio-studio): remove blocking CDN poll from publish.sh, sync wasmConfig to 3.0.2 ([290409a](https://github.com/deeeed/audiolab/commit/290409aae8d1160e1952a5ee1961ce3864fbb0c8))
|
|
225
|
+
- chore(audio-studio): release @siteed/audio-studio@3.0.2 ([ebd3300](https://github.com/deeeed/audiolab/commit/ebd330098d2756e6d5a555126e2dfc3fb038d155))
|
|
226
|
+
|
|
227
|
+
## [3.0.3] - 2026-04-12
|
|
228
|
+
|
|
229
|
+
### Changed
|
|
230
|
+
|
|
231
|
+
- fix(audio-studio): convert trim ranges from Double to Long on Android (#347) (#360) ([6099e0e](https://github.com/deeeed/audiolab/commit/6099e0e81f3c8d7b1c109b415ad63e924f3f043b))
|
|
232
|
+
- feat(audio-studio): web trimAudio, WASM refactor, new utilities (#344) ([3d4862a](https://github.com/deeeed/audiolab/commit/3d4862a57a5eb2496169d27f758d7628d7d3659a))
|
|
233
|
+
- feat(sherpa-voice): comprehensive logging + fix Android prod model extraction (#342) ([5b20594](https://github.com/deeeed/audiolab/commit/5b20594c729a9deb703cbc2e23c07daa616149ab))
|
|
234
|
+
- fix(audio-studio): remove blocking CDN poll from publish.sh, sync wasmConfig to 3.0.2 ([290409a](https://github.com/deeeed/audiolab/commit/290409aae8d1160e1952a5ee1961ce3864fbb0c8))
|
|
235
|
+
- chore(audio-studio): release @siteed/audio-studio@3.0.2 ([ebd3300](https://github.com/deeeed/audiolab/commit/ebd330098d2756e6d5a555126e2dfc3fb038d155))
|
|
236
|
+
|
|
237
|
+
## [3.0.2] - 2026-03-21
|
|
238
|
+
|
|
239
|
+
### Changed
|
|
240
|
+
|
|
241
|
+
- fix(audio-studio): load WASM via CDN URL instead of broken relative path ([7427f28](https://github.com/deeeed/audiolab/commit/7427f289d273ffad609a4c6b0fb45c5094445dde))
|
|
242
|
+
- chore(audio-studio): disable conventionalCommits in publisher config, rewrite clean CHANGELOG ([4a2bbfa](https://github.com/deeeed/audiolab/commit/4a2bbfa605a56cab06618c0ca1afe6ff8cb19441))
|
|
243
|
+
- chore(audio-studio): release @siteed/audio-studio@3.0.1 ([04fe6f7](https://github.com/deeeed/audiolab/commit/04fe6f706d372e3ced0f83b796923c490bebd64d))
|
|
244
|
+
|
|
245
|
+
## [3.0.1] - 2026-03-21
|
|
246
|
+
|
|
247
|
+
### Fixed
|
|
248
|
+
|
|
249
|
+
- Add `@expo/config-plugins` to `peerDependencies` — fixes Yarn PnP `ambiguous require` error during `expo prebuild` (#341)
|
|
250
|
+
- WASM path resolution in build output — `prebuilt/` is now copied into `build/cjs/` and `build/esm/` so Metro resolves WASM imports correctly after install (#341)
|
|
251
|
+
- Split WASM modules into separate web/native platform files to prevent Metro bundling issues (#338)
|
|
252
|
+
|
|
253
|
+
## [3.0.0] - 2026-03-20
|
|
254
|
+
|
|
255
|
+
### BREAKING CHANGES
|
|
256
|
+
|
|
257
|
+
- Package renamed from `@siteed/expo-audio-studio` to `@siteed/audio-studio`. The old package continues as a backwards-compatible shim.
|
|
258
|
+
- Native module renamed from `ExpoAudioStream` to `AudioStudio`
|
|
259
|
+
|
|
260
|
+
### Added
|
|
261
|
+
|
|
262
|
+
- C++ mel spectrogram streaming with WASM build (#324)
|
|
263
|
+
- `streamFormat: 'float32'` option — native delivers `Float32Array` to `onAudioStream`, eliminating base64 encode/decode overhead (#315)
|
|
264
|
+
|
|
265
|
+
### Fixed
|
|
266
|
+
|
|
267
|
+
- Memory safety, WASM lifecycle, and platform bug fixes (#329)
|
|
268
|
+
- iOS: audio device switching bugs during active recording
|
|
269
|
+
- iOS: `resetToDefaultDevice` correctly resets engine tap when switching back to default input
|
|
270
|
+
- iOS: recovery after failed device switch no longer produces silent audio
|
|
271
|
+
- iOS: `setupNowPlayingInfo` no longer overrides user-configured audio session options
|
|
272
|
+
- iOS: `selectInputDevice` syncs `deviceId` into `recordingSettings` before engine update
|
|
273
|
+
- iOS: phone-call auto-resume respects user-configured `categoryOptions`
|
|
274
|
+
- iOS: `AudioDeviceManager.prepareAudioSession` preserves existing session options
|
|
275
|
+
|
|
276
|
+
### Performance
|
|
277
|
+
|
|
278
|
+
- Optimized mel spectrogram C++ implementation
|
|
279
|
+
|
|
280
|
+
## [2.18.5] - 2026-02-23
|
|
281
|
+
|
|
282
|
+
### Fixed
|
|
283
|
+
|
|
284
|
+
- Android: guard Bluetooth API calls behind permission check on API 31+ (#294)
|
|
285
|
+
- Android: migrate phone state listener to `TelephonyCallback` on API 31+ (#275)
|
|
286
|
+
- Android: reset `startTime` in `startRecording` and validate hardware format (#298, #223)
|
|
287
|
+
- Android: gate foreground service on `enableBackgroundAudio` (#288, #294)
|
|
288
|
+
- Android: sanitize options before native bridge calls to prevent crash
|
|
289
|
+
|
|
290
|
+
## [2.18.4] - 2026-02-16
|
|
291
|
+
|
|
292
|
+
### Added
|
|
293
|
+
|
|
294
|
+
- Expo SDK 54 (React Native 0.81, React 19) support (#305)
|
|
295
|
+
|
|
296
|
+
### Fixed
|
|
297
|
+
|
|
298
|
+
- iOS: include compression data in `onAudioStream` events
|
|
299
|
+
- Android: properly emit final chunk of audio data on stop (#293)
|
|
300
|
+
|
|
301
|
+
## [2.18.1] - 2025-08-02
|
|
302
|
+
|
|
303
|
+
### Added
|
|
304
|
+
|
|
305
|
+
- Improved memory monitoring
|
|
306
|
+
|
|
307
|
+
## [2.18.0] - 2025-08-01
|
|
308
|
+
|
|
309
|
+
### Fixed
|
|
310
|
+
|
|
311
|
+
- Android: optimize buffer size to prevent OOM errors
|
|
312
|
+
- Android: invalid paused duration calculation
|
|
313
|
+
|
|
314
|
+
## [2.17.0] - 2025-07-31
|
|
315
|
+
|
|
316
|
+
### Fixed
|
|
317
|
+
|
|
318
|
+
- Android: fix `OutOfMemoryError` by tracking stream position correctly
|
|
319
|
+
|
|
320
|
+
## [2.16.1] - 2025-07-27
|
|
321
|
+
|
|
322
|
+
### Fixed
|
|
323
|
+
|
|
324
|
+
- Android: audio analysis accumulation showing 0 bytes
|
|
325
|
+
|
|
326
|
+
## [2.16.0] - 2025-07-27
|
|
327
|
+
|
|
328
|
+
### Performance
|
|
329
|
+
|
|
330
|
+
- Android: optimize stop recording performance for long recordings
|
|
331
|
+
|
|
332
|
+
## [2.15.0] - 2025-07-15
|
|
333
|
+
|
|
334
|
+
### Added
|
|
335
|
+
|
|
336
|
+
- Android: `showPauseResumeActions` option to notification config (#282)
|
|
337
|
+
|
|
338
|
+
## [2.14.4] - 2025-07-15
|
|
339
|
+
|
|
340
|
+
### Fixed
|
|
341
|
+
|
|
342
|
+
- Plugin: respect `enableDeviceDetection` configuration for Android permissions
|
|
343
|
+
- Android: add missing `BLUETOOTH_ADMIN` permission for device detection
|
|
344
|
+
|
|
345
|
+
## [2.14.3] - 2025-06-12
|
|
346
|
+
|
|
347
|
+
### Changed
|
|
348
|
+
|
|
349
|
+
- Remove analysis bit depth logging for cleaner debug output
|
|
350
|
+
|
|
351
|
+
## [2.14.2] - 2025-06-11
|
|
352
|
+
|
|
353
|
+
### Added
|
|
354
|
+
|
|
355
|
+
- Platform limitations validation and documentation
|
|
356
|
+
|
|
357
|
+
### Fixed
|
|
358
|
+
|
|
359
|
+
- iOS: update compressed file size when primary output is disabled
|
|
360
|
+
|
|
361
|
+
## [2.14.1] - 2025-06-11
|
|
362
|
+
|
|
363
|
+
### Fixed
|
|
364
|
+
|
|
365
|
+
- Android: fix duration returning 0 when primary output is disabled (#244)
|
|
366
|
+
|
|
367
|
+
## [2.14.0] - 2025-06-11
|
|
368
|
+
|
|
369
|
+
### Performance
|
|
370
|
+
|
|
371
|
+
- Comprehensive cross-platform stop recording performance optimization
|
|
372
|
+
|
|
373
|
+
## [2.13.2] - 2025-06-10
|
|
374
|
+
|
|
375
|
+
### Fixed
|
|
376
|
+
|
|
377
|
+
- Invalid type exports
|
|
378
|
+
|
|
379
|
+
## [2.13.1] - 2025-06-09
|
|
380
|
+
|
|
381
|
+
### Added
|
|
382
|
+
|
|
383
|
+
- Sub-100ms audio events analysis and improvements (#270)
|
|
384
|
+
|
|
385
|
+
### Fixed
|
|
386
|
+
|
|
387
|
+
- Update `expo-modules-core` peer dependency for Expo SDK 53 compatibility
|
|
388
|
+
|
|
389
|
+
## [2.13.0] - 2025-06-09
|
|
390
|
+
|
|
391
|
+
### Added
|
|
392
|
+
|
|
393
|
+
- Enhanced device detection and management — configurable `enableDeviceDetection`, automatic connect/disconnect events, force refresh (#269)
|
|
394
|
+
|
|
395
|
+
## [2.12.3] - 2025-06-07
|
|
396
|
+
|
|
397
|
+
### Changed
|
|
398
|
+
|
|
399
|
+
- Adjust audio focus request timing in `AudioRecorderManager`
|
|
400
|
+
|
|
401
|
+
## [2.12.2] - 2025-06-07
|
|
402
|
+
|
|
403
|
+
### Fixed
|
|
404
|
+
|
|
405
|
+
- Android: audio focus strategy for background recording (#267)
|
|
406
|
+
|
|
407
|
+
## [2.12.0] - 2025-06-07
|
|
408
|
+
|
|
409
|
+
### Added
|
|
410
|
+
|
|
411
|
+
- Android-only `audioFocusStrategy` option (#264)
|
|
412
|
+
|
|
413
|
+
### Fixed
|
|
414
|
+
|
|
415
|
+
- Android: PCM streaming duration calculation bug (#263, #265)
|
|
416
|
+
|
|
417
|
+
## [2.11.0] - 2025-06-05
|
|
418
|
+
|
|
419
|
+
### Added
|
|
420
|
+
|
|
421
|
+
- M4A support with `preferRawStream` option (#261)
|
|
422
|
+
|
|
423
|
+
### Fixed
|
|
424
|
+
|
|
425
|
+
- Enforce 10ms minimum interval on both platforms (#262)
|
|
426
|
+
- Android: proper `MediaCodec` resource cleanup in `AudioProcessor`
|
|
427
|
+
|
|
428
|
+
## [2.10.6] - 2025-06-04
|
|
429
|
+
|
|
430
|
+
### Fixed
|
|
431
|
+
|
|
432
|
+
- iOS: prevent `durationMs` returning 0 (#244, #260)
|
|
433
|
+
|
|
434
|
+
## [2.10.5] - 2025-06-04
|
|
435
|
+
|
|
436
|
+
### Fixed
|
|
437
|
+
|
|
438
|
+
- iOS: enable audio streaming when primary output is disabled (#259)
|
|
439
|
+
|
|
440
|
+
## [2.10.4] - 2025-06-03
|
|
441
|
+
|
|
442
|
+
### Fixed
|
|
443
|
+
|
|
444
|
+
- iOS: resolve Swift compilation scope error in `AudioStreamManager` (#256)
|
|
445
|
+
|
|
446
|
+
## [2.10.3] - 2025-06-02
|
|
447
|
+
|
|
448
|
+
### Fixed
|
|
449
|
+
|
|
450
|
+
- Prevent `UninitializedPropertyAccessException` crash in developer menu (#250)
|
|
451
|
+
- Return compression info when primary output is disabled (#244, #249)
|
|
452
|
+
|
|
453
|
+
## [2.10.2] - 2025-05-31
|
|
454
|
+
|
|
455
|
+
### Fixed
|
|
456
|
+
|
|
457
|
+
- Buffer size calculation and duplicate emission fix (#248)
|
|
458
|
+
|
|
459
|
+
## [2.10.1] - 2025-05-27
|
|
460
|
+
|
|
461
|
+
### Fixed
|
|
462
|
+
|
|
463
|
+
- `useAudioRecorder`: update `intervalId` type for better type safety
|
|
464
|
+
|
|
465
|
+
## [2.10.0] - 2025-05-26
|
|
466
|
+
|
|
467
|
+
### Added
|
|
468
|
+
|
|
469
|
+
- Buffer duration control and `skipFileWriting` options
|
|
470
|
+
- Enhanced testing framework with instrumented tests (#242)
|
|
471
|
+
|
|
472
|
+
## [2.9.0] - 2025-05-15
|
|
473
|
+
|
|
474
|
+
### Added
|
|
475
|
+
|
|
476
|
+
- Web audio chunk handling improvements (#240)
|
|
477
|
+
|
|
478
|
+
## [2.8.4] - 2025-05-11
|
|
479
|
+
|
|
480
|
+
### Fixed
|
|
481
|
+
|
|
482
|
+
- Expo plugin setup
|
|
483
|
+
|
|
484
|
+
## [2.8.3] - 2025-05-06
|
|
485
|
+
|
|
486
|
+
### Changed
|
|
487
|
+
|
|
488
|
+
- Update plugin configuration to use ESM format
|
|
489
|
+
|
|
490
|
+
## [2.8.2] - 2025-05-06
|
|
491
|
+
|
|
492
|
+
### Changed
|
|
493
|
+
|
|
494
|
+
- TypeScript configurations for dual module (ESM/CJS) support
|
|
495
|
+
|
|
496
|
+
## [2.8.1] - 2025-05-06
|
|
497
|
+
|
|
498
|
+
### Added
|
|
499
|
+
|
|
500
|
+
- Dual module format (ESM/CommonJS) to resolve module resolution issues (#235)
|
|
501
|
+
|
|
502
|
+
## [2.7.0] - 2025-05-04
|
|
503
|
+
|
|
504
|
+
### Fixed
|
|
505
|
+
|
|
506
|
+
- iOS: enhance background audio recording and audio format conversion (#228)
|
|
507
|
+
|
|
508
|
+
## [2.6.2] - 2025-05-01
|
|
509
|
+
|
|
510
|
+
### Fixed
|
|
511
|
+
|
|
512
|
+
- Android: ensure foreground-only audio recording works with `FOREGROUND_SERVICE` (#202, #221)
|
|
513
|
+
|
|
514
|
+
## [2.6.1] - 2025-05-01
|
|
515
|
+
|
|
516
|
+
### Fixed
|
|
517
|
+
|
|
518
|
+
- iOS: resolve hardware format mismatch crash and enhance logging (#220)
|
|
519
|
+
|
|
520
|
+
## [2.6.0] - 2025-05-01
|
|
521
|
+
|
|
522
|
+
### Fixed
|
|
523
|
+
|
|
524
|
+
- Web: resolve audio recording issue without compression (#217, #219)
|
|
525
|
+
|
|
526
|
+
## [2.5.0] - 2025-04-30
|
|
527
|
+
|
|
528
|
+
### Added
|
|
529
|
+
|
|
530
|
+
- Complete Android implementation for audio device API (#214)
|
|
531
|
+
- Cross-platform audio device detection, selection, and fallback handling (#213)
|
|
532
|
+
- Zero-latency recording with `prepareRecording` API (#211)
|
|
533
|
+
|
|
534
|
+
### Fixed
|
|
535
|
+
|
|
536
|
+
- iOS: ensure complete audio data emission on recording stop/pause (#215)
|
|
537
|
+
|
|
538
|
+
## [2.4.1] - 2025-04-08
|
|
539
|
+
|
|
540
|
+
### Added
|
|
541
|
+
|
|
542
|
+
- Enhanced background audio handling and permission checks (#200)
|
|
543
|
+
|
|
544
|
+
## [2.4.0] - 2025-04-03
|
|
545
|
+
|
|
546
|
+
### Fixed
|
|
547
|
+
|
|
548
|
+
- iOS: resolve sample rate mismatch and enhance recording stability (#198)
|
|
549
|
+
- Android: enhance permission handling for phone state and notifications (#196)
|
|
550
|
+
|
|
551
|
+
## [2.3.1] - 2025-04-03
|
|
552
|
+
|
|
553
|
+
### Changed
|
|
554
|
+
|
|
555
|
+
- Remove external CRC32 library dependency (#195)
|
|
556
|
+
|
|
557
|
+
## [2.3.0] - 2025-03-29
|
|
558
|
+
|
|
559
|
+
### Fixed
|
|
560
|
+
|
|
561
|
+
- Always generate a new UUID unless filename is provided (#182)
|
|
562
|
+
|
|
563
|
+
## [2.2.0] - 2025-03-28
|
|
564
|
+
|
|
565
|
+
### Changed
|
|
566
|
+
|
|
567
|
+
- Platform-specific CRC32 handling
|
|
568
|
+
|
|
569
|
+
## [2.1.0] - 2025-03-04
|
|
570
|
+
|
|
571
|
+
### Added
|
|
572
|
+
|
|
573
|
+
- Mel spectrogram extraction and language detection (#157)
|
|
574
|
+
- Audio import functionality and decibel visualization (#156)
|
|
575
|
+
- iOS trim support with custom filename (#152)
|
|
576
|
+
- Sample rate control and web trimming support (#151)
|
|
577
|
+
- Audio trimming with optimized processing and detailed feedback (#150, #149)
|
|
578
|
+
|
|
579
|
+
## [2.0.1] - 2025-02-27
|
|
580
|
+
|
|
581
|
+
### Changed
|
|
582
|
+
|
|
583
|
+
- Update background mode handling for audio stream plugin
|
|
584
|
+
|
|
585
|
+
## [2.0.0] - 2025-02-27
|
|
586
|
+
|
|
587
|
+
### Added
|
|
588
|
+
|
|
589
|
+
- Full audio analysis with spectral features and time range controls (#132)
|
|
590
|
+
- `extractAudioData` API
|
|
591
|
+
- PCM player
|
|
592
|
+
- Audio checksum verification and segment analysis (#143)
|
|
593
|
+
|
|
594
|
+
### Fixed
|
|
595
|
+
|
|
596
|
+
- Audio recording reliability improvements and web IndexedDB management (#146)
|
|
597
|
+
|
|
598
|
+
## [1.17.0] - 2025-02-18
|
|
599
|
+
|
|
600
|
+
### Added
|
|
601
|
+
|
|
602
|
+
- Interval audio analysis for web, Android, and iOS (#125, #126)
|
|
603
|
+
|
|
604
|
+
## [1.16.0] - 2025-02-17
|
|
605
|
+
|
|
606
|
+
### Fixed
|
|
607
|
+
|
|
608
|
+
- iOS: prevent adding background modes when disabled
|
|
609
|
+
- iOS: replace CallKit with `AVAudioSession` for phone call detection
|
|
610
|
+
|
|
611
|
+
## [1.15.1] - 2025-02-17
|
|
612
|
+
|
|
613
|
+
### Fixed
|
|
614
|
+
|
|
615
|
+
- iOS: restore Opus compression support (#122)
|
|
616
|
+
- Emit audio analysis without blocking the recording thread
|
|
617
|
+
|
|
618
|
+
## [1.15.0] - 2025-02-15
|
|
619
|
+
|
|
620
|
+
### Fixed
|
|
621
|
+
|
|
622
|
+
- iOS: improve audio recording interruption handling and auto-resume (#119)
|
|
623
|
+
- Android: improve background recording and call interruption handling (#118)
|
|
624
|
+
|
|
625
|
+
## [1.14.2] - 2025-02-13
|
|
626
|
+
|
|
627
|
+
### Fixed
|
|
628
|
+
|
|
629
|
+
- Clear recording metadata on STOP action
|
|
630
|
+
|
|
631
|
+
## [1.14.1] - 2025-02-12
|
|
632
|
+
|
|
633
|
+
### Fixed
|
|
634
|
+
|
|
635
|
+
- Enable background recording by default (#114)
|
|
636
|
+
|
|
637
|
+
## [1.14.0] - 2025-02-12
|
|
638
|
+
|
|
639
|
+
### Fixed
|
|
640
|
+
|
|
641
|
+
- `keepAwake` issue on iOS and auto-resume after call (#113)
|
|
642
|
+
|
|
643
|
+
## [1.13.2] - 2025-02-10
|
|
644
|
+
|
|
645
|
+
### Fixed
|
|
646
|
+
|
|
647
|
+
- Ensure foreground service starts within required timeframe
|
|
648
|
+
|
|
649
|
+
## [1.13.0] - 2025-02-09
|
|
650
|
+
|
|
651
|
+
### Added
|
|
652
|
+
|
|
653
|
+
- Audio decode support (#104)
|
|
654
|
+
|
|
655
|
+
### Fixed
|
|
656
|
+
|
|
657
|
+
- Background recording issues and status checking (#103)
|
|
658
|
+
|
|
659
|
+
## [1.12.1] - 2025-02-01
|
|
660
|
+
|
|
661
|
+
### Fixed
|
|
662
|
+
|
|
663
|
+
- Improve audio recording interruption handling and consistency (#98)
|
|
664
|
+
|
|
665
|
+
## [1.12.0] - 2025-01-31
|
|
666
|
+
|
|
667
|
+
### Added
|
|
668
|
+
|
|
669
|
+
- Call state checks before starting or resuming recording (#94)
|
|
670
|
+
- Custom filename and directory support for recordings (#92)
|
|
671
|
+
- Compressed recording info with file size (#90)
|
|
672
|
+
|
|
673
|
+
## [1.11.3] - 2025-01-25
|
|
674
|
+
|
|
675
|
+
### Fixed
|
|
676
|
+
|
|
677
|
+
- Disable duplicate notification alerts (#82)
|
|
678
|
+
|
|
679
|
+
## [1.11.2] - 2025-01-22
|
|
680
|
+
|
|
681
|
+
### Fixed
|
|
682
|
+
|
|
683
|
+
- Resources not cleaned up properly on app kill (#80)
|
|
684
|
+
|
|
685
|
+
## [1.11.0] - 2025-01-22
|
|
686
|
+
|
|
687
|
+
### Added
|
|
688
|
+
|
|
689
|
+
- Intelligent call interruption handling and compression improvements (#78)
|
|
690
|
+
|
|
691
|
+
## [1.10.0] - 2025-01-14
|
|
692
|
+
|
|
693
|
+
### Added
|
|
694
|
+
|
|
695
|
+
- Support for pausing and resuming compressed recordings
|
|
696
|
+
- Optimized notification channel settings
|
|
697
|
+
|
|
698
|
+
## [1.9.2] - 2025-01-12
|
|
699
|
+
|
|
700
|
+
### Fixed
|
|
701
|
+
|
|
702
|
+
- iOS: bitrate verification to prevent invalid values
|
|
703
|
+
|
|
704
|
+
## [1.9.1] - 2025-01-12
|
|
705
|
+
|
|
706
|
+
### Fixed
|
|
707
|
+
|
|
708
|
+
- iOS: potentially missing compressed file info
|
|
709
|
+
|
|
710
|
+
## [1.9.0] - 2025-01-11
|
|
711
|
+
|
|
712
|
+
### Performance
|
|
713
|
+
|
|
714
|
+
- Optimize memory usage and streaming performance for web audio recording (#75)
|
|
715
|
+
|
|
716
|
+
## [1.8.0] - 2025-01-10
|
|
717
|
+
|
|
718
|
+
### Added
|
|
719
|
+
|
|
720
|
+
- Audio compression support
|
|
721
|
+
|
|
722
|
+
## [1.7.2] - 2025-01-07
|
|
723
|
+
|
|
724
|
+
### Fixed
|
|
725
|
+
|
|
726
|
+
- Web: correct WAV header handling in audio recording
|
|
727
|
+
|
|
728
|
+
## [1.7.1] - 2025-01-07
|
|
729
|
+
|
|
730
|
+
### Fixed
|
|
731
|
+
|
|
732
|
+
- Notification: avoid triggering new alerts on update (#71)
|
|
733
|
+
|
|
734
|
+
## [1.7.0] - 2025-01-05
|
|
735
|
+
|
|
736
|
+
### Fixed
|
|
737
|
+
|
|
738
|
+
- iOS: improve audio resampling and duration tracking (#69)
|
|
739
|
+
- Handle paused state in `stopRecording` (#68)
|
|
740
|
+
- Reset audio recording state properly on iOS and Android (#66)
|
|
741
|
+
- Android: total size not resetting on new recording (#64)
|
|
742
|
+
|
|
743
|
+
## [1.3.1] - 2024-12-05
|
|
744
|
+
|
|
745
|
+
### Added
|
|
746
|
+
|
|
747
|
+
- Web: throttling and optimized event processing (#49)
|
|
748
|
+
|
|
749
|
+
## [1.3.0] - 2024-11-28
|
|
750
|
+
|
|
751
|
+
### Added
|
|
752
|
+
|
|
753
|
+
- Standardize permission status response structure across platforms (#44)
|
|
754
|
+
|
|
755
|
+
## [1.2.4] - 2024-11-05
|
|
756
|
+
|
|
757
|
+
### Changed
|
|
758
|
+
|
|
759
|
+
- Android: minimum audio interval set to 10ms
|
|
760
|
+
- Plugin: do not include `notification` config by default to prevent iOS version mismatch
|
|
761
|
+
|
|
762
|
+
### Fixed
|
|
763
|
+
|
|
764
|
+
- Remove frequently firing log statements on web
|
|
765
|
+
|
|
766
|
+
## [1.2.0] - 2024-10-24
|
|
767
|
+
|
|
768
|
+
### Added
|
|
769
|
+
|
|
770
|
+
- `keepAwake` — continue recording when app is in background (default: true)
|
|
771
|
+
- Customizable recording notifications for Android and iOS
|
|
772
|
+
- Android: rich notification with live waveform, configurable actions/colors/priorities
|
|
773
|
+
- iOS: media player integration
|
|
774
|
+
|
|
775
|
+
## [1.1.17] - 2024-10-21
|
|
776
|
+
|
|
777
|
+
### Added
|
|
778
|
+
|
|
779
|
+
- Bluetooth headset support on iOS
|
|
780
|
+
|
|
781
|
+
### Fixed
|
|
782
|
+
|
|
783
|
+
- Android: not reading custom interval audio update
|
|
784
|
+
|
|
785
|
+
## [1.0.0] - 2024-04-01
|
|
786
|
+
|
|
787
|
+
### Added
|
|
788
|
+
|
|
789
|
+
- Initial release
|
|
790
|
+
- Real-time audio streaming across iOS, Android, and web
|
|
791
|
+
- Configurable intervals for audio buffer receipt
|
|
792
|
+
- Automated microphone permissions setup in managed Expo projects
|
|
793
|
+
- Background audio recording on iOS
|
|
794
|
+
- Audio features extraction during recording
|
|
795
|
+
- Consistent WAV PCM recording format across all platforms
|
|
796
|
+
|
|
797
|
+
[unreleased]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@4.0.0-beta.0...HEAD
|
|
798
|
+
[4.0.0-beta.0]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.2.1...@siteed/audio-studio@4.0.0-beta.0
|
|
799
|
+
[3.2.1]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.2.0...@siteed/audio-studio@3.2.1
|
|
800
|
+
[3.2.1-beta.3]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.2.1-beta.2...@siteed/audio-studio@3.2.1-beta.3
|
|
801
|
+
[3.2.1-beta.2]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.2.0...@siteed/audio-studio@3.2.1-beta.2
|
|
802
|
+
[3.2.0]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.1.1...@siteed/audio-studio@3.2.0
|
|
803
|
+
[3.1.1]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.1.0...@siteed/audio-studio@3.1.1
|
|
804
|
+
[3.1.0]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.0.5...@siteed/audio-studio@3.1.0
|
|
805
|
+
[3.0.5]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.0.4...@siteed/audio-studio@3.0.5
|
|
806
|
+
[3.0.4]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.0.3...@siteed/audio-studio@3.0.4
|
|
807
|
+
[3.0.3]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.0.2...@siteed/audio-studio@3.0.3
|
|
808
|
+
[3.0.2]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.0.2-beta.2...@siteed/audio-studio@3.0.2
|
|
809
|
+
[3.0.1]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@3.0.0...@siteed/audio-studio@3.0.1
|
|
810
|
+
[3.0.0]: https://github.com/deeeed/audiolab/compare/@siteed/audio-studio@2.18.5...@siteed/audio-studio@3.0.0
|