@siteed/expo-audio-studio 2.18.6 → 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 (329) hide show
  1. package/README.md +13 -297
  2. package/index.d.ts +1 -0
  3. package/index.js +1 -0
  4. package/package.json +6 -135
  5. package/CHANGELOG.md +0 -501
  6. package/LICENSE +0 -21
  7. package/android/build.gradle +0 -129
  8. package/android/src/androidTest/assets/chorus.wav +0 -0
  9. package/android/src/androidTest/assets/jfk.wav +0 -0
  10. package/android/src/androidTest/assets/osr_us_000_0010_8k.wav +0 -0
  11. package/android/src/androidTest/assets/recorder_hello_world.wav +0 -0
  12. package/android/src/androidTest/java/net/siteed/audiostream/AudioProcessorInstrumentedTest.kt +0 -197
  13. package/android/src/androidTest/java/net/siteed/audiostream/AudioRecorderInstrumentedTest.kt +0 -541
  14. package/android/src/androidTest/java/net/siteed/audiostream/AudioRecorderPerformanceInstrumentedTest.kt +0 -234
  15. package/android/src/androidTest/java/net/siteed/audiostream/integration/AudioFocusStrategyIntegrationTest.kt +0 -332
  16. package/android/src/androidTest/java/net/siteed/audiostream/integration/BufferDurationIntegrationTest.kt +0 -324
  17. package/android/src/androidTest/java/net/siteed/audiostream/integration/CompressedOnlyOutputTest.kt +0 -253
  18. package/android/src/androidTest/java/net/siteed/audiostream/integration/DeviceDisconnectionFallbackTest.kt +0 -218
  19. package/android/src/androidTest/java/net/siteed/audiostream/integration/EventEmissionIntervalTest.kt +0 -120
  20. package/android/src/androidTest/java/net/siteed/audiostream/integration/M4aFormatTest.kt +0 -345
  21. package/android/src/androidTest/java/net/siteed/audiostream/integration/OutputControlIntegrationTest.kt +0 -340
  22. package/android/src/androidTest/java/net/siteed/audiostream/integration/PcmStreamingDurationTest.kt +0 -252
  23. package/android/src/androidTest/java/net/siteed/audiostream/integration/README.md +0 -95
  24. package/android/src/androidTest/java/net/siteed/audiostream/integration/run_integration_tests.sh +0 -43
  25. package/android/src/main/AndroidManifest.xml +0 -30
  26. package/android/src/main/java/net/siteed/audiostream/AudioAnalysisData.kt +0 -188
  27. package/android/src/main/java/net/siteed/audiostream/AudioDataEncoder.kt +0 -9
  28. package/android/src/main/java/net/siteed/audiostream/AudioDeviceManager.kt +0 -1741
  29. package/android/src/main/java/net/siteed/audiostream/AudioFileHandler.kt +0 -136
  30. package/android/src/main/java/net/siteed/audiostream/AudioFormatUtils.kt +0 -354
  31. package/android/src/main/java/net/siteed/audiostream/AudioNotificationsManager.kt +0 -439
  32. package/android/src/main/java/net/siteed/audiostream/AudioProcessor.kt +0 -2237
  33. package/android/src/main/java/net/siteed/audiostream/AudioRecorderManager.kt +0 -2141
  34. package/android/src/main/java/net/siteed/audiostream/AudioRecordingService.kt +0 -167
  35. package/android/src/main/java/net/siteed/audiostream/AudioTrimmer.kt +0 -1099
  36. package/android/src/main/java/net/siteed/audiostream/Constants.kt +0 -37
  37. package/android/src/main/java/net/siteed/audiostream/EventSender.kt +0 -7
  38. package/android/src/main/java/net/siteed/audiostream/ExpoAudioStreamModule.kt +0 -1113
  39. package/android/src/main/java/net/siteed/audiostream/FFT.kt +0 -99
  40. package/android/src/main/java/net/siteed/audiostream/Features.kt +0 -98
  41. package/android/src/main/java/net/siteed/audiostream/LogUtils.kt +0 -93
  42. package/android/src/main/java/net/siteed/audiostream/NotificationConfig.kt +0 -72
  43. package/android/src/main/java/net/siteed/audiostream/PermissionUtils.kt +0 -68
  44. package/android/src/main/java/net/siteed/audiostream/RecordingActionReceiver.kt +0 -59
  45. package/android/src/main/java/net/siteed/audiostream/RecordingConfig.kt +0 -257
  46. package/android/src/main/java/net/siteed/audiostream/WaveformConfig.kt +0 -19
  47. package/android/src/main/java/net/siteed/audiostream/WaveformRenderer.kt +0 -159
  48. package/android/src/main/res/drawable/ic_default_action_icon.xml +0 -16
  49. package/android/src/main/res/drawable/ic_microphone.xml +0 -13
  50. package/android/src/main/res/drawable/ic_pause.xml +0 -10
  51. package/android/src/main/res/drawable/ic_play.xml +0 -10
  52. package/android/src/main/res/drawable/ic_stop.xml +0 -10
  53. package/android/src/main/res/layout/notification_recording.xml +0 -37
  54. package/android/src/test/java/net/siteed/audiostream/AudioFileHandlerTest.kt +0 -279
  55. package/android/src/test/java/net/siteed/audiostream/AudioFocusStrategyTest.kt +0 -249
  56. package/android/src/test/java/net/siteed/audiostream/AudioFormatTest.kt +0 -151
  57. package/android/src/test/java/net/siteed/audiostream/AudioFormatUtilsTest.kt +0 -273
  58. package/android/src/test/java/net/siteed/audiostream/DeviceDisconnectionFallbackUnitTest.kt +0 -140
  59. package/android/src/test/resources/chorus.wav +0 -0
  60. package/android/src/test/resources/generate_test_audio.py +0 -94
  61. package/android/src/test/resources/jfk.wav +0 -0
  62. package/android/src/test/resources/osr_us_000_0010_8k.wav +0 -0
  63. package/android/src/test/resources/recorder_hello_world.wav +0 -0
  64. package/app.plugin.js +0 -3
  65. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js +0 -4
  66. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
  67. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js +0 -210
  68. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
  69. package/build/cjs/AudioAnalysis/extractAudioData.js +0 -21
  70. package/build/cjs/AudioAnalysis/extractAudioData.js.map +0 -1
  71. package/build/cjs/AudioAnalysis/extractMelSpectrogram.js +0 -92
  72. package/build/cjs/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
  73. package/build/cjs/AudioAnalysis/extractPreview.js +0 -28
  74. package/build/cjs/AudioAnalysis/extractPreview.js.map +0 -1
  75. package/build/cjs/AudioAnalysis/extractWaveform.js +0 -18
  76. package/build/cjs/AudioAnalysis/extractWaveform.js.map +0 -1
  77. package/build/cjs/AudioDeviceManager.js +0 -689
  78. package/build/cjs/AudioDeviceManager.js.map +0 -1
  79. package/build/cjs/AudioRecorder.provider.js +0 -78
  80. package/build/cjs/AudioRecorder.provider.js.map +0 -1
  81. package/build/cjs/ExpoAudioStream.native.js +0 -8
  82. package/build/cjs/ExpoAudioStream.native.js.map +0 -1
  83. package/build/cjs/ExpoAudioStream.types.js +0 -11
  84. package/build/cjs/ExpoAudioStream.types.js.map +0 -1
  85. package/build/cjs/ExpoAudioStream.web.js +0 -708
  86. package/build/cjs/ExpoAudioStream.web.js.map +0 -1
  87. package/build/cjs/ExpoAudioStreamModule.js +0 -718
  88. package/build/cjs/ExpoAudioStreamModule.js.map +0 -1
  89. package/build/cjs/WebRecorder.web.js +0 -777
  90. package/build/cjs/WebRecorder.web.js.map +0 -1
  91. package/build/cjs/constants/platformLimitations.js +0 -99
  92. package/build/cjs/constants/platformLimitations.js.map +0 -1
  93. package/build/cjs/constants.js +0 -17
  94. package/build/cjs/constants.js.map +0 -1
  95. package/build/cjs/events.js +0 -29
  96. package/build/cjs/events.js.map +0 -1
  97. package/build/cjs/hooks/useAudioDevices.js +0 -179
  98. package/build/cjs/hooks/useAudioDevices.js.map +0 -1
  99. package/build/cjs/index.js +0 -58
  100. package/build/cjs/index.js.map +0 -1
  101. package/build/cjs/trimAudio.js +0 -76
  102. package/build/cjs/trimAudio.js.map +0 -1
  103. package/build/cjs/useAudioRecorder.js +0 -518
  104. package/build/cjs/useAudioRecorder.js.map +0 -1
  105. package/build/cjs/utils/BlobFix.js +0 -502
  106. package/build/cjs/utils/BlobFix.js.map +0 -1
  107. package/build/cjs/utils/audioProcessing.js +0 -136
  108. package/build/cjs/utils/audioProcessing.js.map +0 -1
  109. package/build/cjs/utils/cleanNativeOptions.js +0 -22
  110. package/build/cjs/utils/cleanNativeOptions.js.map +0 -1
  111. package/build/cjs/utils/concatenateBuffers.js +0 -25
  112. package/build/cjs/utils/concatenateBuffers.js.map +0 -1
  113. package/build/cjs/utils/convertPCMToFloat32.js +0 -124
  114. package/build/cjs/utils/convertPCMToFloat32.js.map +0 -1
  115. package/build/cjs/utils/crc32.js +0 -52
  116. package/build/cjs/utils/crc32.js.map +0 -1
  117. package/build/cjs/utils/encodingToBitDepth.js +0 -17
  118. package/build/cjs/utils/encodingToBitDepth.js.map +0 -1
  119. package/build/cjs/utils/getWavFileInfo.js +0 -96
  120. package/build/cjs/utils/getWavFileInfo.js.map +0 -1
  121. package/build/cjs/utils/writeWavHeader.js +0 -88
  122. package/build/cjs/utils/writeWavHeader.js.map +0 -1
  123. package/build/cjs/workers/InlineFeaturesExtractor.web.js +0 -859
  124. package/build/cjs/workers/InlineFeaturesExtractor.web.js.map +0 -1
  125. package/build/cjs/workers/inlineAudioWebWorker.web.js +0 -184
  126. package/build/cjs/workers/inlineAudioWebWorker.web.js.map +0 -1
  127. package/build/esm/AudioAnalysis/AudioAnalysis.types.js +0 -3
  128. package/build/esm/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
  129. package/build/esm/AudioAnalysis/extractAudioAnalysis.js +0 -202
  130. package/build/esm/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
  131. package/build/esm/AudioAnalysis/extractAudioData.js +0 -14
  132. package/build/esm/AudioAnalysis/extractAudioData.js.map +0 -1
  133. package/build/esm/AudioAnalysis/extractMelSpectrogram.js +0 -89
  134. package/build/esm/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
  135. package/build/esm/AudioAnalysis/extractPreview.js +0 -25
  136. package/build/esm/AudioAnalysis/extractPreview.js.map +0 -1
  137. package/build/esm/AudioAnalysis/extractWaveform.js +0 -11
  138. package/build/esm/AudioAnalysis/extractWaveform.js.map +0 -1
  139. package/build/esm/AudioDeviceManager.js +0 -682
  140. package/build/esm/AudioDeviceManager.js.map +0 -1
  141. package/build/esm/AudioRecorder.provider.js +0 -40
  142. package/build/esm/AudioRecorder.provider.js.map +0 -1
  143. package/build/esm/ExpoAudioStream.native.js +0 -6
  144. package/build/esm/ExpoAudioStream.native.js.map +0 -1
  145. package/build/esm/ExpoAudioStream.types.js +0 -8
  146. package/build/esm/ExpoAudioStream.types.js.map +0 -1
  147. package/build/esm/ExpoAudioStream.web.js +0 -704
  148. package/build/esm/ExpoAudioStream.web.js.map +0 -1
  149. package/build/esm/ExpoAudioStreamModule.js +0 -713
  150. package/build/esm/ExpoAudioStreamModule.js.map +0 -1
  151. package/build/esm/WebRecorder.web.js +0 -773
  152. package/build/esm/WebRecorder.web.js.map +0 -1
  153. package/build/esm/constants/platformLimitations.js +0 -90
  154. package/build/esm/constants/platformLimitations.js.map +0 -1
  155. package/build/esm/constants.js +0 -14
  156. package/build/esm/constants.js.map +0 -1
  157. package/build/esm/events.js +0 -21
  158. package/build/esm/events.js.map +0 -1
  159. package/build/esm/hooks/useAudioDevices.js +0 -176
  160. package/build/esm/hooks/useAudioDevices.js.map +0 -1
  161. package/build/esm/index.js +0 -20
  162. package/build/esm/index.js.map +0 -1
  163. package/build/esm/trimAudio.js +0 -69
  164. package/build/esm/trimAudio.js.map +0 -1
  165. package/build/esm/useAudioRecorder.js +0 -512
  166. package/build/esm/useAudioRecorder.js.map +0 -1
  167. package/build/esm/utils/BlobFix.js +0 -498
  168. package/build/esm/utils/BlobFix.js.map +0 -1
  169. package/build/esm/utils/audioProcessing.js +0 -133
  170. package/build/esm/utils/audioProcessing.js.map +0 -1
  171. package/build/esm/utils/cleanNativeOptions.js +0 -19
  172. package/build/esm/utils/cleanNativeOptions.js.map +0 -1
  173. package/build/esm/utils/concatenateBuffers.js +0 -21
  174. package/build/esm/utils/concatenateBuffers.js.map +0 -1
  175. package/build/esm/utils/convertPCMToFloat32.js +0 -120
  176. package/build/esm/utils/convertPCMToFloat32.js.map +0 -1
  177. package/build/esm/utils/crc32.js +0 -50
  178. package/build/esm/utils/crc32.js.map +0 -1
  179. package/build/esm/utils/encodingToBitDepth.js +0 -13
  180. package/build/esm/utils/encodingToBitDepth.js.map +0 -1
  181. package/build/esm/utils/getWavFileInfo.js +0 -92
  182. package/build/esm/utils/getWavFileInfo.js.map +0 -1
  183. package/build/esm/utils/writeWavHeader.js +0 -84
  184. package/build/esm/utils/writeWavHeader.js.map +0 -1
  185. package/build/esm/workers/InlineFeaturesExtractor.web.js +0 -856
  186. package/build/esm/workers/InlineFeaturesExtractor.web.js.map +0 -1
  187. package/build/esm/workers/inlineAudioWebWorker.web.js +0 -181
  188. package/build/esm/workers/inlineAudioWebWorker.web.js.map +0 -1
  189. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts +0 -196
  190. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts.map +0 -1
  191. package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts +0 -74
  192. package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts.map +0 -1
  193. package/build/types/AudioAnalysis/extractAudioData.d.ts +0 -3
  194. package/build/types/AudioAnalysis/extractAudioData.d.ts.map +0 -1
  195. package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts +0 -14
  196. package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts.map +0 -1
  197. package/build/types/AudioAnalysis/extractPreview.d.ts +0 -11
  198. package/build/types/AudioAnalysis/extractPreview.d.ts.map +0 -1
  199. package/build/types/AudioAnalysis/extractWaveform.d.ts +0 -8
  200. package/build/types/AudioAnalysis/extractWaveform.d.ts.map +0 -1
  201. package/build/types/AudioDeviceManager.d.ts +0 -187
  202. package/build/types/AudioDeviceManager.d.ts.map +0 -1
  203. package/build/types/AudioRecorder.provider.d.ts +0 -11
  204. package/build/types/AudioRecorder.provider.d.ts.map +0 -1
  205. package/build/types/ExpoAudioStream.native.d.ts +0 -3
  206. package/build/types/ExpoAudioStream.native.d.ts.map +0 -1
  207. package/build/types/ExpoAudioStream.types.d.ts +0 -738
  208. package/build/types/ExpoAudioStream.types.d.ts.map +0 -1
  209. package/build/types/ExpoAudioStream.web.d.ts +0 -96
  210. package/build/types/ExpoAudioStream.web.d.ts.map +0 -1
  211. package/build/types/ExpoAudioStreamModule.d.ts +0 -3
  212. package/build/types/ExpoAudioStreamModule.d.ts.map +0 -1
  213. package/build/types/WebRecorder.web.d.ts +0 -198
  214. package/build/types/WebRecorder.web.d.ts.map +0 -1
  215. package/build/types/constants/platformLimitations.d.ts +0 -40
  216. package/build/types/constants/platformLimitations.d.ts.map +0 -1
  217. package/build/types/constants.d.ts +0 -11
  218. package/build/types/constants.d.ts.map +0 -1
  219. package/build/types/events.d.ts +0 -26
  220. package/build/types/events.d.ts.map +0 -1
  221. package/build/types/hooks/useAudioDevices.d.ts +0 -15
  222. package/build/types/hooks/useAudioDevices.d.ts.map +0 -1
  223. package/build/types/index.d.ts +0 -18
  224. package/build/types/index.d.ts.map +0 -1
  225. package/build/types/trimAudio.d.ts +0 -25
  226. package/build/types/trimAudio.d.ts.map +0 -1
  227. package/build/types/useAudioRecorder.d.ts +0 -22
  228. package/build/types/useAudioRecorder.d.ts.map +0 -1
  229. package/build/types/utils/BlobFix.d.ts +0 -9
  230. package/build/types/utils/BlobFix.d.ts.map +0 -1
  231. package/build/types/utils/audioProcessing.d.ts +0 -24
  232. package/build/types/utils/audioProcessing.d.ts.map +0 -1
  233. package/build/types/utils/cleanNativeOptions.d.ts +0 -15
  234. package/build/types/utils/cleanNativeOptions.d.ts.map +0 -1
  235. package/build/types/utils/concatenateBuffers.d.ts +0 -8
  236. package/build/types/utils/concatenateBuffers.d.ts.map +0 -1
  237. package/build/types/utils/convertPCMToFloat32.d.ts +0 -13
  238. package/build/types/utils/convertPCMToFloat32.d.ts.map +0 -1
  239. package/build/types/utils/crc32.d.ts +0 -7
  240. package/build/types/utils/crc32.d.ts.map +0 -1
  241. package/build/types/utils/encodingToBitDepth.d.ts +0 -5
  242. package/build/types/utils/encodingToBitDepth.d.ts.map +0 -1
  243. package/build/types/utils/getWavFileInfo.d.ts +0 -26
  244. package/build/types/utils/getWavFileInfo.d.ts.map +0 -1
  245. package/build/types/utils/writeWavHeader.d.ts +0 -34
  246. package/build/types/utils/writeWavHeader.d.ts.map +0 -1
  247. package/build/types/workers/InlineFeaturesExtractor.web.d.ts +0 -2
  248. package/build/types/workers/InlineFeaturesExtractor.web.d.ts.map +0 -1
  249. package/build/types/workers/inlineAudioWebWorker.web.d.ts +0 -2
  250. package/build/types/workers/inlineAudioWebWorker.web.d.ts.map +0 -1
  251. package/expo-module.config.json +0 -10
  252. package/ios/AudioAnalysisData.swift +0 -74
  253. package/ios/AudioDeviceManager.swift +0 -670
  254. package/ios/AudioNotificationManager.swift +0 -154
  255. package/ios/AudioProcessingHelpers.swift +0 -743
  256. package/ios/AudioProcessor.swift +0 -1151
  257. package/ios/AudioStreamError.swift +0 -7
  258. package/ios/AudioStreamManager.swift +0 -2369
  259. package/ios/AudioStreamManagerDelegate.swift +0 -16
  260. package/ios/DataPoint.swift +0 -54
  261. package/ios/DecodingConfig.swift +0 -59
  262. package/ios/ExpoAudioStream.podspec +0 -33
  263. package/ios/ExpoAudioStreamModule.swift +0 -1019
  264. package/ios/ExpoAudioStudioTests/AudioFileHandlerTests.swift +0 -338
  265. package/ios/ExpoAudioStudioTests/AudioFormatUtilsTests.swift +0 -331
  266. package/ios/ExpoAudioStudioTests/AudioTestHelpers.swift +0 -130
  267. package/ios/ExpoAudioStudioTests/CompressedOnlyOutputTests.swift +0 -294
  268. package/ios/ExpoAudioStudioTests/EventEmissionIntervalTests.swift +0 -105
  269. package/ios/ExpoAudioStudioTests/Info.plist +0 -22
  270. package/ios/ExpoAudioStudioTests/README.md +0 -39
  271. package/ios/ExpoAudioStudioTests/SimpleAudioTest.swift +0 -98
  272. package/ios/ExpoAudioStudioTests/TestAudioGenerator.swift +0 -75
  273. package/ios/FFT.swift +0 -62
  274. package/ios/Features.swift +0 -95
  275. package/ios/ISSUE_IOS.md +0 -68
  276. package/ios/Logger.swift +0 -39
  277. package/ios/NotificationExtension.swift +0 -15
  278. package/ios/RecordingResult.swift +0 -22
  279. package/ios/RecordingSettings.swift +0 -308
  280. package/ios/WaveformExtractor.swift +0 -105
  281. package/ios/tests/README.md +0 -41
  282. package/ios/tests/integration/buffer_and_fallback_test.swift +0 -178
  283. package/ios/tests/integration/buffer_duration_test.swift +0 -185
  284. package/ios/tests/integration/compressed_only_output_test.swift +0 -271
  285. package/ios/tests/integration/output_control_test.swift +0 -322
  286. package/ios/tests/integration/run_integration_tests.sh +0 -37
  287. package/ios/tests/opus_support_test_macos.swift +0 -154
  288. package/ios/tests/standalone/audio_processing_test.swift +0 -144
  289. package/ios/tests/standalone/audio_recording_test.swift +0 -277
  290. package/ios/tests/standalone/audio_streaming_test.swift +0 -249
  291. package/ios/tests/standalone/standalone_test.swift +0 -144
  292. package/plugin/build/index.cjs +0 -194
  293. package/plugin/build/index.d.cts +0 -22
  294. package/plugin/build/index.js +0 -194
  295. package/plugin/src/index.ts +0 -285
  296. package/plugin/tsconfig.json +0 -10
  297. package/plugin/tsconfig.tsbuildinfo +0 -1
  298. package/src/AudioAnalysis/AudioAnalysis.types.ts +0 -224
  299. package/src/AudioAnalysis/extractAudioAnalysis.ts +0 -344
  300. package/src/AudioAnalysis/extractAudioData.ts +0 -17
  301. package/src/AudioAnalysis/extractMelSpectrogram.ts +0 -154
  302. package/src/AudioAnalysis/extractPreview.ts +0 -34
  303. package/src/AudioAnalysis/extractWaveform.ts +0 -22
  304. package/src/AudioDeviceManager.ts +0 -803
  305. package/src/AudioRecorder.provider.tsx +0 -57
  306. package/src/ExpoAudioStream.native.ts +0 -6
  307. package/src/ExpoAudioStream.types.ts +0 -874
  308. package/src/ExpoAudioStream.web.ts +0 -905
  309. package/src/ExpoAudioStreamModule.ts +0 -990
  310. package/src/WebRecorder.web.ts +0 -1005
  311. package/src/constants/platformLimitations.ts +0 -118
  312. package/src/constants.ts +0 -18
  313. package/src/events.ts +0 -60
  314. package/src/hooks/useAudioDevices.ts +0 -213
  315. package/src/index.ts +0 -54
  316. package/src/trimAudio.ts +0 -94
  317. package/src/types/crc-32.d.ts +0 -9
  318. package/src/useAudioRecorder.tsx +0 -766
  319. package/src/utils/BlobFix.ts +0 -561
  320. package/src/utils/audioProcessing.ts +0 -205
  321. package/src/utils/cleanNativeOptions.ts +0 -18
  322. package/src/utils/concatenateBuffers.ts +0 -24
  323. package/src/utils/convertPCMToFloat32.ts +0 -170
  324. package/src/utils/crc32.ts +0 -59
  325. package/src/utils/encodingToBitDepth.ts +0 -18
  326. package/src/utils/getWavFileInfo.ts +0 -132
  327. package/src/utils/writeWavHeader.ts +0 -115
  328. package/src/workers/InlineFeaturesExtractor.web.tsx +0 -855
  329. package/src/workers/inlineAudioWebWorker.web.tsx +0 -180
package/README.md CHANGED
@@ -1,306 +1,22 @@
1
- # @siteed/expo-audio-studio
1
+ # @siteed/expo-audio-studio (DEPRECATED)
2
2
 
3
- [![kandi X-Ray](https://kandi.openweaver.com/badges/xray.svg)](https://kandi.openweaver.com/typescript/siteed/expo-audio-studio)
4
- [![Version](https://img.shields.io/npm/v/@siteed/expo-audio-studio.svg)](https://www.npmjs.com/package/@siteed/expo-audio-studio)
5
- [![Dependency Status](https://img.shields.io/npm/dt/@siteed/expo-audio-studio.svg)](https://www.npmjs.com/package/@siteed/expo-audio-studio)
6
- [![License](https://img.shields.io/npm/l/@siteed/expo-audio-studio.svg)](https://www.npmjs.com/package/@siteed/expo-audio-studio)
3
+ This package has been renamed to **@siteed/audio-studio**.
7
4
 
8
- <div align="center">
9
- <p align="center">
10
- <strong>Comprehensive audio studio library for React Native and Expo with recording, analysis, visualization, and streaming capabilities across iOS, Android, and web platforms.</strong>
11
- </p>
12
-
13
- <div style="display: flex; justify-content: center; gap: 20px; margin: 30px 0;">
14
- <div>
15
- <h3>iOS Demo</h3>
16
- <img src="../../docs/ios.gif" alt="iOS Demo" width="280" />
17
- </div>
18
- <div>
19
- <h3>Android Demo</h3>
20
- <img src="../../docs/android.gif" alt="Android Demo" width="280" />
21
- </div>
22
- </div>
23
-
24
- <div style="display: flex; flex-direction: column; align-items: center; margin-bottom: 20px;">
25
- <p><strong>Try AudioPlayground: Complete audio processing app built with this library</strong></p>
26
- <div style="display: flex; justify-content: center; gap: 20px; margin: 10px 0;">
27
- <a href="https://apps.apple.com/app/audio-playground/id6739774966">
28
- <img src="https://developer.apple.com/app-store/marketing/guidelines/images/badge-download-on-the-app-store.svg" alt="Download on the App Store" height="40" />
29
- </a>
30
- <a href="https://play.google.com/store/apps/details?id=net.siteed.audioplayground">
31
- <img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" alt="Get it on Google Play" height="40" />
32
- </a>
33
- </div>
34
- </div>
35
-
36
- <a href="https://deeeed.github.io/expo-audio-stream/playground" style="text-decoration:none;">
37
- <div style="display:inline-block; padding:10px 20px; background-color:#007bff; color:white; border-radius:5px; font-size:16px;">
38
- Try it in the Playground
39
- </div>
40
- </a>
41
- </div>
42
-
43
- **Give it a GitHub star 🌟, if you found this repo useful.**
44
- [![GitHub stars](https://img.shields.io/github/stars/deeeed/expo-audio-stream.svg?style=social&label=Star&maxAge=2592000)](https://github.com/deeeed/expo-audio-stream)
45
-
46
- > **Note:** This package was formerly known as `@siteed/expo-audio-stream`. The name has been changed to better reflect the expanded capabilities beyond just audio streaming.
47
-
48
- ## Features
49
-
50
- - Real-time audio streaming across iOS, Android, and web.
51
- - Audio input device detection and selection:
52
- - List and select from available audio input devices
53
- - View detailed device capabilities (sample rates, channels, bit depths)
54
- - Support for Bluetooth, USB, and wired devices
55
- - Automatic device management with fallback options
56
- - Intelligent detection refresh for Bluetooth devices
57
- - Dual-stream recording capabilities:
58
- - Simultaneous raw PCM and compressed audio recording
59
- - Compression formats: OPUS or AAC
60
- - Configurable bitrate for compressed audio
61
- - Optimized storage for both high-quality and compressed formats
62
- - Intelligent interruption handling:
63
- - Automatic pause/resume during phone calls
64
- - Configurable automatic resumption
65
- - Detailed interruption event callbacks
66
- - Configurable intervals for audio buffer receipt.
67
- - Automated microphone permissions setup in managed Expo projects.
68
- - Background audio recording on iOS.
69
- - Audio features extraction during recording.
70
- - Consistent WAV PCM recording format across all platforms.
71
- - Keep recording active while app is in background
72
- - Zero-latency recording with preparation API:
73
- - Pre-initialize audio recording to eliminate startup delay
74
- - Prepare permissions, audio buffers, and sessions in advance
75
- - Start recording instantly when needed
76
- - Rich notification system for recording status:
77
- - Android: Live waveform visualization in notifications
78
- - Android: Fully customizable notification appearance and actions
79
- - iOS: Media player integration
80
- - Advanced audio analysis capabilities:
81
- - Mel spectrogram generation for machine learning and visualization
82
- - Comprehensive audio feature extraction (MFCC, spectral features, etc.)
83
- - Lightweight waveform preview generation
84
- - Precision audio manipulation:
85
- - Advanced audio splitting and trimming API
86
- - Support for trimming multiple segments in a single operation
87
- - Ability to keep or remove specific time ranges
88
- - Complete ecosystem:
89
- - Full-featured AudioPlayground application showcasing advanced API usage
90
- - Ready-to-use UI components via [@siteed/expo-audio-ui](https://github.com/deeeed/expo-audio-stream/tree/main/packages/expo-audio-ui) package
91
- - Visualizations, waveforms, and audio controls that can be directly incorporated into your app
92
-
93
- ## Audio Analysis Features
94
-
95
- Extract powerful audio features for advanced audio processing and visualization:
96
-
97
- ```typescript
98
- // Extract audio analysis with specific features enabled
99
- const analysis = await extractAudioAnalysis({
100
- fileUri: 'path/to/recording.wav',
101
- features: {
102
- energy: true, // Overall energy of the audio
103
- rms: true, // Root mean square (amplitude)
104
- zcr: true, // Zero-crossing rate
105
- mfcc: true, // Mel-frequency cepstral coefficients
106
- spectralCentroid: true, // Brightness of sound
107
- tempo: true, // Estimated BPM
108
- }
109
- });
110
- ```
111
-
112
- ### Available Audio Features
113
-
114
- - **Basic Analysis**: RMS, energy, amplitude range, zero-crossing rate
115
- - **Spectral Features**: Spectral centroid, flatness, rolloff, bandwidth
116
- - **Advanced Analysis**:
117
- - MFCC (Mel-frequency cepstral coefficients)
118
- - Chromagram (pitch class representation)
119
- - Mel Spectrogram
120
- - Harmonics-to-noise ratio
121
- - Tempo estimation
122
- - Pitch detection
123
-
124
- ### Use Cases
125
-
126
- - Visualize audio waveforms with detailed metrics
127
- - Implement speech recognition preprocessing
128
- - Create music analysis applications
129
- - Build audio fingerprinting systems
130
- - Develop voice activity detection
131
-
132
- ## API Overview
133
-
134
- The library provides several specialized APIs for different audio processing needs:
135
-
136
- ### Recording and Playback
137
-
138
- - **useAudioRecorder**: Hook for recording audio with configurable quality settings
139
- - **AudioRecorderProvider**: Context provider for sharing recording state across components
140
- - **useSharedAudioRecorder**: Hook to access shared recording state from any component
141
-
142
- ```typescript
143
- // Start a new recording with configuration
144
- const { startRecording, stopRecording, isRecording, recordingUri } = useAudioRecorder({
145
- audioQuality: 'high',
146
- sampleRate: 44100,
147
- numberOfChannels: 2,
148
- bitDepth: 16,
149
- outputFormat: 'wav',
150
- });
151
-
152
- // Use the prepare API for zero-latency recording
153
- const { prepareRecording, startRecording, stopRecording } = useSharedAudioRecorder();
154
-
155
- // First prepare the recording - this initializes all resources
156
- await prepareRecording({
157
- sampleRate: 44100,
158
- channels: 2,
159
- encoding: 'pcm_16bit'
160
- });
161
-
162
- // Later when needed, start instantly with no delay
163
- await startRecording(/* same config as prepare */);
164
-
165
- // Share recording state across components
166
- const AudioApp = () => (
167
- <AudioRecorderProvider>
168
- <RecordButton />
169
- <AudioVisualizer />
170
- </AudioRecorderProvider>
171
- );
172
- ```
173
-
174
- ### Audio Analysis
175
-
176
- - **extractAudioAnalysis**: Extract comprehensive audio features for detailed analysis
177
- - **extractPreview**: Generate lightweight waveform data for visualization
178
- - **extractAudioData**: Extract raw PCM data for custom processing
179
- - **extractRawWavAnalysis**: Analyze WAV files without decoding, preserving original PCM values
180
-
181
- ```typescript
182
- // Extract detailed audio analysis with feature extraction
183
- const analysis = await extractAudioAnalysis({
184
- fileUri: 'path/to/recording.wav',
185
- features: { rms: true, zcr: true, mfcc: true }
186
- });
187
-
188
- // Generate a lightweight waveform preview
189
- const preview = await extractPreview({
190
- fileUri: 'path/to/recording.wav',
191
- pointsPerSecond: 50
192
- });
193
-
194
- // Extract raw PCM data for custom processing
195
- const audioData = await extractAudioData({
196
- fileUri: 'path/to/recording.wav',
197
- includeWavHeader: true
198
- });
199
- ```
200
-
201
- #### Choosing the Right Audio Analysis Method
202
-
203
- | Method | Purpose | Performance | Use When |
204
- |--------|---------|-------------|----------|
205
- | `extractAudioAnalysis` | Comprehensive audio feature extraction | Medium-Heavy | You need detailed audio features like MFCC, spectral features |
206
- | `extractPreview` | Lightweight waveform visualization | Very Light | You only need amplitude data for visualization |
207
- | `extractAudioData` | Raw PCM data extraction | Medium | You need the raw audio data for custom processing |
208
- | `extractRawWavAnalysis` | WAV analysis without decoding | Light | You want to analyze WAV files while preserving original values |
209
- | `extractMelSpectrogram` | Mel spectrogram generation | Heavy | You need frequency-domain representation for ML or visualization |
210
-
211
- ### Specialized Audio Processing
212
-
213
- - **extractMelSpectrogram**: Generate mel spectrogram for audio visualization or ML models
214
- - **trimAudio**: Trim audio files with precision, supporting multiple segments and formats
215
-
216
- ```typescript
217
- // Generate mel spectrogram for audio visualization or ML models
218
- const melSpectrogram = await extractMelSpectrogram({
219
- fileUri: 'path/to/recording.wav',
220
- windowSizeMs: 25,
221
- hopLengthMs: 10,
222
- nMels: 40
223
- });
224
-
225
- // Trim audio files with precision
226
- const trimmedAudio = await trimAudio({
227
- fileUri: 'path/to/recording.wav',
228
- startTimeMs: 1000,
229
- endTimeMs: 5000,
230
- outputFormat: { format: 'wav' }
231
- });
232
-
233
- // Trim multiple segments from an audio file
234
- const compiledAudio = await trimAudio({
235
- fileUri: 'path/to/recording.wav',
236
- mode: 'keep',
237
- ranges: [
238
- { startTimeMs: 1000, endTimeMs: 5000 },
239
- { startTimeMs: 10000, endTimeMs: 15000 }
240
- ]
241
- });
242
- ```
243
-
244
- ### Utility Functions
245
-
246
- - **convertPCMToFloat32**: Convert PCM data to Float32Array for processing
247
- - **getWavFileInfo**: Extract metadata from WAV files
248
- - **writeWavHeader**: Create WAV headers for raw PCM data
249
-
250
- ### Low-Level Access
251
-
252
- For advanced use cases, the library provides direct access to the native module:
253
-
254
- ```typescript
255
- import { ExpoAudioStreamModule } from '@siteed/expo-audio-studio';
256
-
257
- // Access platform-specific functionality
258
- const status = await ExpoAudioStreamModule.status();
259
- const permissions = await ExpoAudioStreamModule.getPermissionsAsync();
260
- ```
261
-
262
- ## Documentation
263
-
264
- For detailed documentation, please refer to the [Getting Started Guide](https://deeeed.github.io/expo-audio-stream/docs/).
265
-
266
- For developers interested in contributing or debugging the library, please see the [Contribution Guide](./CONTRIBUTE.md).
267
-
268
- ## Companion Resources
269
-
270
- ### AudioPlayground Application
271
-
272
- The repository includes a complete AudioPlayground application that demonstrates advanced usage of the API. This playground serves as both a demonstration and a learning resource:
273
-
274
- - Interactive examples of all major API features
275
- - Real-time audio visualization and analysis
276
- - Code samples you can directly reference for your own implementation
277
-
278
- Try it online at [https://deeeed.github.io/expo-audio-stream/playground](https://deeeed.github.io/expo-audio-stream/playground) or run it locally from the repository.
279
-
280
- ### UI Components Package
281
-
282
- The [@siteed/expo-audio-ui](https://github.com/deeeed/expo-audio-stream/tree/main/packages/expo-audio-ui) package provides ready-to-use UI components for audio applications:
5
+ Please update your dependencies:
283
6
 
284
7
  ```bash
285
- # Install the UI components package
286
- npm install @siteed/expo-audio-ui
8
+ # Remove the old package
9
+ npm uninstall @siteed/expo-audio-studio
287
10
 
288
- # or with yarn
289
- yarn add @siteed/expo-audio-ui
11
+ # Install the new package
12
+ npm install @siteed/audio-studio
290
13
  ```
291
14
 
292
- This package includes:
293
- - Waveform visualizers
294
- - Audio recording controls
295
- - Playback components
296
- - Spectrogram displays
297
- - And more!
15
+ Then update your imports:
298
16
 
299
- All components are built with React Native, Reanimated, and Skia for optimal performance across platforms.
300
-
301
- ## License
302
-
303
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
17
+ ```diff
18
+ - import { ... } from '@siteed/expo-audio-studio';
19
+ + import { ... } from '@siteed/audio-studio';
20
+ ```
304
21
 
305
- ---
306
- <sub>Created by [Arthur Breton](https://siteed.net) • See more projects at [siteed.net](https://siteed.net)</sub>
22
+ This shim package re-exports everything from `@siteed/audio-studio` for backwards compatibility, but will be removed in a future release.
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@siteed/audio-studio';
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('@siteed/audio-studio');
package/package.json CHANGED
@@ -1,141 +1,12 @@
1
1
  {
2
2
  "name": "@siteed/expo-audio-studio",
3
- "version": "2.18.6",
4
- "description": "Comprehensive audio processing library for React Native and Expo with recording, analysis, visualization, and streaming capabilities across iOS, Android, and web",
3
+ "version": "3.0.0",
4
+ "description": "DEPRECATED - Use @siteed/audio-studio instead. This package re-exports @siteed/audio-studio for backwards compatibility.",
5
5
  "license": "MIT",
6
- "type": "commonjs",
7
- "main": "./build/cjs/index.js",
8
- "module": "./build/esm/index.js",
9
- "types": "./build/types/index.d.ts",
10
- "expo": {
11
- "plugin": "./app.plugin.js"
12
- },
13
- "author": "Arthur Breton <abreton@siteed.net> (https://github.com/deeeed)",
14
- "homepage": "https://github.com/deeeed/expo-audio-stream/blob/main/packages/expo-audio-studio/README.md",
15
- "repository": {
16
- "type": "git",
17
- "url": "git+https://github.com/deeeed/expo-audio-stream.git",
18
- "directory": "packages/expo-audio-studio"
19
- },
20
- "bugs": {
21
- "url": "https://github.com/deeeed/expo-audio-stream/issues"
22
- },
23
- "keywords": [
24
- "react-native",
25
- "expo",
26
- "audio",
27
- "recording",
28
- "audio-analysis",
29
- "audio-processing",
30
- "audio-visualization",
31
- "waveform",
32
- "spectrogram",
33
- "mel-spectrogram",
34
- "mfcc",
35
- "audio-features",
36
- "audio-compression",
37
- "opus",
38
- "aac",
39
- "pcm",
40
- "wav",
41
- "cross-platform",
42
- "background-recording",
43
- "audio-trimming",
44
- "dual-stream"
45
- ],
46
- "files": [
47
- "src",
48
- "android",
49
- "ios",
50
- "cpp",
51
- "plugin",
52
- "app.plugin.js",
53
- "LICENSE",
54
- "CHANGELOG.md",
55
- "generated",
56
- "expo-module.config.json",
57
- "README.md",
58
- "package.json",
59
- "*.podspec",
60
- "build",
61
- "!ios/build",
62
- "!android/build",
63
- "!android/gradle",
64
- "!android/gradlew",
65
- "!android/gradlew.bat",
66
- "!android/local.properties",
67
- "!**/__tests__",
68
- "!**/__fixtures__",
69
- "!**/__mocks__",
70
- "!**/.*"
71
- ],
72
- "scripts": {
73
- "build": "rimraf build && yarn build:types && yarn build:cjs && yarn build:esm && yarn build:plugin",
74
- "build:cjs": "tsc -p tsconfig.cjs.json",
75
- "build:esm": "tsc -p tsconfig.esm.json",
76
- "build:types": "tsc -p tsconfig.types.json",
77
- "build:plugin": "tsc --project plugin/tsconfig.json && cp plugin/build/index.js plugin/build/index.cjs",
78
- "build:plugin:dev": "expo-module build plugin",
79
- "build:dev": "expo-module build",
80
- "clean": "expo-module clean && rimraf build plugin/build",
81
- "lint": "expo-module lint",
82
- "lint:fix": "expo-module lint --fix",
83
- "test": "expo-module test",
84
- "test:android": "yarn test:android:unit && yarn test:android:instrumented",
85
- "test:android:unit": "cd ../../apps/playground/android && ./gradlew :siteed-expo-audio-studio:test",
86
- "test:android:instrumented": "cd ../../apps/playground/android && ./gradlew :siteed-expo-audio-studio:connectedAndroidTest",
87
- "test:android:unit:watch": "cd ../../apps/playground/android && ./gradlew :siteed-expo-audio-studio:test --continuous",
88
- "test:ios": "cd ../../apps/playground/ios && xcodebuild -workspace AudioDevPlayground.xcworkspace -scheme AudioDevPlayground -destination 'platform=iOS Simulator,name=iPhone 15' build",
89
- "test:coverage": "cd ../../apps/playground/android && ./gradlew :siteed-expo-audio-studio:jacocoTestReport",
90
- "typecheck": "tsc --noEmit",
91
- "docgen": "typedoc src/index.ts --plugin typedoc-plugin-markdown --readme none --out ../../documentation_site/docs/api-reference/API",
92
- "prepare": "yarn build && node -e \"require('fs').renameSync('./plugin/build/index.d.ts', './plugin/build/index.d.cts')\"",
93
- "prepublishOnly.disabled": "expo-module prepublishOnly",
94
- "expo-module": "expo-module",
95
- "open:ios": "open -a \"Xcode\" ../../apps/playground/ios",
96
- "open:android": "open -a \"Android Studio\" ../../apps/playground/android",
97
- "size": "bundle-size && size-limit",
98
- "release": "./publish.sh",
99
- "agent:test:unit": "yarn test:android:unit",
100
- "agent:test:integration": "yarn test:android:instrumented",
101
- "agent:compilation:check": "yarn typecheck && yarn build"
102
- },
103
- "devDependencies": {
104
- "@expo/config-plugins": "~54.0.0",
105
- "@expo/npm-proofread": "^1.0.1",
106
- "@siteed/publisher": "^0.4.18",
107
- "@size-limit/preset-big-lib": "^11.1.4",
108
- "@types/jest": "^29.5.12",
109
- "@types/node": "^20.12.7",
110
- "@types/react": "~19.0.10",
111
- "@typescript-eslint/eslint-plugin": "^7.7.0",
112
- "@typescript-eslint/parser": "^7.7.0",
113
- "bundle-size": "^1.1.5",
114
- "eslint": "^8.56.0",
115
- "eslint-config-prettier": "^9.1.0",
116
- "eslint-config-universe": "^12.0.0",
117
- "eslint-plugin-import": "^2.29.1",
118
- "eslint-plugin-prettier": "^5.1.3",
119
- "eslint-plugin-promise": "^6.1.1",
120
- "eslint-plugin-react": "^7.34.1",
121
- "expo": "^54.0.0",
122
- "expo-module-scripts": "^4.1.7",
123
- "expo-modules-core": "~3.0.0",
124
- "jest": "^29.7.0",
125
- "prettier": "^3.2.5",
126
- "react": "19.1.0",
127
- "react-native": "0.81.5",
128
- "rimraf": "^6.0.1",
129
- "size-limit": "^11.1.4",
130
- "ts-node": "^10.9.2",
131
- "typedoc": "^0.27.4",
132
- "typedoc-plugin-markdown": "~4.4.2",
133
- "typescript": "~5.8.3"
134
- },
135
- "peerDependencies": {
136
- "expo": ">=52.0.0",
137
- "react": "*",
138
- "react-native": "*"
6
+ "main": "index.js",
7
+ "types": "index.d.ts",
8
+ "dependencies": {
9
+ "@siteed/audio-studio": "*"
139
10
  },
140
11
  "publishConfig": {
141
12
  "access": "public",