@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
@@ -1,129 +0,0 @@
1
- apply plugin: 'com.android.library'
2
- apply plugin: 'kotlin-android'
3
- apply plugin: 'maven-publish'
4
-
5
- group = 'net.siteed.audiostream'
6
- version = '0.1.0'
7
-
8
- // These properties prevent plugin conflicts in all Expo versions
9
- project.ext.isLibrary = true
10
- project.ext.preventPluginConflict = true
11
-
12
- buildscript {
13
- def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
14
- if (expoModulesCorePlugin.exists()) {
15
- apply from: expoModulesCorePlugin
16
- applyKotlinExpoModulesCorePlugin()
17
- }
18
-
19
- // Simple helper that allows the root project to override versions declared by this library.
20
- ext.safeExtGet = { prop, fallback ->
21
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
22
- }
23
-
24
- // Ensures backward compatibility
25
- ext.getKotlinVersion = {
26
- if (ext.has("kotlinVersion")) {
27
- ext.kotlinVersion()
28
- } else {
29
- ext.safeExtGet("kotlinVersion", "1.8.10")
30
- }
31
- }
32
-
33
- repositories {
34
- mavenCentral()
35
- google()
36
- }
37
-
38
- dependencies {
39
- classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${getKotlinVersion()}")
40
- }
41
- }
42
-
43
- afterEvaluate {
44
- publishing {
45
- publications {
46
- release(MavenPublication) {
47
- from components.release
48
- }
49
- }
50
- repositories {
51
- maven {
52
- url = mavenLocal().url
53
- }
54
- }
55
- }
56
- }
57
-
58
- android {
59
- compileSdkVersion safeExtGet("compileSdkVersion", 34)
60
-
61
- def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION
62
- if (agpVersion.tokenize('.')[0].toInteger() < 8) {
63
- compileOptions {
64
- sourceCompatibility JavaVersion.VERSION_17
65
- targetCompatibility JavaVersion.VERSION_17
66
- }
67
-
68
- tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
69
- kotlinOptions {
70
- jvmTarget = '17'
71
- }
72
- }
73
- }
74
-
75
- namespace "net.siteed.audiostream"
76
- defaultConfig {
77
- minSdkVersion safeExtGet("minSdkVersion", 21)
78
- targetSdkVersion safeExtGet("targetSdkVersion", 34)
79
- versionCode 1
80
- versionName "0.1.0"
81
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
82
- }
83
- lintOptions {
84
- abortOnError false
85
- }
86
- publishing {
87
- singleVariant("release") {
88
- withSourcesJar()
89
- }
90
- }
91
- }
92
-
93
- repositories {
94
- mavenCentral()
95
- google()
96
- }
97
-
98
- dependencies {
99
- implementation project(':expo-modules-core')
100
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}"
101
-
102
- // Add AndroidX dependencies
103
- implementation 'androidx.core:core-ktx:1.10.1'
104
- implementation 'androidx.annotation:annotation:1.6.0'
105
- implementation 'androidx.appcompat:appcompat:1.6.1'
106
-
107
- // Add Kotlinx Coroutines for main code
108
- implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3'
109
- implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3'
110
-
111
- // Add testing dependencies
112
- testImplementation 'junit:junit:4.13.2'
113
- testImplementation 'org.jetbrains.kotlin:kotlin-test:1.8.10'
114
- testImplementation 'org.jetbrains.kotlin:kotlin-test-junit:1.8.10'
115
-
116
- // Add Android instrumented test dependencies
117
- androidTestImplementation 'androidx.test:runner:1.5.2'
118
- androidTestImplementation 'androidx.test.ext:junit:1.1.5'
119
- androidTestImplementation 'androidx.test:core:1.5.0'
120
- androidTestImplementation 'junit:junit:4.13.2'
121
- androidTestImplementation 'androidx.test:rules:1.5.0'
122
- androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3'
123
- }
124
-
125
- kotlin {
126
- jvmToolchain {
127
- languageVersion.set(JavaLanguageVersion.of(17))
128
- }
129
- }
@@ -1,197 +0,0 @@
1
- package net.siteed.audiostream
2
-
3
- import androidx.test.ext.junit.runners.AndroidJUnit4
4
- import androidx.test.platform.app.InstrumentationRegistry
5
- import org.junit.Test
6
- import org.junit.Assert.*
7
- import org.junit.Before
8
- import org.junit.After
9
- import org.junit.runner.RunWith
10
- import java.io.File
11
- import kotlin.math.abs
12
-
13
- /**
14
- * Instrumented tests for AudioProcessor that require Android framework components.
15
- * These tests run on an Android device/emulator and have access to MediaExtractor/MediaCodec.
16
- */
17
- @RunWith(AndroidJUnit4::class)
18
- class AudioProcessorInstrumentedTest {
19
- private lateinit var context: android.content.Context
20
- private lateinit var audioProcessor: AudioProcessor
21
- private lateinit var testFilesDir: File
22
-
23
- @Before
24
- fun setUp() {
25
- context = InstrumentationRegistry.getInstrumentation().targetContext
26
- testFilesDir = context.filesDir
27
- audioProcessor = AudioProcessor(testFilesDir)
28
-
29
- // Copy test assets to files directory
30
- copyTestAssets()
31
- }
32
-
33
- @After
34
- fun tearDown() {
35
- // Clean up test files
36
- testFilesDir.listFiles()?.forEach { file ->
37
- if (file.name.endsWith(".wav")) {
38
- file.delete()
39
- }
40
- }
41
- }
42
-
43
- private fun copyTestAssets() {
44
- val assetManager = context.assets
45
- val testFiles = listOf("jfk.wav", "chorus.wav", "recorder_hello_world.wav")
46
-
47
- testFiles.forEach { fileName ->
48
- try {
49
- assetManager.open(fileName).use { input ->
50
- File(testFilesDir, fileName).outputStream().use { output ->
51
- input.copyTo(output)
52
- }
53
- }
54
- } catch (e: Exception) {
55
- // If asset doesn't exist, skip it
56
- println("Warning: Test asset $fileName not found")
57
- }
58
- }
59
- }
60
-
61
- // ========== Audio Loading Tests ==========
62
-
63
- @Test
64
- fun testLoadAudioFromAnyFormat_loadsWavFile() {
65
- // Given
66
- val wavFile = File(testFilesDir, "jfk.wav")
67
- assertTrue("Test file should exist", wavFile.exists())
68
-
69
- // When
70
- val audioData = audioProcessor.loadAudioFromAnyFormat(wavFile.absolutePath, null)
71
-
72
- // Then
73
- assertNotNull("Audio data should not be null", audioData)
74
- assertEquals("Sample rate should be 16000", 16000, audioData!!.sampleRate)
75
- assertEquals("Should be mono", 1, audioData.channels)
76
- assertEquals("Should be 16-bit", 16, audioData.bitDepth)
77
- assertTrue("Should have audio data", audioData.data.isNotEmpty())
78
- assertTrue("Duration should be positive", audioData.durationMs > 0)
79
- }
80
-
81
- @Test
82
- fun testLoadAudioFromAnyFormat_withDecodingConfig() {
83
- // Given
84
- val wavFile = File(testFilesDir, "jfk.wav")
85
- val config = DecodingConfig(
86
- targetSampleRate = 44100,
87
- targetChannels = 2, // Test channel conversion - bug fixed
88
- targetBitDepth = 16,
89
- normalizeAudio = false
90
- )
91
-
92
- // When
93
- val audioData = audioProcessor.loadAudioFromAnyFormat(wavFile.absolutePath, config)
94
-
95
- // Then
96
- assertNotNull("Audio data should not be null", audioData)
97
- assertEquals("Sample rate should be converted to 44100", 44100, audioData!!.sampleRate)
98
- assertEquals("Should be converted to stereo", 2, audioData.channels)
99
- }
100
-
101
- // ========== Audio Trimming Tests ==========
102
-
103
- @Test
104
- fun testTrimAudio_basicTrimming() {
105
- // Given
106
- val wavFile = File(testFilesDir, "jfk.wav")
107
- val startTimeMs = 1000L
108
- val endTimeMs = 3000L
109
-
110
- // When
111
- val trimmedAudio = audioProcessor.trimAudio(
112
- fileUri = wavFile.absolutePath,
113
- startTimeMs = startTimeMs,
114
- endTimeMs = endTimeMs,
115
- config = null,
116
- outputFileName = "trimmed_jfk.wav"
117
- )
118
-
119
- // Then
120
- assertNotNull("Trimmed audio should not be null", trimmedAudio)
121
-
122
- // Verify the trimmed file was created
123
- val trimmedFile = File(testFilesDir, "trimmed_jfk.wav")
124
- assertTrue("Trimmed file should exist", trimmedFile.exists())
125
- }
126
-
127
- // ========== Mel Spectrogram Tests ==========
128
-
129
- @Test
130
- fun testExtractMelSpectrogram_basicGeneration() {
131
- // Given
132
- val wavFile = File(testFilesDir, "jfk.wav")
133
- val audioData = audioProcessor.loadAudioFromAnyFormat(wavFile.absolutePath, null)
134
- assertNotNull("Audio data should load", audioData)
135
-
136
- // When
137
- val melSpectrogram = audioProcessor.extractMelSpectrogram(
138
- audioData = audioData!!,
139
- windowSizeMs = 25f,
140
- hopLengthMs = 10f,
141
- nMels = 40,
142
- fftLength = 512
143
- )
144
-
145
- // Then
146
- assertNotNull("Mel spectrogram should not be null", melSpectrogram)
147
- assertTrue("Should have time frames", melSpectrogram.spectrogram.isNotEmpty())
148
- assertEquals("Should have 40 mel bins", 40, melSpectrogram.spectrogram[0].size)
149
-
150
- // Verify timestamps
151
- assertTrue("Should have timestamps", melSpectrogram.timeStamps.isNotEmpty())
152
- assertEquals("Timestamps should match frames",
153
- melSpectrogram.spectrogram.size, melSpectrogram.timeStamps.size)
154
-
155
- // Verify frequencies
156
- assertEquals("Should have 40 frequency bins", 40, melSpectrogram.frequencies.size)
157
- assertTrue("Frequencies should be ascending",
158
- melSpectrogram.frequencies.zip(melSpectrogram.frequencies.drop(1))
159
- .all { (a, b) -> a < b })
160
- }
161
-
162
- // ========== Preview Generation Tests ==========
163
-
164
- @Test
165
- fun testGeneratePreview_basicPreview() {
166
- // Given
167
- val wavFile = File(testFilesDir, "chorus.wav")
168
- val audioData = audioProcessor.loadAudioFromAnyFormat(wavFile.absolutePath, null)
169
- assertNotNull("Audio data should load", audioData)
170
-
171
- val config = RecordingConfig(
172
- sampleRate = audioData!!.sampleRate,
173
- channels = audioData.channels,
174
- encoding = "pcm_16bit",
175
- segmentDurationMs = 20 // 50 points per second
176
- )
177
-
178
- // When
179
- val preview = audioProcessor.generatePreview(
180
- audioData = audioData,
181
- numberOfPoints = 100,
182
- startTimeMs = null,
183
- endTimeMs = null,
184
- config = config
185
- )
186
-
187
- // Then
188
- assertNotNull("Preview should not be null", preview)
189
- assertEquals("Should have 100 data points", 100, preview.dataPoints.size)
190
-
191
- // Verify amplitude range
192
- assertTrue("Min amplitude should be reasonable", preview.amplitudeRange.min >= 0)
193
- assertTrue("Max amplitude should be reasonable", preview.amplitudeRange.max <= 1)
194
- assertTrue("Max should be greater than min",
195
- preview.amplitudeRange.max > preview.amplitudeRange.min)
196
- }
197
- }