@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.
Files changed (375) hide show
  1. package/CHANGELOG.md +535 -0
  2. package/LICENSE +21 -0
  3. package/README.md +167 -0
  4. package/android/build.gradle +143 -0
  5. package/android/src/androidTest/assets/chorus.wav +0 -0
  6. package/android/src/androidTest/assets/jfk.wav +0 -0
  7. package/android/src/androidTest/assets/osr_us_000_0010_8k.wav +0 -0
  8. package/android/src/androidTest/assets/recorder_hello_world.wav +0 -0
  9. package/android/src/androidTest/java/net/siteed/audiostudio/AudioProcessorInstrumentedTest.kt +197 -0
  10. package/android/src/androidTest/java/net/siteed/audiostudio/AudioRecorderInstrumentedTest.kt +541 -0
  11. package/android/src/androidTest/java/net/siteed/audiostudio/AudioRecorderPerformanceInstrumentedTest.kt +234 -0
  12. package/android/src/androidTest/java/net/siteed/audiostudio/integration/AudioFocusStrategyIntegrationTest.kt +332 -0
  13. package/android/src/androidTest/java/net/siteed/audiostudio/integration/BufferDurationIntegrationTest.kt +324 -0
  14. package/android/src/androidTest/java/net/siteed/audiostudio/integration/CompressedOnlyOutputTest.kt +253 -0
  15. package/android/src/androidTest/java/net/siteed/audiostudio/integration/DeviceDisconnectionFallbackTest.kt +218 -0
  16. package/android/src/androidTest/java/net/siteed/audiostudio/integration/EventEmissionIntervalTest.kt +120 -0
  17. package/android/src/androidTest/java/net/siteed/audiostudio/integration/M4aFormatTest.kt +345 -0
  18. package/android/src/androidTest/java/net/siteed/audiostudio/integration/OutputControlIntegrationTest.kt +340 -0
  19. package/android/src/androidTest/java/net/siteed/audiostudio/integration/PcmStreamingDurationTest.kt +252 -0
  20. package/android/src/androidTest/java/net/siteed/audiostudio/integration/README.md +95 -0
  21. package/android/src/androidTest/java/net/siteed/audiostudio/integration/run_integration_tests.sh +43 -0
  22. package/android/src/main/AndroidManifest.xml +30 -0
  23. package/android/src/main/CMakeLists.txt +29 -0
  24. package/android/src/main/java/net/siteed/audiostudio/AudioAnalysisData.kt +188 -0
  25. package/android/src/main/java/net/siteed/audiostudio/AudioDataEncoder.kt +9 -0
  26. package/android/src/main/java/net/siteed/audiostudio/AudioDeviceManager.kt +1741 -0
  27. package/android/src/main/java/net/siteed/audiostudio/AudioFeaturesNative.kt +26 -0
  28. package/android/src/main/java/net/siteed/audiostudio/AudioFileHandler.kt +136 -0
  29. package/android/src/main/java/net/siteed/audiostudio/AudioFormatUtils.kt +354 -0
  30. package/android/src/main/java/net/siteed/audiostudio/AudioNotificationsManager.kt +439 -0
  31. package/android/src/main/java/net/siteed/audiostudio/AudioProcessor.kt +2237 -0
  32. package/android/src/main/java/net/siteed/audiostudio/AudioRecorderManager.kt +2163 -0
  33. package/android/src/main/java/net/siteed/audiostudio/AudioRecordingService.kt +167 -0
  34. package/android/src/main/java/net/siteed/audiostudio/AudioStudioModule.kt +1112 -0
  35. package/android/src/main/java/net/siteed/audiostudio/AudioTrimmer.kt +1099 -0
  36. package/android/src/main/java/net/siteed/audiostudio/Constants.kt +37 -0
  37. package/android/src/main/java/net/siteed/audiostudio/EventSender.kt +7 -0
  38. package/android/src/main/java/net/siteed/audiostudio/FFT.kt +100 -0
  39. package/android/src/main/java/net/siteed/audiostudio/Features.kt +98 -0
  40. package/android/src/main/java/net/siteed/audiostudio/LogUtils.kt +93 -0
  41. package/android/src/main/java/net/siteed/audiostudio/MelSpectrogramNative.kt +36 -0
  42. package/android/src/main/java/net/siteed/audiostudio/NotificationConfig.kt +72 -0
  43. package/android/src/main/java/net/siteed/audiostudio/PermissionUtils.kt +68 -0
  44. package/android/src/main/java/net/siteed/audiostudio/RecordingActionReceiver.kt +59 -0
  45. package/android/src/main/java/net/siteed/audiostudio/RecordingConfig.kt +259 -0
  46. package/android/src/main/java/net/siteed/audiostudio/WaveformConfig.kt +19 -0
  47. package/android/src/main/java/net/siteed/audiostudio/WaveformRenderer.kt +159 -0
  48. package/android/src/main/jni/AudioFeaturesJNI.cpp +152 -0
  49. package/android/src/main/jni/MelSpectrogramJNI.cpp +165 -0
  50. package/android/src/main/res/drawable/ic_default_action_icon.xml +16 -0
  51. package/android/src/main/res/drawable/ic_microphone.xml +13 -0
  52. package/android/src/main/res/drawable/ic_pause.xml +10 -0
  53. package/android/src/main/res/drawable/ic_play.xml +10 -0
  54. package/android/src/main/res/drawable/ic_stop.xml +10 -0
  55. package/android/src/main/res/layout/notification_recording.xml +37 -0
  56. package/android/src/test/java/net/siteed/audiostudio/AudioFileHandlerTest.kt +279 -0
  57. package/android/src/test/java/net/siteed/audiostudio/AudioFocusStrategyTest.kt +249 -0
  58. package/android/src/test/java/net/siteed/audiostudio/AudioFormatTest.kt +151 -0
  59. package/android/src/test/java/net/siteed/audiostudio/AudioFormatUtilsTest.kt +273 -0
  60. package/android/src/test/java/net/siteed/audiostudio/DeviceDisconnectionFallbackUnitTest.kt +140 -0
  61. package/android/src/test/resources/chorus.wav +0 -0
  62. package/android/src/test/resources/generate_test_audio.py +94 -0
  63. package/android/src/test/resources/jfk.wav +0 -0
  64. package/android/src/test/resources/osr_us_000_0010_8k.wav +0 -0
  65. package/android/src/test/resources/recorder_hello_world.wav +0 -0
  66. package/app.plugin.js +3 -0
  67. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js +4 -0
  68. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js.map +1 -0
  69. package/build/cjs/AudioAnalysis/audioFeaturesWasm.js +164 -0
  70. package/build/cjs/AudioAnalysis/audioFeaturesWasm.js.map +1 -0
  71. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js +213 -0
  72. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js.map +1 -0
  73. package/build/cjs/AudioAnalysis/extractAudioData.js +21 -0
  74. package/build/cjs/AudioAnalysis/extractAudioData.js.map +1 -0
  75. package/build/cjs/AudioAnalysis/extractMelSpectrogram.js +90 -0
  76. package/build/cjs/AudioAnalysis/extractMelSpectrogram.js.map +1 -0
  77. package/build/cjs/AudioAnalysis/extractPreview.js +28 -0
  78. package/build/cjs/AudioAnalysis/extractPreview.js.map +1 -0
  79. package/build/cjs/AudioAnalysis/extractWaveform.js +18 -0
  80. package/build/cjs/AudioAnalysis/extractWaveform.js.map +1 -0
  81. package/build/cjs/AudioAnalysis/melSpectrogramWasm.js +149 -0
  82. package/build/cjs/AudioAnalysis/melSpectrogramWasm.js.map +1 -0
  83. package/build/cjs/AudioDeviceManager.js +688 -0
  84. package/build/cjs/AudioDeviceManager.js.map +1 -0
  85. package/build/cjs/AudioRecorder.provider.js +78 -0
  86. package/build/cjs/AudioRecorder.provider.js.map +1 -0
  87. package/build/cjs/AudioStudio.native.js +8 -0
  88. package/build/cjs/AudioStudio.native.js.map +1 -0
  89. package/build/cjs/AudioStudio.types.js +11 -0
  90. package/build/cjs/AudioStudio.types.js.map +1 -0
  91. package/build/cjs/AudioStudio.web.js +708 -0
  92. package/build/cjs/AudioStudio.web.js.map +1 -0
  93. package/build/cjs/AudioStudioModule.js +718 -0
  94. package/build/cjs/AudioStudioModule.js.map +1 -0
  95. package/build/cjs/WebRecorder.web.js +865 -0
  96. package/build/cjs/WebRecorder.web.js.map +1 -0
  97. package/build/cjs/constants/platformLimitations.js +99 -0
  98. package/build/cjs/constants/platformLimitations.js.map +1 -0
  99. package/build/cjs/constants.js +20 -0
  100. package/build/cjs/constants.js.map +1 -0
  101. package/build/cjs/events.js +29 -0
  102. package/build/cjs/events.js.map +1 -0
  103. package/build/cjs/hooks/useAudioDevices.js +179 -0
  104. package/build/cjs/hooks/useAudioDevices.js.map +1 -0
  105. package/build/cjs/index.js +64 -0
  106. package/build/cjs/index.js.map +1 -0
  107. package/build/cjs/trimAudio.js +76 -0
  108. package/build/cjs/trimAudio.js.map +1 -0
  109. package/build/cjs/useAudioRecorder.js +535 -0
  110. package/build/cjs/useAudioRecorder.js.map +1 -0
  111. package/build/cjs/utils/BlobFix.js +502 -0
  112. package/build/cjs/utils/BlobFix.js.map +1 -0
  113. package/build/cjs/utils/audioProcessing.js +136 -0
  114. package/build/cjs/utils/audioProcessing.js.map +1 -0
  115. package/build/cjs/utils/cleanNativeOptions.js +22 -0
  116. package/build/cjs/utils/cleanNativeOptions.js.map +1 -0
  117. package/build/cjs/utils/concatenateBuffers.js +25 -0
  118. package/build/cjs/utils/concatenateBuffers.js.map +1 -0
  119. package/build/cjs/utils/convertPCMToFloat32.js +124 -0
  120. package/build/cjs/utils/convertPCMToFloat32.js.map +1 -0
  121. package/build/cjs/utils/crc32.js +52 -0
  122. package/build/cjs/utils/crc32.js.map +1 -0
  123. package/build/cjs/utils/encodingToBitDepth.js +17 -0
  124. package/build/cjs/utils/encodingToBitDepth.js.map +1 -0
  125. package/build/cjs/utils/getWavFileInfo.js +96 -0
  126. package/build/cjs/utils/getWavFileInfo.js.map +1 -0
  127. package/build/cjs/utils/writeWavHeader.js +88 -0
  128. package/build/cjs/utils/writeWavHeader.js.map +1 -0
  129. package/build/cjs/workers/InlineFeaturesExtractor.web.js +294 -0
  130. package/build/cjs/workers/InlineFeaturesExtractor.web.js.map +1 -0
  131. package/build/cjs/workers/inlineAudioWebWorker.web.js +190 -0
  132. package/build/cjs/workers/inlineAudioWebWorker.web.js.map +1 -0
  133. package/build/cjs/workers/wasmGlueString.web.js +27 -0
  134. package/build/cjs/workers/wasmGlueString.web.js.map +1 -0
  135. package/build/esm/AudioAnalysis/AudioAnalysis.types.js +3 -0
  136. package/build/esm/AudioAnalysis/AudioAnalysis.types.js.map +1 -0
  137. package/build/esm/AudioAnalysis/audioFeaturesWasm.js +126 -0
  138. package/build/esm/AudioAnalysis/audioFeaturesWasm.js.map +1 -0
  139. package/build/esm/AudioAnalysis/extractAudioAnalysis.js +205 -0
  140. package/build/esm/AudioAnalysis/extractAudioAnalysis.js.map +1 -0
  141. package/build/esm/AudioAnalysis/extractAudioData.js +14 -0
  142. package/build/esm/AudioAnalysis/extractAudioData.js.map +1 -0
  143. package/build/esm/AudioAnalysis/extractMelSpectrogram.js +86 -0
  144. package/build/esm/AudioAnalysis/extractMelSpectrogram.js.map +1 -0
  145. package/build/esm/AudioAnalysis/extractPreview.js +25 -0
  146. package/build/esm/AudioAnalysis/extractPreview.js.map +1 -0
  147. package/build/esm/AudioAnalysis/extractWaveform.js +11 -0
  148. package/build/esm/AudioAnalysis/extractWaveform.js.map +1 -0
  149. package/build/esm/AudioAnalysis/melSpectrogramWasm.js +111 -0
  150. package/build/esm/AudioAnalysis/melSpectrogramWasm.js.map +1 -0
  151. package/build/esm/AudioDeviceManager.js +681 -0
  152. package/build/esm/AudioDeviceManager.js.map +1 -0
  153. package/build/esm/AudioRecorder.provider.js +40 -0
  154. package/build/esm/AudioRecorder.provider.js.map +1 -0
  155. package/build/esm/AudioStudio.native.js +6 -0
  156. package/build/esm/AudioStudio.native.js.map +1 -0
  157. package/build/esm/AudioStudio.types.js +8 -0
  158. package/build/esm/AudioStudio.types.js.map +1 -0
  159. package/build/esm/AudioStudio.web.js +704 -0
  160. package/build/esm/AudioStudio.web.js.map +1 -0
  161. package/build/esm/AudioStudioModule.js +713 -0
  162. package/build/esm/AudioStudioModule.js.map +1 -0
  163. package/build/esm/WebRecorder.web.js +861 -0
  164. package/build/esm/WebRecorder.web.js.map +1 -0
  165. package/build/esm/constants/platformLimitations.js +90 -0
  166. package/build/esm/constants/platformLimitations.js.map +1 -0
  167. package/build/esm/constants.js +17 -0
  168. package/build/esm/constants.js.map +1 -0
  169. package/build/esm/events.js +21 -0
  170. package/build/esm/events.js.map +1 -0
  171. package/build/esm/hooks/useAudioDevices.js +176 -0
  172. package/build/esm/hooks/useAudioDevices.js.map +1 -0
  173. package/build/esm/index.js +23 -0
  174. package/build/esm/index.js.map +1 -0
  175. package/build/esm/trimAudio.js +69 -0
  176. package/build/esm/trimAudio.js.map +1 -0
  177. package/build/esm/useAudioRecorder.js +529 -0
  178. package/build/esm/useAudioRecorder.js.map +1 -0
  179. package/build/esm/utils/BlobFix.js +498 -0
  180. package/build/esm/utils/BlobFix.js.map +1 -0
  181. package/build/esm/utils/audioProcessing.js +133 -0
  182. package/build/esm/utils/audioProcessing.js.map +1 -0
  183. package/build/esm/utils/cleanNativeOptions.js +19 -0
  184. package/build/esm/utils/cleanNativeOptions.js.map +1 -0
  185. package/build/esm/utils/concatenateBuffers.js +21 -0
  186. package/build/esm/utils/concatenateBuffers.js.map +1 -0
  187. package/build/esm/utils/convertPCMToFloat32.js +120 -0
  188. package/build/esm/utils/convertPCMToFloat32.js.map +1 -0
  189. package/build/esm/utils/crc32.js +50 -0
  190. package/build/esm/utils/crc32.js.map +1 -0
  191. package/build/esm/utils/encodingToBitDepth.js +13 -0
  192. package/build/esm/utils/encodingToBitDepth.js.map +1 -0
  193. package/build/esm/utils/getWavFileInfo.js +92 -0
  194. package/build/esm/utils/getWavFileInfo.js.map +1 -0
  195. package/build/esm/utils/writeWavHeader.js +84 -0
  196. package/build/esm/utils/writeWavHeader.js.map +1 -0
  197. package/build/esm/workers/InlineFeaturesExtractor.web.js +291 -0
  198. package/build/esm/workers/InlineFeaturesExtractor.web.js.map +1 -0
  199. package/build/esm/workers/inlineAudioWebWorker.web.js +187 -0
  200. package/build/esm/workers/inlineAudioWebWorker.web.js.map +1 -0
  201. package/build/esm/workers/wasmGlueString.web.js +24 -0
  202. package/build/esm/workers/wasmGlueString.web.js.map +1 -0
  203. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts +198 -0
  204. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts.map +1 -0
  205. package/build/types/AudioAnalysis/audioFeaturesWasm.d.ts +24 -0
  206. package/build/types/AudioAnalysis/audioFeaturesWasm.d.ts.map +1 -0
  207. package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts +74 -0
  208. package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts.map +1 -0
  209. package/build/types/AudioAnalysis/extractAudioData.d.ts +3 -0
  210. package/build/types/AudioAnalysis/extractAudioData.d.ts.map +1 -0
  211. package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts +20 -0
  212. package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts.map +1 -0
  213. package/build/types/AudioAnalysis/extractPreview.d.ts +11 -0
  214. package/build/types/AudioAnalysis/extractPreview.d.ts.map +1 -0
  215. package/build/types/AudioAnalysis/extractWaveform.d.ts +8 -0
  216. package/build/types/AudioAnalysis/extractWaveform.d.ts.map +1 -0
  217. package/build/types/AudioAnalysis/melSpectrogramWasm.d.ts +16 -0
  218. package/build/types/AudioAnalysis/melSpectrogramWasm.d.ts.map +1 -0
  219. package/build/types/AudioDeviceManager.d.ts +187 -0
  220. package/build/types/AudioDeviceManager.d.ts.map +1 -0
  221. package/build/types/AudioRecorder.provider.d.ts +11 -0
  222. package/build/types/AudioRecorder.provider.d.ts.map +1 -0
  223. package/build/types/AudioStudio.native.d.ts +3 -0
  224. package/build/types/AudioStudio.native.d.ts.map +1 -0
  225. package/build/types/AudioStudio.types.d.ts +760 -0
  226. package/build/types/AudioStudio.types.d.ts.map +1 -0
  227. package/build/types/AudioStudio.web.d.ts +96 -0
  228. package/build/types/AudioStudio.web.d.ts.map +1 -0
  229. package/build/types/AudioStudioModule.d.ts +3 -0
  230. package/build/types/AudioStudioModule.d.ts.map +1 -0
  231. package/build/types/WebRecorder.web.d.ts +208 -0
  232. package/build/types/WebRecorder.web.d.ts.map +1 -0
  233. package/build/types/constants/platformLimitations.d.ts +40 -0
  234. package/build/types/constants/platformLimitations.d.ts.map +1 -0
  235. package/build/types/constants.d.ts +14 -0
  236. package/build/types/constants.d.ts.map +1 -0
  237. package/build/types/events.d.ts +29 -0
  238. package/build/types/events.d.ts.map +1 -0
  239. package/build/types/hooks/useAudioDevices.d.ts +15 -0
  240. package/build/types/hooks/useAudioDevices.d.ts.map +1 -0
  241. package/build/types/index.d.ts +21 -0
  242. package/build/types/index.d.ts.map +1 -0
  243. package/build/types/trimAudio.d.ts +25 -0
  244. package/build/types/trimAudio.d.ts.map +1 -0
  245. package/build/types/useAudioRecorder.d.ts +22 -0
  246. package/build/types/useAudioRecorder.d.ts.map +1 -0
  247. package/build/types/utils/BlobFix.d.ts +9 -0
  248. package/build/types/utils/BlobFix.d.ts.map +1 -0
  249. package/build/types/utils/audioProcessing.d.ts +24 -0
  250. package/build/types/utils/audioProcessing.d.ts.map +1 -0
  251. package/build/types/utils/cleanNativeOptions.d.ts +15 -0
  252. package/build/types/utils/cleanNativeOptions.d.ts.map +1 -0
  253. package/build/types/utils/concatenateBuffers.d.ts +8 -0
  254. package/build/types/utils/concatenateBuffers.d.ts.map +1 -0
  255. package/build/types/utils/convertPCMToFloat32.d.ts +13 -0
  256. package/build/types/utils/convertPCMToFloat32.d.ts.map +1 -0
  257. package/build/types/utils/crc32.d.ts +7 -0
  258. package/build/types/utils/crc32.d.ts.map +1 -0
  259. package/build/types/utils/encodingToBitDepth.d.ts +5 -0
  260. package/build/types/utils/encodingToBitDepth.d.ts.map +1 -0
  261. package/build/types/utils/getWavFileInfo.d.ts +26 -0
  262. package/build/types/utils/getWavFileInfo.d.ts.map +1 -0
  263. package/build/types/utils/writeWavHeader.d.ts +34 -0
  264. package/build/types/utils/writeWavHeader.d.ts.map +1 -0
  265. package/build/types/workers/InlineFeaturesExtractor.web.d.ts +2 -0
  266. package/build/types/workers/InlineFeaturesExtractor.web.d.ts.map +1 -0
  267. package/build/types/workers/inlineAudioWebWorker.web.d.ts +2 -0
  268. package/build/types/workers/inlineAudioWebWorker.web.d.ts.map +1 -0
  269. package/build/types/workers/wasmGlueString.web.d.ts +2 -0
  270. package/build/types/workers/wasmGlueString.web.d.ts.map +1 -0
  271. package/cpp/AudioFeatures.cpp +274 -0
  272. package/cpp/AudioFeatures.h +85 -0
  273. package/cpp/AudioFeaturesBridge.cpp +146 -0
  274. package/cpp/AudioFeaturesBridge.h +47 -0
  275. package/cpp/MelSpectrogram.cpp +227 -0
  276. package/cpp/MelSpectrogram.h +82 -0
  277. package/cpp/MelSpectrogramBridge.cpp +112 -0
  278. package/cpp/MelSpectrogramBridge.h +33 -0
  279. package/cpp/kiss_fft/COPYING +11 -0
  280. package/cpp/kiss_fft/_kiss_fft_guts.h +167 -0
  281. package/cpp/kiss_fft/kiss_fft.c +424 -0
  282. package/cpp/kiss_fft/kiss_fft.h +160 -0
  283. package/cpp/kiss_fft/kiss_fft_log.h +36 -0
  284. package/cpp/kiss_fft/kiss_fftr.c +155 -0
  285. package/cpp/kiss_fft/kiss_fftr.h +54 -0
  286. package/expo-module.config.json +10 -0
  287. package/ios/AudioAnalysisData.swift +74 -0
  288. package/ios/AudioDeviceManager.swift +670 -0
  289. package/ios/AudioFeaturesWrapper.h +21 -0
  290. package/ios/AudioFeaturesWrapper.mm +63 -0
  291. package/ios/AudioNotificationManager.swift +154 -0
  292. package/ios/AudioProcessingHelpers.swift +797 -0
  293. package/ios/AudioProcessor.swift +1191 -0
  294. package/ios/AudioStreamError.swift +7 -0
  295. package/ios/AudioStreamManager.swift +2369 -0
  296. package/ios/AudioStreamManagerDelegate.swift +16 -0
  297. package/ios/AudioStudio.podspec +39 -0
  298. package/ios/AudioStudioModule.swift +1111 -0
  299. package/ios/AudioStudioTests/AudioFileHandlerTests.swift +338 -0
  300. package/ios/AudioStudioTests/AudioFormatUtilsTests.swift +331 -0
  301. package/ios/AudioStudioTests/AudioTestHelpers.swift +130 -0
  302. package/ios/AudioStudioTests/CompressedOnlyOutputTests.swift +294 -0
  303. package/ios/AudioStudioTests/EventEmissionIntervalTests.swift +105 -0
  304. package/ios/AudioStudioTests/Info.plist +22 -0
  305. package/ios/AudioStudioTests/README.md +39 -0
  306. package/ios/AudioStudioTests/SimpleAudioTest.swift +98 -0
  307. package/ios/AudioStudioTests/TestAudioGenerator.swift +75 -0
  308. package/ios/DataPoint.swift +54 -0
  309. package/ios/DecodingConfig.swift +59 -0
  310. package/ios/FFT.swift +62 -0
  311. package/ios/Features.swift +95 -0
  312. package/ios/ISSUE_IOS.md +68 -0
  313. package/ios/Logger.swift +39 -0
  314. package/ios/MelSpectrogramWrapper.h +30 -0
  315. package/ios/MelSpectrogramWrapper.mm +97 -0
  316. package/ios/NotificationExtension.swift +15 -0
  317. package/ios/RecordingResult.swift +22 -0
  318. package/ios/RecordingSettings.swift +311 -0
  319. package/ios/WaveformExtractor.swift +105 -0
  320. package/ios/tests/README.md +41 -0
  321. package/ios/tests/integration/buffer_and_fallback_test.swift +178 -0
  322. package/ios/tests/integration/buffer_duration_test.swift +185 -0
  323. package/ios/tests/integration/compressed_only_output_test.swift +271 -0
  324. package/ios/tests/integration/output_control_test.swift +322 -0
  325. package/ios/tests/integration/run_integration_tests.sh +37 -0
  326. package/ios/tests/opus_support_test_macos.swift +154 -0
  327. package/ios/tests/standalone/audio_processing_test.swift +144 -0
  328. package/ios/tests/standalone/audio_recording_test.swift +277 -0
  329. package/ios/tests/standalone/audio_streaming_test.swift +249 -0
  330. package/ios/tests/standalone/standalone_test.swift +144 -0
  331. package/package.json +146 -0
  332. package/plugin/build/index.cjs +194 -0
  333. package/plugin/build/index.d.cts +22 -0
  334. package/plugin/build/index.js +194 -0
  335. package/plugin/src/index.ts +285 -0
  336. package/plugin/tsconfig.json +10 -0
  337. package/plugin/tsconfig.tsbuildinfo +1 -0
  338. package/prebuilt/wasm/mel-spectrogram.js +18 -0
  339. package/src/AudioAnalysis/AudioAnalysis.types.ts +226 -0
  340. package/src/AudioAnalysis/audio-features-wasm.d.ts +37 -0
  341. package/src/AudioAnalysis/audioFeaturesWasm.ts +200 -0
  342. package/src/AudioAnalysis/extractAudioAnalysis.ts +350 -0
  343. package/src/AudioAnalysis/extractAudioData.ts +17 -0
  344. package/src/AudioAnalysis/extractMelSpectrogram.ts +140 -0
  345. package/src/AudioAnalysis/extractPreview.ts +34 -0
  346. package/src/AudioAnalysis/extractWaveform.ts +22 -0
  347. package/src/AudioAnalysis/mel-spectrogram-wasm.d.ts +48 -0
  348. package/src/AudioAnalysis/melSpectrogramWasm.ts +179 -0
  349. package/src/AudioDeviceManager.ts +800 -0
  350. package/src/AudioRecorder.provider.tsx +57 -0
  351. package/src/AudioStudio.native.ts +6 -0
  352. package/src/AudioStudio.types.ts +899 -0
  353. package/src/AudioStudio.web.ts +911 -0
  354. package/src/AudioStudioModule.ts +984 -0
  355. package/src/WebRecorder.web.ts +1114 -0
  356. package/src/constants/platformLimitations.ts +118 -0
  357. package/src/constants.ts +21 -0
  358. package/src/events.ts +63 -0
  359. package/src/hooks/useAudioDevices.ts +213 -0
  360. package/src/index.ts +67 -0
  361. package/src/trimAudio.ts +94 -0
  362. package/src/types/crc-32.d.ts +9 -0
  363. package/src/useAudioRecorder.tsx +784 -0
  364. package/src/utils/BlobFix.ts +561 -0
  365. package/src/utils/audioProcessing.ts +205 -0
  366. package/src/utils/cleanNativeOptions.ts +18 -0
  367. package/src/utils/concatenateBuffers.ts +24 -0
  368. package/src/utils/convertPCMToFloat32.ts +170 -0
  369. package/src/utils/crc32.ts +59 -0
  370. package/src/utils/encodingToBitDepth.ts +18 -0
  371. package/src/utils/getWavFileInfo.ts +132 -0
  372. package/src/utils/writeWavHeader.ts +115 -0
  373. package/src/workers/InlineFeaturesExtractor.web.tsx +291 -0
  374. package/src/workers/inlineAudioWebWorker.web.tsx +186 -0
  375. 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,3 @@
1
+ declare let AudioStudioModule: any;
2
+ export default AudioStudioModule;
3
+ //# sourceMappingURL=AudioStudioModule.d.ts.map
@@ -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"}