react-native-audio-api 0.8.3 → 0.9.0-nightly-7ecb495-20251008

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 (323) hide show
  1. package/README.md +40 -39
  2. package/RNAudioAPI.podspec +17 -12
  3. package/android/build.gradle +44 -4
  4. package/android/src/main/cpp/audioapi/CMakeLists.txt +65 -0
  5. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +29 -1
  6. package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +14 -0
  7. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +7 -1
  8. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +6 -1
  9. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +1 -1
  10. package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +36 -0
  11. package/android/src/main/cpp/audioapi/android/core/{AudioDecoder.cpp → utils/AudioDecoder.cpp} +79 -75
  12. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +11 -1
  13. package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +24 -0
  14. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +15 -2
  15. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +154 -38
  16. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +57 -0
  17. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +6 -46
  18. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +70 -6
  19. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.h +10 -66
  20. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +105 -0
  21. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +17 -91
  22. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +262 -6
  23. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +26 -241
  24. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +70 -0
  25. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +6 -50
  26. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +18 -0
  27. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +18 -0
  28. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +148 -0
  29. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.h +37 -0
  30. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +92 -0
  31. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +29 -0
  32. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +20 -0
  33. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.h +19 -0
  34. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +21 -0
  35. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +21 -0
  36. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +41 -0
  37. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +28 -0
  38. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +69 -0
  39. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +33 -0
  40. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +73 -0
  41. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +29 -0
  42. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +94 -0
  43. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +46 -0
  44. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +60 -0
  45. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +25 -0
  46. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +152 -0
  47. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +37 -0
  48. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +52 -0
  49. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h +25 -0
  50. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +19 -0
  51. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +21 -0
  52. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +55 -0
  53. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +27 -0
  54. package/common/cpp/audioapi/HostObjects/{RecorderAdapterNodeHostObject.h → sources/RecorderAdapterNodeHostObject.h} +1 -2
  55. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +22 -0
  56. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +28 -0
  57. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +18 -0
  58. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +133 -0
  59. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.h +28 -0
  60. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +58 -0
  61. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.h +26 -0
  62. package/common/cpp/audioapi/core/AudioContext.cpp +3 -4
  63. package/common/cpp/audioapi/core/AudioContext.h +2 -1
  64. package/common/cpp/audioapi/core/AudioNode.cpp +3 -3
  65. package/common/cpp/audioapi/core/AudioNode.h +2 -2
  66. package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
  67. package/common/cpp/audioapi/core/AudioParam.h +1 -1
  68. package/common/cpp/audioapi/core/BaseAudioContext.cpp +47 -38
  69. package/common/cpp/audioapi/core/BaseAudioContext.h +17 -16
  70. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +4 -5
  71. package/common/cpp/audioapi/core/OfflineAudioContext.h +2 -1
  72. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +3 -1
  73. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +1 -1
  74. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +1 -1
  75. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +3 -1
  76. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +1 -1
  77. package/common/cpp/audioapi/core/effects/GainNode.cpp +3 -1
  78. package/common/cpp/audioapi/core/effects/GainNode.h +1 -1
  79. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +1 -1
  80. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +18 -13
  81. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +1 -1
  82. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +89 -0
  83. package/common/cpp/audioapi/core/effects/WorkletNode.h +65 -0
  84. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +91 -0
  85. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +52 -0
  86. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +1 -1
  87. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +2 -2
  88. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +47 -10
  89. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +18 -3
  90. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +98 -14
  91. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +9 -3
  92. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +37 -44
  93. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +7 -9
  94. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +1 -6
  95. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +1 -1
  96. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +53 -0
  97. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +26 -0
  98. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +7 -2
  99. package/common/cpp/audioapi/core/sources/OscillatorNode.h +1 -1
  100. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +3 -1
  101. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +1 -1
  102. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +9 -1
  103. package/common/cpp/audioapi/core/sources/StreamerNode.h +1 -9
  104. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +84 -0
  105. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +47 -0
  106. package/common/cpp/audioapi/core/types/AudioFormat.h +16 -0
  107. package/common/cpp/audioapi/core/utils/AudioDecoder.h +36 -91
  108. package/common/cpp/audioapi/core/{AudioParamEventQueue.cpp → utils/AudioParamEventQueue.cpp} +13 -7
  109. package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +75 -0
  110. package/common/cpp/audioapi/core/utils/AudioStretcher.h +30 -0
  111. package/common/cpp/audioapi/core/{Constants.h → utils/Constants.h} +9 -0
  112. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +52 -0
  113. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +9 -0
  114. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +73 -0
  115. package/common/cpp/audioapi/dsp/Windows.cpp +1 -1
  116. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +1 -1
  117. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +2 -1
  118. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +14 -1
  119. package/common/cpp/audioapi/jsi/JsiHostObject.h +6 -12
  120. package/common/cpp/audioapi/jsi/JsiPromise.cpp +49 -0
  121. package/common/cpp/audioapi/jsi/JsiPromise.h +29 -1
  122. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +241 -282
  123. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +57 -19
  124. package/common/cpp/audioapi/utils/AudioBus.cpp +1 -1
  125. package/common/cpp/audioapi/utils/ThreadPool.hpp +104 -0
  126. package/common/cpp/test/AudioParamTest.cpp +204 -0
  127. package/common/cpp/test/CMakeLists.txt +13 -4
  128. package/common/cpp/test/GainTest.cpp +11 -10
  129. package/common/cpp/test/OscillatorTest.cpp +2 -1
  130. package/common/cpp/test/StereoPannerTest.cpp +129 -0
  131. package/ios/audioapi/ios/AudioAPIModule.mm +32 -5
  132. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +1 -1
  133. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
  134. package/ios/audioapi/ios/core/utils/AudioDecoder.mm +160 -0
  135. package/lib/commonjs/api.js +57 -3
  136. package/lib/commonjs/api.js.map +1 -1
  137. package/lib/commonjs/api.web.js +8 -0
  138. package/lib/commonjs/api.web.js.map +1 -1
  139. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +7 -7
  140. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
  141. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +1 -6
  142. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  143. package/lib/commonjs/core/AudioBufferSourceNode.js +15 -0
  144. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  145. package/lib/commonjs/core/AudioContext.js +10 -1
  146. package/lib/commonjs/core/AudioContext.js.map +1 -1
  147. package/lib/commonjs/core/AudioDecoder.js +48 -0
  148. package/lib/commonjs/core/AudioDecoder.js.map +1 -0
  149. package/lib/commonjs/core/AudioScheduledSourceNode.js +4 -4
  150. package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
  151. package/lib/commonjs/core/AudioStretcher.js +31 -0
  152. package/lib/commonjs/core/AudioStretcher.js.map +1 -0
  153. package/lib/commonjs/core/BaseAudioContext.js +76 -28
  154. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  155. package/lib/commonjs/core/ConstantSourceNode.js +17 -0
  156. package/lib/commonjs/core/ConstantSourceNode.js.map +1 -0
  157. package/lib/commonjs/core/OfflineAudioContext.js +11 -2
  158. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  159. package/lib/commonjs/core/OscillatorNode.js +6 -0
  160. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  161. package/lib/commonjs/core/WorkletNode.js +11 -0
  162. package/lib/commonjs/core/WorkletNode.js.map +1 -0
  163. package/lib/commonjs/core/WorkletProcessingNode.js +11 -0
  164. package/lib/commonjs/core/WorkletProcessingNode.js.map +1 -0
  165. package/lib/commonjs/core/WorkletSourceNode.js +11 -0
  166. package/lib/commonjs/core/WorkletSourceNode.js.map +1 -0
  167. package/lib/commonjs/hooks/{useSytemVolume.js → useSystemVolume.js} +1 -1
  168. package/lib/commonjs/hooks/useSystemVolume.js.map +1 -0
  169. package/lib/commonjs/utils/index.js +9 -0
  170. package/lib/commonjs/utils/index.js.map +1 -1
  171. package/lib/commonjs/web-core/AudioContext.js +4 -0
  172. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  173. package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -1
  174. package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
  175. package/lib/commonjs/web-core/ConstantSourceNode.js +17 -0
  176. package/lib/commonjs/web-core/ConstantSourceNode.js.map +1 -0
  177. package/lib/commonjs/web-core/OfflineAudioContext.js +4 -0
  178. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  179. package/lib/module/api.js +9 -3
  180. package/lib/module/api.js.map +1 -1
  181. package/lib/module/api.web.js +1 -0
  182. package/lib/module/api.web.js.map +1 -1
  183. package/lib/module/core/AudioBufferBaseSourceNode.js +7 -7
  184. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
  185. package/lib/module/core/AudioBufferQueueSourceNode.js +1 -6
  186. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  187. package/lib/module/core/AudioBufferSourceNode.js +15 -0
  188. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  189. package/lib/module/core/AudioContext.js +10 -1
  190. package/lib/module/core/AudioContext.js.map +1 -1
  191. package/lib/module/core/AudioDecoder.js +42 -0
  192. package/lib/module/core/AudioDecoder.js.map +1 -0
  193. package/lib/module/core/AudioScheduledSourceNode.js +4 -4
  194. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  195. package/lib/module/core/AudioStretcher.js +26 -0
  196. package/lib/module/core/AudioStretcher.js.map +1 -0
  197. package/lib/module/core/BaseAudioContext.js +76 -28
  198. package/lib/module/core/BaseAudioContext.js.map +1 -1
  199. package/lib/module/core/ConstantSourceNode.js +11 -0
  200. package/lib/module/core/ConstantSourceNode.js.map +1 -0
  201. package/lib/module/core/OfflineAudioContext.js +11 -2
  202. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  203. package/lib/module/core/OscillatorNode.js +6 -0
  204. package/lib/module/core/OscillatorNode.js.map +1 -1
  205. package/lib/module/core/WorkletNode.js +5 -0
  206. package/lib/module/core/WorkletNode.js.map +1 -0
  207. package/lib/module/core/WorkletProcessingNode.js +5 -0
  208. package/lib/module/core/WorkletProcessingNode.js.map +1 -0
  209. package/lib/module/core/WorkletSourceNode.js +5 -0
  210. package/lib/module/core/WorkletSourceNode.js.map +1 -0
  211. package/lib/module/hooks/{useSytemVolume.js → useSystemVolume.js} +1 -1
  212. package/lib/module/hooks/useSystemVolume.js.map +1 -0
  213. package/lib/module/utils/index.js +8 -0
  214. package/lib/module/utils/index.js.map +1 -1
  215. package/lib/module/web-core/AudioContext.js +4 -0
  216. package/lib/module/web-core/AudioContext.js.map +1 -1
  217. package/lib/module/web-core/AudioScheduledSourceNode.js +1 -1
  218. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  219. package/lib/module/web-core/ConstantSourceNode.js +11 -0
  220. package/lib/module/web-core/ConstantSourceNode.js.map +1 -0
  221. package/lib/module/web-core/OfflineAudioContext.js +4 -0
  222. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  223. package/lib/typescript/api.d.ts +13 -5
  224. package/lib/typescript/api.d.ts.map +1 -1
  225. package/lib/typescript/api.web.d.ts +1 -0
  226. package/lib/typescript/api.web.d.ts.map +1 -1
  227. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +2 -2
  228. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
  229. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
  230. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  231. package/lib/typescript/core/AudioBufferSourceNode.d.ts +4 -0
  232. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  233. package/lib/typescript/core/AudioContext.d.ts +1 -0
  234. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  235. package/lib/typescript/core/AudioDecoder.d.ts +4 -0
  236. package/lib/typescript/core/AudioDecoder.d.ts.map +1 -0
  237. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -1
  238. package/lib/typescript/core/AudioStretcher.d.ts +3 -0
  239. package/lib/typescript/core/AudioStretcher.d.ts.map +1 -0
  240. package/lib/typescript/core/BaseAudioContext.d.ts +21 -16
  241. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  242. package/lib/typescript/core/ConstantSourceNode.d.ts +9 -0
  243. package/lib/typescript/core/ConstantSourceNode.d.ts.map +1 -0
  244. package/lib/typescript/core/OfflineAudioContext.d.ts +1 -0
  245. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  246. package/lib/typescript/core/OscillatorNode.d.ts +3 -0
  247. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  248. package/lib/typescript/core/WorkletNode.d.ts +4 -0
  249. package/lib/typescript/core/WorkletNode.d.ts.map +1 -0
  250. package/lib/typescript/core/WorkletProcessingNode.d.ts +4 -0
  251. package/lib/typescript/core/WorkletProcessingNode.d.ts.map +1 -0
  252. package/lib/typescript/core/WorkletSourceNode.d.ts +4 -0
  253. package/lib/typescript/core/WorkletSourceNode.d.ts.map +1 -0
  254. package/lib/typescript/events/types.d.ts +2 -0
  255. package/lib/typescript/events/types.d.ts.map +1 -1
  256. package/lib/typescript/hooks/{useSytemVolume.d.ts → useSystemVolume.d.ts} +1 -1
  257. package/lib/typescript/hooks/useSystemVolume.d.ts.map +1 -0
  258. package/lib/typescript/interfaces.d.ts +31 -6
  259. package/lib/typescript/interfaces.d.ts.map +1 -1
  260. package/lib/typescript/types.d.ts +2 -1
  261. package/lib/typescript/types.d.ts.map +1 -1
  262. package/lib/typescript/utils/index.d.ts +8 -0
  263. package/lib/typescript/utils/index.d.ts.map +1 -1
  264. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +1 -1
  265. package/lib/typescript/web-core/AudioContext.d.ts +4 -2
  266. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  267. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -1
  268. package/lib/typescript/web-core/BaseAudioContext.d.ts +2 -0
  269. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  270. package/lib/typescript/web-core/ConstantSourceNode.d.ts +8 -0
  271. package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +1 -0
  272. package/lib/typescript/web-core/OfflineAudioContext.d.ts +4 -2
  273. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  274. package/package.json +3 -2
  275. package/src/api.ts +22 -3
  276. package/src/api.web.ts +1 -0
  277. package/src/core/AudioBufferBaseSourceNode.ts +9 -9
  278. package/src/core/AudioBufferQueueSourceNode.ts +1 -9
  279. package/src/core/AudioBufferSourceNode.ts +28 -0
  280. package/src/core/AudioContext.ts +12 -1
  281. package/src/core/AudioDecoder.ts +78 -0
  282. package/src/core/AudioScheduledSourceNode.ts +5 -5
  283. package/src/core/AudioStretcher.ts +43 -0
  284. package/src/core/BaseAudioContext.ts +174 -41
  285. package/src/core/ConstantSourceNode.ts +13 -0
  286. package/src/core/OfflineAudioContext.ts +18 -2
  287. package/src/core/OscillatorNode.ts +11 -0
  288. package/src/core/WorkletNode.ts +3 -0
  289. package/src/core/WorkletProcessingNode.ts +3 -0
  290. package/src/core/WorkletSourceNode.ts +3 -0
  291. package/src/events/types.ts +2 -0
  292. package/src/interfaces.ts +85 -11
  293. package/src/types.ts +3 -1
  294. package/src/utils/index.ts +21 -0
  295. package/src/web-core/AudioBufferSourceNode.tsx +1 -1
  296. package/src/web-core/AudioContext.tsx +7 -2
  297. package/src/web-core/AudioScheduledSourceNode.tsx +1 -1
  298. package/src/web-core/BaseAudioContext.tsx +2 -0
  299. package/src/web-core/ConstantSourceNode.tsx +12 -0
  300. package/src/web-core/OfflineAudioContext.tsx +7 -2
  301. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +0 -149
  302. package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +0 -76
  303. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +0 -120
  304. package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +0 -67
  305. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +0 -142
  306. package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +0 -86
  307. package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +0 -56
  308. package/common/cpp/audioapi/HostObjects/BiquadFilterNodeHostObject.h +0 -89
  309. package/common/cpp/audioapi/HostObjects/GainNodeHostObject.h +0 -27
  310. package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +0 -65
  311. package/common/cpp/audioapi/HostObjects/StereoPannerNodeHostObject.h +0 -29
  312. package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +0 -30
  313. package/common/cpp/audioapi/events/AudioEventHandlerRegistryHostObject.h +0 -48
  314. package/ios/audioapi/ios/core/AudioDecoder.mm +0 -156
  315. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.h +0 -7
  316. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.mm +0 -12
  317. package/lib/commonjs/hooks/useSytemVolume.js.map +0 -1
  318. package/lib/module/hooks/useSytemVolume.js.map +0 -1
  319. package/lib/typescript/hooks/useSytemVolume.d.ts.map +0 -1
  320. /package/common/cpp/audioapi/HostObjects/{AudioDestinationNodeHostObject.h → destinations/AudioDestinationNodeHostObject.h} +0 -0
  321. /package/common/cpp/audioapi/HostObjects/{PeriodicWaveHostObject.h → effects/PeriodicWaveHostObject.h} +0 -0
  322. /package/common/cpp/audioapi/core/{AudioParamEventQueue.h → utils/AudioParamEventQueue.h} +0 -0
  323. /package/src/hooks/{useSytemVolume.ts → useSystemVolume.ts} +0 -0
@@ -1,23 +1,30 @@
1
- import { WindowType, ContextState, OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation } from './types';
2
- import { AudioEventName, AudioEventCallback } from './events/types';
1
+ import { AudioEventCallback, AudioEventName } from './events/types';
2
+ import { BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, OscillatorType, WindowType } from './types';
3
+ export type WorkletNodeCallback = (audioData: Array<ArrayBuffer>, channelCount: number) => void;
4
+ export type WorkletSourceNodeCallback = (audioData: Array<ArrayBuffer>, framesToProcess: number, currentTime: number, startOffset: number) => void;
5
+ export type WorkletProcessingNodeCallback = (inputData: Array<ArrayBuffer>, outputData: Array<ArrayBuffer>, framesToProcess: number, currentTime: number) => void;
6
+ export type ShareableWorkletCallback = WorkletNodeCallback | WorkletSourceNodeCallback | WorkletProcessingNodeCallback;
3
7
  export interface IBaseAudioContext {
4
8
  readonly destination: IAudioDestinationNode;
5
9
  readonly state: ContextState;
6
10
  readonly sampleRate: number;
7
11
  readonly currentTime: number;
12
+ readonly decoder: IAudioDecoder;
13
+ readonly stretcher: IAudioStretcher;
8
14
  createRecorderAdapter(): IRecorderAdapterNode;
15
+ createWorkletSourceNode(shareableWorklet: ShareableWorkletCallback, shouldUseUiRuntime: boolean): IWorkletSourceNode;
16
+ createWorkletNode(shareableWorklet: ShareableWorkletCallback, shouldUseUiRuntime: boolean, bufferLength: number, inputChannelCount: number): IWorkletNode;
17
+ createWorkletProcessingNode(shareableWorklet: ShareableWorkletCallback, shouldUseUiRuntime: boolean): IWorkletProcessingNode;
9
18
  createOscillator(): IOscillatorNode;
19
+ createConstantSource(): IConstantSourceNode;
10
20
  createGain(): IGainNode;
11
21
  createStereoPanner(): IStereoPannerNode;
12
22
  createBiquadFilter: () => IBiquadFilterNode;
13
23
  createBufferSource: (pitchCorrection: boolean) => IAudioBufferSourceNode;
14
- createBufferQueueSource: () => IAudioBufferQueueSourceNode;
24
+ createBufferQueueSource: (pitchCorrection: boolean) => IAudioBufferQueueSourceNode;
15
25
  createBuffer: (channels: number, length: number, sampleRate: number) => IAudioBuffer;
16
26
  createPeriodicWave: (real: Float32Array, imag: Float32Array, disableNormalization: boolean) => IPeriodicWave;
17
27
  createAnalyser: () => IAnalyserNode;
18
- decodeAudioDataSource: (sourcePath: string) => Promise<IAudioBuffer>;
19
- decodeAudioData: (arrayBuffer: ArrayBuffer) => Promise<IAudioBuffer>;
20
- decodePCMAudioDataInBase64: (b64: string, playbackRate: number) => Promise<IAudioBuffer>;
21
28
  createStreamer: () => IStreamerNode;
22
29
  }
23
30
  export interface IAudioContext extends IBaseAudioContext {
@@ -76,6 +83,9 @@ export interface IOscillatorNode extends IAudioScheduledSourceNode {
76
83
  export interface IStreamerNode extends IAudioNode {
77
84
  initialize(streamPath: string): boolean;
78
85
  }
86
+ export interface IConstantSourceNode extends IAudioScheduledSourceNode {
87
+ readonly offset: IAudioParam;
88
+ }
79
89
  export interface IAudioBufferSourceNode extends IAudioBufferBaseSourceNode {
80
90
  buffer: IAudioBuffer | null;
81
91
  loop: boolean;
@@ -84,6 +94,7 @@ export interface IAudioBufferSourceNode extends IAudioBufferBaseSourceNode {
84
94
  loopEnd: number;
85
95
  start: (when?: number, offset?: number, duration?: number) => void;
86
96
  setBuffer: (audioBuffer: IAudioBuffer | null) => void;
97
+ onLoopEnded: string;
87
98
  }
88
99
  export interface IAudioBufferQueueSourceNode extends IAudioBufferBaseSourceNode {
89
100
  dequeueBuffer: (bufferId: number) => void;
@@ -129,6 +140,12 @@ export interface IAnalyserNode extends IAudioNode {
129
140
  }
130
141
  export interface IRecorderAdapterNode extends IAudioNode {
131
142
  }
143
+ export interface IWorkletNode extends IAudioNode {
144
+ }
145
+ export interface IWorkletSourceNode extends IAudioScheduledSourceNode {
146
+ }
147
+ export interface IWorkletProcessingNode extends IAudioNode {
148
+ }
132
149
  export interface IAudioRecorder {
133
150
  start: () => void;
134
151
  stop: () => void;
@@ -136,6 +153,14 @@ export interface IAudioRecorder {
136
153
  disconnect: () => void;
137
154
  onAudioReady: string;
138
155
  }
156
+ export interface IAudioDecoder {
157
+ decodeWithMemoryBlock: (arrayBuffer: ArrayBuffer, sampleRate?: number) => Promise<IAudioBuffer>;
158
+ decodeWithFilePath: (sourcePath: string, sampleRate?: number) => Promise<IAudioBuffer>;
159
+ decodeWithPCMInBase64: (b64: string, inputSampleRate: number, inputChannelCount: number, interleaved?: boolean) => Promise<IAudioBuffer>;
160
+ }
161
+ export interface IAudioStretcher {
162
+ changePlaybackSpeed: (arrayBuffer: AudioBuffer, playbackSpeed: number) => Promise<IAudioBuffer>;
163
+ }
139
164
  export interface IAudioEventEmitter {
140
165
  addAudioEventListener<Name extends AudioEventName>(name: Name, callback: AudioEventCallback<Name>): string;
141
166
  removeAudioEventListener<Name extends AudioEventName>(name: Name, subscriptionId: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,mBAAmB,GAAG,CAChC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,EAC7B,YAAY,EAAE,MAAM,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,yBAAyB,GAAG,CACtC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,EAC7B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,6BAA6B,GAAG,CAC1C,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,EAC7B,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,EAC9B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,yBAAyB,GACzB,6BAA6B,CAAC;AAElC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IAEpC,qBAAqB,IAAI,oBAAoB,CAAC;IAC9C,uBAAuB,CACrB,gBAAgB,EAAE,wBAAwB,EAC1C,kBAAkB,EAAE,OAAO,GAC1B,kBAAkB,CAAC;IACtB,iBAAiB,CACf,gBAAgB,EAAE,wBAAwB,EAC1C,kBAAkB,EAAE,OAAO,EAC3B,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,GACxB,YAAY,CAAC;IAChB,2BAA2B,CACzB,gBAAgB,EAAE,wBAAwB,EAC1C,kBAAkB,EAAE,OAAO,GAC1B,sBAAsB,CAAC;IAC1B,gBAAgB,IAAI,eAAe,CAAC;IACpC,oBAAoB,IAAI,mBAAmB,CAAC;IAC5C,UAAU,IAAI,SAAS,CAAC;IACxB,kBAAkB,IAAI,iBAAiB,CAAC;IACxC,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;IAC5C,kBAAkB,EAAE,CAAC,eAAe,EAAE,OAAO,KAAK,sBAAsB,CAAC;IACzE,uBAAuB,EAAE,CACvB,eAAe,EAAE,OAAO,KACrB,2BAA2B,CAAC;IACjC,YAAY,EAAE,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,KACf,YAAY,CAAC;IAClB,kBAAkB,EAAE,CAClB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,oBAAoB,EAAE,OAAO,KAC1B,aAAa,CAAC;IACnB,cAAc,EAAE,MAAM,aAAa,CAAC;IACpC,cAAc,EAAE,MAAM,aAAa,CAAC;CACrC;AAED,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEtD,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC;IACzD,UAAU,EAAE,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IAEvB,oBAAoB,CAClB,cAAc,EAAE,YAAY,EAC5B,iBAAiB,EAAE,YAAY,EAC/B,mBAAmB,EAAE,YAAY,GAChC,IAAI,CAAC;CACT;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;CAAG;AAE5D,MAAM,WAAW,yBAA0B,SAAQ,UAAU;IAC3D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAG7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAC3E,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,WAAW,CAAC;IAG1B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,eAAgB,SAAQ,yBAAyB;IAChE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,IAAI,EAAE,cAAc,CAAC;IAErB,eAAe,CAAC,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,mBAAoB,SAAQ,yBAAyB;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,SAAS,EAAE,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAGtD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BACf,SAAQ,0BAA0B;IAClC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,IAAI,CAAC;IAGzB,aAAa,EAAE,CAAC,WAAW,EAAE,YAAY,KAAK,MAAM,CAAC;IACrD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IAC9C,eAAe,CACb,WAAW,EAAE,YAAY,EACzB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,IAAI,CAAC;IACR,aAAa,CACX,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,IAAI,CAAC;CACT;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,4BAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE,eAAe,EAAE,CACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,KACjB,IAAI,CAAC;IACV,mBAAmB,EAAE,CACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;IACV,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,aAAa;CAAG;AAEjC,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;IAEnB,qBAAqB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACrD,oBAAoB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClD,sBAAsB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,qBAAqB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,oBAAqB,SAAQ,UAAU;CAAG;AAE3D,MAAM,WAAW,YAAa,SAAQ,UAAU;CAAG;AAEnD,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB;CAAG;AAExE,MAAM,WAAW,sBAAuB,SAAQ,UAAU;CAAG;AAE7D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,MAAM,IAAI,CAAC;IAGvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,qBAAqB,EAAE,CACrB,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,kBAAkB,EAAE,CAClB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,qBAAqB,EAAE,CACrB,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,OAAO,KAClB,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,mBAAmB,EAAE,CACnB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,CAAC,IAAI,SAAS,cAAc,EAC/C,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,GACjC,MAAM,CAAC;IACV,wBAAwB,CAAC,IAAI,SAAS,cAAc,EAClD,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,MAAM,GACrB,IAAI,CAAC;CACT"}
@@ -2,6 +2,7 @@ export type ChannelCountMode = 'max' | 'clamped-max' | 'explicit';
2
2
  export type ChannelInterpretation = 'speakers' | 'discrete';
3
3
  export type BiquadFilterType = 'lowpass' | 'highpass' | 'bandpass' | 'lowshelf' | 'highshelf' | 'peaking' | 'notch' | 'allpass';
4
4
  export type ContextState = 'running' | 'closed' | `suspended`;
5
+ export type AudioWorkletRuntime = 'AudioRuntime' | 'UIRuntime';
5
6
  export type OscillatorType = 'sine' | 'square' | 'sawtooth' | 'triangle' | 'custom';
6
7
  export interface PeriodicWaveConstraints {
7
8
  disableNormalization: boolean;
@@ -20,7 +21,7 @@ export interface AudioRecorderOptions {
20
21
  bufferLengthInSamples: number;
21
22
  }
22
23
  export type WindowType = 'blackman' | 'hann';
23
- export interface AudioBufferSourceNodeOptions {
24
+ export interface AudioBufferBaseSourceNodeOptions {
24
25
  pitchCorrection: boolean;
25
26
  }
26
27
  export type ProcessorMode = 'processInPlace' | 'processThrough';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,aAAa,GAAG,UAAU,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,QAAQ,GACR,UAAU,GACV,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,aAAa,GAAG,UAAU,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,WAAW,CAAC;AAE/D,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,QAAQ,GACR,UAAU,GACV,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,gCAAgC;IAC/C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,CAAC"}
@@ -1,2 +1,10 @@
1
+ import type { ShareableWorkletCallback } from '../interfaces';
2
+ interface SimplifiedWorkletModule {
3
+ makeShareableCloneRecursive: (workletCallback: ShareableWorkletCallback) => ShareableWorkletCallback;
4
+ createWorkletRuntime: (options?: any) => any;
5
+ }
1
6
  export declare function clamp(value: number, min: number, max: number): number;
7
+ export declare let isWorkletsAvailable: boolean;
8
+ export declare let workletsModule: SimplifiedWorkletModule;
9
+ export {};
2
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,UAAU,uBAAuB;IAC/B,2BAA2B,EAAE,CAC3B,eAAe,EAAE,wBAAwB,KACtC,wBAAwB,CAAC;IAG9B,oBAAoB,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;CAC9C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,eAAO,IAAI,mBAAmB,SAAQ,CAAC;AACvC,eAAO,IAAI,cAAc,EAAE,uBAAuB,CAAC"}
@@ -19,7 +19,7 @@ interface IStretcherNode extends globalThis.AudioNode {
19
19
  context: globalThis.BaseAudioContext;
20
20
  numberOfInputs: number;
21
21
  numberOfOutputs: number;
22
- onended: ((this: globalThis.AudioScheduledSourceNode, ev: Event) => unknown) | null;
22
+ onEnded: ((this: globalThis.AudioScheduledSourceNode, ev: Event) => unknown) | null;
23
23
  addEventListener: (type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions | undefined) => void;
24
24
  dispatchEvent: (event: Event) => boolean;
25
25
  removeEventListener: (type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | EventListenerOptions | undefined) => void;
@@ -1,4 +1,4 @@
1
- import { ContextState, PeriodicWaveConstraints, AudioContextOptions, AudioBufferSourceNodeOptions } from '../types';
1
+ import { ContextState, PeriodicWaveConstraints, AudioContextOptions, AudioBufferBaseSourceNodeOptions } from '../types';
2
2
  import BaseAudioContext from './BaseAudioContext';
3
3
  import AnalyserNode from './AnalyserNode';
4
4
  import AudioDestinationNode from './AudioDestinationNode';
@@ -9,6 +9,7 @@ import GainNode from './GainNode';
9
9
  import OscillatorNode from './OscillatorNode';
10
10
  import PeriodicWave from './PeriodicWave';
11
11
  import StereoPannerNode from './StereoPannerNode';
12
+ import ConstantSourceNode from './ConstantSourceNode';
12
13
  export default class AudioContext implements BaseAudioContext {
13
14
  readonly context: globalThis.AudioContext;
14
15
  readonly destination: AudioDestinationNode;
@@ -17,10 +18,11 @@ export default class AudioContext implements BaseAudioContext {
17
18
  get currentTime(): number;
18
19
  get state(): ContextState;
19
20
  createOscillator(): OscillatorNode;
21
+ createConstantSource(): ConstantSourceNode;
20
22
  createGain(): GainNode;
21
23
  createStereoPanner(): StereoPannerNode;
22
24
  createBiquadFilter(): BiquadFilterNode;
23
- createBufferSource(options?: AudioBufferSourceNodeOptions): Promise<AudioBufferSourceNode>;
25
+ createBufferSource(options?: AudioBufferBaseSourceNodeOptions): Promise<AudioBufferSourceNode>;
24
26
  createBuffer(numOfChannels: number, length: number, sampleRate: number): AudioBuffer;
25
27
  createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
26
28
  createAnalyser(): AnalyserNode;
@@ -1 +1 @@
1
- {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAIlD,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,gBAAgB;IAC3D,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC;IAE1C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,CAAC,EAAE,mBAAmB,EAAE,cAAc,GAAE,OAAe;IAiB1E,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAIhC,kBAAkB,CACtB,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC,qBAAqB,CAAC;IAgBjC,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAYf,cAAc,IAAI,YAAY;IAIxB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
1
+ {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,UAAU,CAAC;AAElB,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAGlD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,gBAAgB;IAC3D,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC;IAE1C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,CAAC,EAAE,mBAAmB,EAAE,cAAc,GAAE,OAAe;IAiB1E,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,oBAAoB,IAAI,kBAAkB;IAI1C,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAIhC,kBAAkB,CACtB,OAAO,CAAC,EAAE,gCAAgC,GACzC,OAAO,CAAC,qBAAqB,CAAC;IAgBjC,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAYf,cAAc,IAAI,YAAY;IAIxB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -4,6 +4,6 @@ export default class AudioScheduledSourceNode extends AudioNode {
4
4
  protected hasBeenStarted: boolean;
5
5
  start(when?: number): void;
6
6
  stop(when?: number): void;
7
- set onended(callback: (event: EventEmptyType) => void);
7
+ set onEnded(callback: (event: EventEmptyType) => void);
8
8
  }
9
9
  //# sourceMappingURL=AudioScheduledSourceNode.d.ts.map
@@ -8,6 +8,7 @@ import GainNode from './GainNode';
8
8
  import OscillatorNode from './OscillatorNode';
9
9
  import PeriodicWave from './PeriodicWave';
10
10
  import StereoPannerNode from './StereoPannerNode';
11
+ import ConstantSourceNode from './ConstantSourceNode';
11
12
  export default interface BaseAudioContext {
12
13
  readonly context: globalThis.BaseAudioContext;
13
14
  readonly destination: AudioDestinationNode;
@@ -15,6 +16,7 @@ export default interface BaseAudioContext {
15
16
  get currentTime(): number;
16
17
  get state(): ContextState;
17
18
  createOscillator(): OscillatorNode;
19
+ createConstantSource(): ConstantSourceNode;
18
20
  createGain(): GainNode;
19
21
  createStereoPanner(): StereoPannerNode;
20
22
  createBiquadFilter(): BiquadFilterNode;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/BaseAudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACvC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAE9C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,IAAI,WAAW,IAAI,MAAM,CAAC;IAC1B,IAAI,KAAK,IAAI,YAAY,CAAC;IAC1B,gBAAgB,IAAI,cAAc,CAAC;IACnC,UAAU,IAAI,QAAQ,CAAC;IACvB,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrD,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW,CAAC;IACf,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY,CAAC;IAChB,cAAc,IAAI,YAAY,CAAC;IAC/B,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5D,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACjE"}
1
+ {"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/BaseAudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACvC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAE9C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,IAAI,WAAW,IAAI,MAAM,CAAC;IAC1B,IAAI,KAAK,IAAI,YAAY,CAAC;IAC1B,gBAAgB,IAAI,cAAc,CAAC;IACnC,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C,UAAU,IAAI,QAAQ,CAAC;IACvB,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrD,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW,CAAC;IACf,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY,CAAC;IAChB,cAAc,IAAI,YAAY,CAAC;IAC/B,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5D,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACjE"}
@@ -0,0 +1,8 @@
1
+ import AudioParam from './AudioParam';
2
+ import AudioScheduledSourceNode from './AudioScheduledSourceNode';
3
+ import BaseAudioContext from './BaseAudioContext';
4
+ export default class ConstantSourceNode extends AudioScheduledSourceNode {
5
+ readonly offset: AudioParam;
6
+ constructor(context: BaseAudioContext, node: globalThis.ConstantSourceNode);
7
+ }
8
+ //# sourceMappingURL=ConstantSourceNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConstantSourceNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/ConstantSourceNode.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,wBAAwB;IACtE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,kBAAkB;CAI3E"}
@@ -1,4 +1,4 @@
1
- import { ContextState, PeriodicWaveConstraints, OfflineAudioContextOptions, AudioBufferSourceNodeOptions } from '../types';
1
+ import { ContextState, PeriodicWaveConstraints, OfflineAudioContextOptions, AudioBufferBaseSourceNodeOptions } from '../types';
2
2
  import BaseAudioContext from './BaseAudioContext';
3
3
  import AnalyserNode from './AnalyserNode';
4
4
  import AudioDestinationNode from './AudioDestinationNode';
@@ -9,6 +9,7 @@ import GainNode from './GainNode';
9
9
  import OscillatorNode from './OscillatorNode';
10
10
  import PeriodicWave from './PeriodicWave';
11
11
  import StereoPannerNode from './StereoPannerNode';
12
+ import ConstantSourceNode from './ConstantSourceNode';
12
13
  export default class OfflineAudioContext implements BaseAudioContext {
13
14
  readonly context: globalThis.OfflineAudioContext;
14
15
  readonly destination: AudioDestinationNode;
@@ -18,10 +19,11 @@ export default class OfflineAudioContext implements BaseAudioContext {
18
19
  get currentTime(): number;
19
20
  get state(): ContextState;
20
21
  createOscillator(): OscillatorNode;
22
+ createConstantSource(): ConstantSourceNode;
21
23
  createGain(): GainNode;
22
24
  createStereoPanner(): StereoPannerNode;
23
25
  createBiquadFilter(): BiquadFilterNode;
24
- createBufferSource(options?: AudioBufferSourceNodeOptions): Promise<AudioBufferSourceNode>;
26
+ createBufferSource(options?: AudioBufferBaseSourceNodeOptions): Promise<AudioBufferSourceNode>;
25
27
  createBuffer(numOfChannels: number, length: number, sampleRate: number): AudioBuffer;
26
28
  createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
27
29
  createAnalyser(): AnalyserNode;
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineAudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/OfflineAudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAIlD,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,gBAAgB;IAClE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC;IAEjD,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,0BAA0B;gBACnC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAsBxE,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAIhC,kBAAkB,CACtB,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC,qBAAqB,CAAC;IAgBjC,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAYf,cAAc,IAAI,YAAY;IAIxB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/D,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAItC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD"}
1
+ {"version":3,"file":"OfflineAudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/OfflineAudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,UAAU,CAAC;AAElB,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAItD,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,gBAAgB;IAClE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC;IAEjD,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,0BAA0B;gBACnC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAsBxE,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,oBAAoB,IAAI,kBAAkB;IAI1C,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAIhC,kBAAkB,CACtB,OAAO,CAAC,EAAE,gCAAgC,GACzC,OAAO,CAAC,qBAAqB,CAAC;IAgBjC,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAYf,cAAc,IAAI,YAAY;IAIxB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/D,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAItC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.8.3",
3
+ "version": "0.9.0-nightly-7ecb495-20251008",
4
4
  "description": "react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification",
5
5
  "bin": {
6
6
  "setup-rn-audio-api-web": "./scripts/setup-rn-audio-api-web.js"
@@ -80,7 +80,8 @@
80
80
  },
81
81
  "peerDependencies": {
82
82
  "react": "*",
83
- "react-native": "*"
83
+ "react-native": "*",
84
+ "react-native-worklets": "~0.6.0"
84
85
  },
85
86
  "devDependencies": {
86
87
  "@babel/cli": "^7.20.0",
package/src/api.ts CHANGED
@@ -2,7 +2,9 @@ import { NativeAudioAPIModule } from './specs';
2
2
  import { AudioRecorderOptions } from './types';
3
3
  import type {
4
4
  IAudioContext,
5
+ IAudioDecoder,
5
6
  IAudioRecorder,
7
+ IAudioStretcher,
6
8
  IOfflineAudioContext,
7
9
  IAudioEventEmitter,
8
10
  } from './interfaces';
@@ -11,16 +13,24 @@ import type {
11
13
  declare global {
12
14
  var createAudioContext: (
13
15
  sampleRate: number,
14
- initSuspended: boolean
16
+ initSuspended: boolean,
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ audioWorkletRuntime: any
15
19
  ) => IAudioContext;
16
20
  var createOfflineAudioContext: (
17
21
  numberOfChannels: number,
18
22
  length: number,
19
- sampleRate: number
23
+ sampleRate: number,
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ audioWorkletRuntime: any
20
26
  ) => IOfflineAudioContext;
21
27
 
22
28
  var createAudioRecorder: (options: AudioRecorderOptions) => IAudioRecorder;
23
29
 
30
+ var createAudioDecoder: () => IAudioDecoder;
31
+
32
+ var createAudioStretcher: () => IAudioStretcher;
33
+
24
34
  var AudioEventEmitter: IAudioEventEmitter;
25
35
  }
26
36
  /* eslint-disable no-var */
@@ -29,6 +39,8 @@ if (
29
39
  global.createAudioContext == null ||
30
40
  global.createOfflineAudioContext == null ||
31
41
  global.createAudioRecorder == null ||
42
+ global.createAudioDecoder == null ||
43
+ global.createAudioStretcher == null ||
32
44
  global.AudioEventEmitter == null
33
45
  ) {
34
46
  if (!NativeAudioAPIModule) {
@@ -40,6 +52,9 @@ if (
40
52
  NativeAudioAPIModule.install();
41
53
  }
42
54
 
55
+ export { default as WorkletNode } from './core/WorkletNode';
56
+ export { default as WorkletSourceNode } from './core/WorkletSourceNode';
57
+ export { default as WorkletProcessingNode } from './core/WorkletProcessingNode';
43
58
  export { default as RecorderAdapterNode } from './core/RecorderAdapterNode';
44
59
  export { default as AudioBuffer } from './core/AudioBuffer';
45
60
  export { default as AudioBufferSourceNode } from './core/AudioBufferSourceNode';
@@ -58,8 +73,11 @@ export { default as OscillatorNode } from './core/OscillatorNode';
58
73
  export { default as StereoPannerNode } from './core/StereoPannerNode';
59
74
  export { default as AudioRecorder } from './core/AudioRecorder';
60
75
  export { default as StreamerNode } from './core/StreamerNode';
76
+ export { default as ConstantSourceNode } from './core/ConstantSourceNode';
61
77
  export { default as AudioManager } from './system';
62
- export { default as useSystemVolume } from './hooks/useSytemVolume';
78
+ export { default as useSystemVolume } from './hooks/useSystemVolume';
79
+ export { decodeAudioData, decodePCMInBase64 } from './core/AudioDecoder';
80
+ export { default as changePlaybackSpeed } from './core/AudioStretcher';
63
81
 
64
82
  export {
65
83
  OscillatorType,
@@ -69,6 +87,7 @@ export {
69
87
  ContextState,
70
88
  WindowType,
71
89
  PeriodicWaveConstraints,
90
+ AudioWorkletRuntime,
72
91
  } from './types';
73
92
 
74
93
  export {
package/src/api.web.ts CHANGED
@@ -12,6 +12,7 @@ export { default as BiquadFilterNode } from './web-core/BiquadFilterNode';
12
12
  export { default as GainNode } from './web-core/GainNode';
13
13
  export { default as OscillatorNode } from './web-core/OscillatorNode';
14
14
  export { default as StereoPannerNode } from './web-core/StereoPannerNode';
15
+ export { default as ConstantSourceNode } from './web-core/ConstantSourceNode';
15
16
 
16
17
  export * from './web-core/custom';
17
18
 
@@ -8,8 +8,8 @@ import AudioScheduledSourceNode from './AudioScheduledSourceNode';
8
8
  export default class AudioBufferBaseSourceNode extends AudioScheduledSourceNode {
9
9
  readonly playbackRate: AudioParam;
10
10
  readonly detune: AudioParam;
11
- private positionChangedSubscription?: AudioEventSubscription;
12
- private positionChangedCallback?: (event: EventTypeWithValue) => void;
11
+ private onPositionChangedSubscription?: AudioEventSubscription;
12
+ private onPositionChangedCallback?: (event: EventTypeWithValue) => void;
13
13
 
14
14
  constructor(context: BaseAudioContext, node: IAudioBufferBaseSourceNode) {
15
15
  super(context, node);
@@ -21,7 +21,7 @@ export default class AudioBufferBaseSourceNode extends AudioScheduledSourceNode
21
21
  public get onPositionChanged():
22
22
  | ((event: EventTypeWithValue) => void)
23
23
  | undefined {
24
- return this.positionChangedCallback;
24
+ return this.onPositionChangedCallback;
25
25
  }
26
26
 
27
27
  public set onPositionChanged(
@@ -29,19 +29,19 @@ export default class AudioBufferBaseSourceNode extends AudioScheduledSourceNode
29
29
  ) {
30
30
  if (!callback) {
31
31
  (this.node as IAudioBufferBaseSourceNode).onPositionChanged = '0';
32
- this.positionChangedSubscription?.remove();
33
- this.positionChangedSubscription = undefined;
34
- this.positionChangedCallback = undefined;
32
+ this.onPositionChangedSubscription?.remove();
33
+ this.onPositionChangedSubscription = undefined;
34
+ this.onPositionChangedCallback = undefined;
35
35
 
36
36
  return;
37
37
  }
38
38
 
39
- this.positionChangedCallback = callback;
40
- this.positionChangedSubscription =
39
+ this.onPositionChangedCallback = callback;
40
+ this.onPositionChangedSubscription =
41
41
  this.audioEventEmitter.addAudioEventListener('positionChanged', callback);
42
42
 
43
43
  (this.node as IAudioBufferBaseSourceNode).onPositionChanged =
44
- this.positionChangedSubscription.subscriptionId;
44
+ this.onPositionChangedSubscription.subscriptionId;
45
45
  }
46
46
 
47
47
  public get onPositionChangedInterval(): number {
@@ -24,21 +24,13 @@ export default class AudioBufferQueueSourceNode extends AudioBufferBaseSourceNod
24
24
  (this.node as IAudioBufferQueueSourceNode).clearBuffers();
25
25
  }
26
26
 
27
- public override start(when: number = 0, offset?: number): void {
27
+ public override start(when: number = 0): void {
28
28
  if (when < 0) {
29
29
  throw new RangeError(
30
30
  `when must be a finite non-negative number: ${when}`
31
31
  );
32
32
  }
33
33
 
34
- if (offset) {
35
- if (offset < 0) {
36
- throw new RangeError(
37
- `offset must be a finite non-negative number: ${offset}`
38
- );
39
- }
40
- }
41
-
42
34
  (this.node as IAudioBufferQueueSourceNode).start(when);
43
35
  }
44
36
 
@@ -3,8 +3,12 @@ import AudioBufferBaseSourceNode from './AudioBufferBaseSourceNode';
3
3
  import AudioBuffer from './AudioBuffer';
4
4
  import { InvalidStateError, RangeError } from '../errors';
5
5
  import { EventEmptyType } from '../events/types';
6
+ import { AudioEventSubscription } from '../events';
6
7
 
7
8
  export default class AudioBufferSourceNode extends AudioBufferBaseSourceNode {
9
+ private onLoopEndedSubscription?: AudioEventSubscription;
10
+ private onLoopEndedCallback?: (event: EventEmptyType) => void;
11
+
8
12
  public get buffer(): AudioBuffer | null {
9
13
  const buffer = (this.node as IAudioBufferSourceNode).buffer;
10
14
  if (!buffer) {
@@ -90,4 +94,28 @@ export default class AudioBufferSourceNode extends AudioBufferBaseSourceNode {
90
94
  ) {
91
95
  super.onEnded = callback;
92
96
  }
97
+
98
+ public get onLoopEnded(): ((event: EventEmptyType) => void) | undefined {
99
+ return this.onLoopEndedCallback;
100
+ }
101
+
102
+ public set onLoopEnded(callback: ((event: EventEmptyType) => void) | null) {
103
+ if (!callback) {
104
+ (this.node as IAudioBufferSourceNode).onLoopEnded = '0';
105
+ this.onLoopEndedSubscription?.remove();
106
+ this.onLoopEndedSubscription = undefined;
107
+ this.onLoopEndedCallback = undefined;
108
+
109
+ return;
110
+ }
111
+
112
+ this.onLoopEndedCallback = callback;
113
+ this.onLoopEndedSubscription = this.audioEventEmitter.addAudioEventListener(
114
+ 'loopEnded',
115
+ callback
116
+ );
117
+
118
+ (this.node as IAudioBufferSourceNode).onLoopEnded =
119
+ this.onLoopEndedSubscription.subscriptionId;
120
+ }
93
121
  }
@@ -3,8 +3,13 @@ import BaseAudioContext from './BaseAudioContext';
3
3
  import AudioManager from '../system';
4
4
  import { AudioContextOptions } from '../types';
5
5
  import { NotSupportedError } from '../errors';
6
+ import { isWorkletsAvailable, workletsModule } from '../utils';
6
7
 
7
8
  export default class AudioContext extends BaseAudioContext {
9
+ // We need to keep here a reference to this runtime to better manage its lifecycle
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
11
+ private _audioRuntime: any = null;
12
+
8
13
  constructor(options?: AudioContextOptions) {
9
14
  if (
10
15
  options &&
@@ -15,13 +20,19 @@ export default class AudioContext extends BaseAudioContext {
15
20
  `The provided sampleRate is not supported: ${options.sampleRate}`
16
21
  );
17
22
  }
23
+ let audioRuntime = null;
24
+ if (isWorkletsAvailable) {
25
+ audioRuntime = workletsModule.createWorkletRuntime('AudioWorkletRuntime');
26
+ }
18
27
 
19
28
  super(
20
29
  global.createAudioContext(
21
30
  options?.sampleRate || AudioManager.getDevicePreferredSampleRate(),
22
- options?.initSuspended || false
31
+ options?.initSuspended || false,
32
+ audioRuntime
23
33
  )
24
34
  );
35
+ this._audioRuntime = audioRuntime;
25
36
  }
26
37
 
27
38
  async close(): Promise<void> {
@@ -0,0 +1,78 @@
1
+ import { IAudioDecoder } from '../interfaces';
2
+ import AudioBuffer from './AudioBuffer';
3
+
4
+ class AudioDecoder {
5
+ private static instance: AudioDecoder | null = null;
6
+ protected readonly decoder: IAudioDecoder;
7
+
8
+ private constructor() {
9
+ this.decoder = global.createAudioDecoder();
10
+ }
11
+
12
+ public static getInstance(): AudioDecoder {
13
+ if (!AudioDecoder.instance) {
14
+ AudioDecoder.instance = new AudioDecoder();
15
+ }
16
+ return AudioDecoder.instance;
17
+ }
18
+
19
+ public async decodeAudioDataInstance(
20
+ input: string | ArrayBuffer,
21
+ sampleRate?: number
22
+ ): Promise<AudioBuffer> {
23
+ let buffer;
24
+ if (typeof input === 'string') {
25
+ // Remove the file:// prefix if it exists
26
+ if (input.startsWith('file://')) {
27
+ input = input.replace('file://', '');
28
+ }
29
+ buffer = await this.decoder.decodeWithFilePath(input, sampleRate ?? 0);
30
+ } else if (input instanceof ArrayBuffer) {
31
+ buffer = await this.decoder.decodeWithMemoryBlock(
32
+ new Uint8Array(input),
33
+ sampleRate ?? 0
34
+ );
35
+ }
36
+
37
+ if (!buffer) {
38
+ throw new Error('Unsupported input type or failed to decode audio');
39
+ }
40
+ return new AudioBuffer(buffer);
41
+ }
42
+
43
+ public async decodePCMInBase64Instance(
44
+ base64String: string,
45
+ inputSampleRate: number,
46
+ inputChannelCount: number,
47
+ interleaved: boolean
48
+ ): Promise<AudioBuffer> {
49
+ const buffer = await this.decoder.decodeWithPCMInBase64(
50
+ base64String,
51
+ inputSampleRate,
52
+ inputChannelCount,
53
+ interleaved
54
+ );
55
+ return new AudioBuffer(buffer);
56
+ }
57
+ }
58
+
59
+ export async function decodeAudioData(
60
+ input: string | ArrayBuffer,
61
+ sampleRate?: number
62
+ ): Promise<AudioBuffer> {
63
+ return AudioDecoder.getInstance().decodeAudioDataInstance(input, sampleRate);
64
+ }
65
+
66
+ export async function decodePCMInBase64(
67
+ base64String: string,
68
+ inputSampleRate: number,
69
+ inputChannelCount: number,
70
+ isInterleaved: boolean = true
71
+ ): Promise<AudioBuffer> {
72
+ return AudioDecoder.getInstance().decodePCMInBase64Instance(
73
+ base64String,
74
+ inputSampleRate,
75
+ inputChannelCount,
76
+ isInterleaved
77
+ );
78
+ }