react-native-audio-api 0.8.3-nightly-ea268f4-20251006 → 0.8.3

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 (282) hide show
  1. package/README.md +39 -40
  2. package/RNAudioAPI.podspec +12 -17
  3. package/android/build.gradle +4 -44
  4. package/android/src/main/cpp/audioapi/CMakeLists.txt +0 -65
  5. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +1 -29
  6. package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +0 -14
  7. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +1 -7
  8. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +1 -6
  9. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +1 -1
  10. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +1 -11
  11. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +2 -15
  12. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +18 -53
  13. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +149 -0
  14. package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +76 -0
  15. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +120 -0
  16. package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +67 -0
  17. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +142 -0
  18. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +46 -6
  19. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +6 -70
  20. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.h +66 -10
  21. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +91 -17
  22. package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +86 -0
  23. package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +56 -0
  24. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +6 -362
  25. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +241 -29
  26. package/common/cpp/audioapi/HostObjects/BiquadFilterNodeHostObject.h +89 -0
  27. package/common/cpp/audioapi/HostObjects/GainNodeHostObject.h +27 -0
  28. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +50 -6
  29. package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +65 -0
  30. package/common/cpp/audioapi/HostObjects/{sources/RecorderAdapterNodeHostObject.h → RecorderAdapterNodeHostObject.h} +2 -1
  31. package/common/cpp/audioapi/HostObjects/StereoPannerNodeHostObject.h +29 -0
  32. package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +30 -0
  33. package/common/cpp/audioapi/core/AudioContext.cpp +2 -3
  34. package/common/cpp/audioapi/core/AudioContext.h +1 -2
  35. package/common/cpp/audioapi/core/AudioNode.h +1 -1
  36. package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
  37. package/common/cpp/audioapi/core/AudioParam.h +1 -1
  38. package/common/cpp/audioapi/core/{utils/AudioParamEventQueue.cpp → AudioParamEventQueue.cpp} +7 -13
  39. package/common/cpp/audioapi/core/BaseAudioContext.cpp +3 -47
  40. package/common/cpp/audioapi/core/BaseAudioContext.h +4 -13
  41. package/common/cpp/audioapi/core/{utils/Constants.h → Constants.h} +0 -5
  42. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +3 -4
  43. package/common/cpp/audioapi/core/OfflineAudioContext.h +1 -2
  44. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +1 -1
  45. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +1 -1
  46. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +1 -1
  47. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +2 -2
  48. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +10 -47
  49. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +3 -18
  50. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +12 -94
  51. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +2 -8
  52. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +42 -33
  53. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +8 -6
  54. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +6 -1
  55. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +1 -1
  56. package/common/cpp/audioapi/core/sources/StreamerNode.h +8 -0
  57. package/common/cpp/audioapi/dsp/Windows.cpp +1 -1
  58. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +1 -1
  59. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +1 -2
  60. package/common/cpp/audioapi/events/AudioEventHandlerRegistryHostObject.h +48 -0
  61. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +1 -14
  62. package/common/cpp/audioapi/jsi/JsiHostObject.h +12 -6
  63. package/common/cpp/audioapi/jsi/JsiPromise.cpp +0 -49
  64. package/common/cpp/audioapi/jsi/JsiPromise.h +1 -29
  65. package/common/cpp/audioapi/utils/AudioBus.cpp +1 -1
  66. package/common/cpp/test/CMakeLists.txt +3 -11
  67. package/common/cpp/test/GainTest.cpp +1 -2
  68. package/common/cpp/test/OscillatorTest.cpp +1 -2
  69. package/ios/audioapi/ios/AudioAPIModule.mm +5 -32
  70. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +1 -1
  71. package/ios/audioapi/ios/core/IOSAudioRecorder.h +1 -2
  72. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
  73. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.h +7 -0
  74. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.mm +12 -0
  75. package/lib/commonjs/api.js +2 -36
  76. package/lib/commonjs/api.js.map +1 -1
  77. package/lib/commonjs/api.web.js +0 -8
  78. package/lib/commonjs/api.web.js.map +1 -1
  79. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +7 -7
  80. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
  81. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +6 -1
  82. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  83. package/lib/commonjs/core/AudioBufferSourceNode.js +0 -15
  84. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  85. package/lib/commonjs/core/AudioContext.js +1 -10
  86. package/lib/commonjs/core/AudioContext.js.map +1 -1
  87. package/lib/commonjs/core/AudioScheduledSourceNode.js +4 -4
  88. package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
  89. package/lib/commonjs/core/BaseAudioContext.js +11 -66
  90. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  91. package/lib/commonjs/core/OfflineAudioContext.js +2 -11
  92. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  93. package/lib/commonjs/core/OscillatorNode.js +0 -6
  94. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  95. package/lib/commonjs/hooks/{useSystemVolume.js → useSytemVolume.js} +1 -1
  96. package/lib/commonjs/hooks/useSytemVolume.js.map +1 -0
  97. package/lib/commonjs/utils/index.js +0 -9
  98. package/lib/commonjs/utils/index.js.map +1 -1
  99. package/lib/commonjs/web-core/AudioContext.js +0 -4
  100. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  101. package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -1
  102. package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
  103. package/lib/commonjs/web-core/OfflineAudioContext.js +0 -4
  104. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  105. package/lib/module/api.js +2 -6
  106. package/lib/module/api.js.map +1 -1
  107. package/lib/module/api.web.js +0 -1
  108. package/lib/module/api.web.js.map +1 -1
  109. package/lib/module/core/AudioBufferBaseSourceNode.js +7 -7
  110. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
  111. package/lib/module/core/AudioBufferQueueSourceNode.js +6 -1
  112. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  113. package/lib/module/core/AudioBufferSourceNode.js +0 -15
  114. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  115. package/lib/module/core/AudioContext.js +1 -10
  116. package/lib/module/core/AudioContext.js.map +1 -1
  117. package/lib/module/core/AudioScheduledSourceNode.js +4 -4
  118. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  119. package/lib/module/core/BaseAudioContext.js +11 -66
  120. package/lib/module/core/BaseAudioContext.js.map +1 -1
  121. package/lib/module/core/OfflineAudioContext.js +2 -11
  122. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  123. package/lib/module/core/OscillatorNode.js +0 -6
  124. package/lib/module/core/OscillatorNode.js.map +1 -1
  125. package/lib/module/hooks/{useSystemVolume.js → useSytemVolume.js} +1 -1
  126. package/lib/module/hooks/useSytemVolume.js.map +1 -0
  127. package/lib/module/utils/index.js +0 -8
  128. package/lib/module/utils/index.js.map +1 -1
  129. package/lib/module/web-core/AudioContext.js +0 -4
  130. package/lib/module/web-core/AudioContext.js.map +1 -1
  131. package/lib/module/web-core/AudioScheduledSourceNode.js +1 -1
  132. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  133. package/lib/module/web-core/OfflineAudioContext.js +0 -4
  134. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  135. package/lib/typescript/api.d.ts +4 -8
  136. package/lib/typescript/api.d.ts.map +1 -1
  137. package/lib/typescript/api.web.d.ts +0 -1
  138. package/lib/typescript/api.web.d.ts.map +1 -1
  139. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +2 -2
  140. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
  141. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
  142. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  143. package/lib/typescript/core/AudioBufferSourceNode.d.ts +0 -4
  144. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  145. package/lib/typescript/core/AudioContext.d.ts +0 -1
  146. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  147. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -1
  148. package/lib/typescript/core/BaseAudioContext.d.ts +11 -19
  149. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  150. package/lib/typescript/core/OfflineAudioContext.d.ts +0 -1
  151. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  152. package/lib/typescript/core/OscillatorNode.d.ts +0 -3
  153. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  154. package/lib/typescript/events/types.d.ts +0 -2
  155. package/lib/typescript/events/types.d.ts.map +1 -1
  156. package/lib/typescript/hooks/{useSystemVolume.d.ts → useSytemVolume.d.ts} +1 -1
  157. package/lib/typescript/hooks/useSytemVolume.d.ts.map +1 -0
  158. package/lib/typescript/interfaces.d.ts +3 -21
  159. package/lib/typescript/interfaces.d.ts.map +1 -1
  160. package/lib/typescript/types.d.ts +1 -2
  161. package/lib/typescript/types.d.ts.map +1 -1
  162. package/lib/typescript/utils/index.d.ts +0 -8
  163. package/lib/typescript/utils/index.d.ts.map +1 -1
  164. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +1 -1
  165. package/lib/typescript/web-core/AudioContext.d.ts +2 -4
  166. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  167. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -1
  168. package/lib/typescript/web-core/BaseAudioContext.d.ts +0 -2
  169. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  170. package/lib/typescript/web-core/OfflineAudioContext.d.ts +2 -4
  171. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  172. package/package.json +2 -3
  173. package/src/api.ts +3 -12
  174. package/src/api.web.ts +0 -1
  175. package/src/core/AudioBufferBaseSourceNode.ts +9 -9
  176. package/src/core/AudioBufferQueueSourceNode.ts +9 -1
  177. package/src/core/AudioBufferSourceNode.ts +0 -28
  178. package/src/core/AudioContext.ts +1 -12
  179. package/src/core/AudioScheduledSourceNode.ts +5 -5
  180. package/src/core/BaseAudioContext.ts +13 -149
  181. package/src/core/OfflineAudioContext.ts +2 -18
  182. package/src/core/OscillatorNode.ts +0 -11
  183. package/src/events/types.ts +0 -2
  184. package/src/interfaces.ts +5 -59
  185. package/src/types.ts +1 -3
  186. package/src/utils/index.ts +0 -21
  187. package/src/web-core/AudioBufferSourceNode.tsx +1 -1
  188. package/src/web-core/AudioContext.tsx +2 -7
  189. package/src/web-core/AudioScheduledSourceNode.tsx +1 -1
  190. package/src/web-core/BaseAudioContext.tsx +0 -2
  191. package/src/web-core/OfflineAudioContext.tsx +2 -7
  192. package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +0 -36
  193. package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +0 -24
  194. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +0 -57
  195. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +0 -105
  196. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +0 -70
  197. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +0 -18
  198. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +0 -18
  199. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +0 -148
  200. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.h +0 -37
  201. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +0 -92
  202. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +0 -29
  203. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +0 -20
  204. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.h +0 -19
  205. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +0 -21
  206. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +0 -21
  207. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +0 -41
  208. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +0 -28
  209. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +0 -69
  210. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +0 -33
  211. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +0 -73
  212. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +0 -29
  213. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +0 -94
  214. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +0 -46
  215. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +0 -60
  216. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +0 -25
  217. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +0 -152
  218. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +0 -37
  219. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +0 -52
  220. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h +0 -25
  221. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +0 -19
  222. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +0 -21
  223. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +0 -55
  224. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +0 -27
  225. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +0 -22
  226. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +0 -28
  227. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +0 -18
  228. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +0 -87
  229. package/common/cpp/audioapi/core/effects/WorkletNode.h +0 -65
  230. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +0 -89
  231. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +0 -52
  232. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +0 -51
  233. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +0 -26
  234. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +0 -82
  235. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +0 -47
  236. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +0 -52
  237. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +0 -9
  238. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +0 -73
  239. package/common/cpp/audioapi/utils/ThreadPool.hpp +0 -104
  240. package/common/cpp/test/AudioParamTest.cpp +0 -204
  241. package/lib/commonjs/core/ConstantSourceNode.js +0 -17
  242. package/lib/commonjs/core/ConstantSourceNode.js.map +0 -1
  243. package/lib/commonjs/core/WorkletNode.js +0 -11
  244. package/lib/commonjs/core/WorkletNode.js.map +0 -1
  245. package/lib/commonjs/core/WorkletProcessingNode.js +0 -11
  246. package/lib/commonjs/core/WorkletProcessingNode.js.map +0 -1
  247. package/lib/commonjs/core/WorkletSourceNode.js +0 -11
  248. package/lib/commonjs/core/WorkletSourceNode.js.map +0 -1
  249. package/lib/commonjs/hooks/useSystemVolume.js.map +0 -1
  250. package/lib/commonjs/web-core/ConstantSourceNode.js +0 -17
  251. package/lib/commonjs/web-core/ConstantSourceNode.js.map +0 -1
  252. package/lib/module/core/ConstantSourceNode.js +0 -11
  253. package/lib/module/core/ConstantSourceNode.js.map +0 -1
  254. package/lib/module/core/WorkletNode.js +0 -5
  255. package/lib/module/core/WorkletNode.js.map +0 -1
  256. package/lib/module/core/WorkletProcessingNode.js +0 -5
  257. package/lib/module/core/WorkletProcessingNode.js.map +0 -1
  258. package/lib/module/core/WorkletSourceNode.js +0 -5
  259. package/lib/module/core/WorkletSourceNode.js.map +0 -1
  260. package/lib/module/hooks/useSystemVolume.js.map +0 -1
  261. package/lib/module/web-core/ConstantSourceNode.js +0 -11
  262. package/lib/module/web-core/ConstantSourceNode.js.map +0 -1
  263. package/lib/typescript/core/ConstantSourceNode.d.ts +0 -9
  264. package/lib/typescript/core/ConstantSourceNode.d.ts.map +0 -1
  265. package/lib/typescript/core/WorkletNode.d.ts +0 -4
  266. package/lib/typescript/core/WorkletNode.d.ts.map +0 -1
  267. package/lib/typescript/core/WorkletProcessingNode.d.ts +0 -4
  268. package/lib/typescript/core/WorkletProcessingNode.d.ts.map +0 -1
  269. package/lib/typescript/core/WorkletSourceNode.d.ts +0 -4
  270. package/lib/typescript/core/WorkletSourceNode.d.ts.map +0 -1
  271. package/lib/typescript/hooks/useSystemVolume.d.ts.map +0 -1
  272. package/lib/typescript/web-core/ConstantSourceNode.d.ts +0 -8
  273. package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +0 -1
  274. package/src/core/ConstantSourceNode.ts +0 -13
  275. package/src/core/WorkletNode.ts +0 -3
  276. package/src/core/WorkletProcessingNode.ts +0 -3
  277. package/src/core/WorkletSourceNode.ts +0 -3
  278. package/src/web-core/ConstantSourceNode.tsx +0 -12
  279. /package/common/cpp/audioapi/HostObjects/{destinations/AudioDestinationNodeHostObject.h → AudioDestinationNodeHostObject.h} +0 -0
  280. /package/common/cpp/audioapi/HostObjects/{effects/PeriodicWaveHostObject.h → PeriodicWaveHostObject.h} +0 -0
  281. /package/common/cpp/audioapi/core/{utils/AudioParamEventQueue.h → AudioParamEventQueue.h} +0 -0
  282. /package/src/hooks/{useSystemVolume.ts → useSytemVolume.ts} +0 -0
@@ -1,37 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h>
4
-
5
- #include <memory>
6
- #include <vector>
7
-
8
- namespace audioapi {
9
- using namespace facebook;
10
-
11
- class AudioBufferSourceNode;
12
-
13
- class AudioBufferSourceNodeHostObject
14
- : public AudioBufferBaseSourceNodeHostObject {
15
- public:
16
- explicit AudioBufferSourceNodeHostObject(
17
- const std::shared_ptr<AudioBufferSourceNode> &node);
18
-
19
- ~AudioBufferSourceNodeHostObject() override;
20
-
21
- JSI_PROPERTY_GETTER_DECL(loop);
22
- JSI_PROPERTY_GETTER_DECL(loopSkip);
23
- JSI_PROPERTY_GETTER_DECL(buffer);
24
- JSI_PROPERTY_GETTER_DECL(loopStart);
25
- JSI_PROPERTY_GETTER_DECL(loopEnd);
26
-
27
- JSI_PROPERTY_SETTER_DECL(loop);
28
- JSI_PROPERTY_SETTER_DECL(loopSkip);
29
- JSI_PROPERTY_SETTER_DECL(loopStart);
30
- JSI_PROPERTY_SETTER_DECL(loopEnd);
31
- JSI_PROPERTY_SETTER_DECL(onLoopEnded);
32
-
33
- JSI_HOST_FUNCTION_DECL(start);
34
- JSI_HOST_FUNCTION_DECL(setBuffer);
35
- };
36
-
37
- } // namespace audioapi
@@ -1,52 +0,0 @@
1
- #include <audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h>
2
-
3
- #include <audioapi/core/sources/AudioScheduledSourceNode.h>
4
-
5
- namespace audioapi {
6
-
7
- AudioScheduledSourceNodeHostObject::AudioScheduledSourceNodeHostObject(
8
- const std::shared_ptr<AudioScheduledSourceNode> &node)
9
- : AudioNodeHostObject(node) {
10
- addSetters(
11
- JSI_EXPORT_PROPERTY_SETTER(AudioScheduledSourceNodeHostObject, onEnded));
12
-
13
- addFunctions(
14
- JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, start),
15
- JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, stop));
16
- }
17
-
18
- AudioScheduledSourceNodeHostObject::~AudioScheduledSourceNodeHostObject() {
19
- auto audioScheduledSourceNode =
20
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
21
-
22
- // When JSI object is garbage collected (together with the eventual callback),
23
- // underlying source node might still be active and try to call the
24
- // non-existing callback.
25
- audioScheduledSourceNode->clearOnEndedCallback();
26
- }
27
-
28
- JSI_PROPERTY_SETTER_IMPL(AudioScheduledSourceNodeHostObject, onEnded) {
29
- auto audioScheduleSourceNode =
30
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
31
-
32
- audioScheduleSourceNode->setOnEndedCallbackId(
33
- std::stoull(value.getString(runtime).utf8(runtime)));
34
- }
35
-
36
- JSI_HOST_FUNCTION_IMPL(AudioScheduledSourceNodeHostObject, start) {
37
- auto when = args[0].getNumber();
38
- auto audioScheduleSourceNode =
39
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
40
- audioScheduleSourceNode->start(when);
41
- return jsi::Value::undefined();
42
- }
43
-
44
- JSI_HOST_FUNCTION_IMPL(AudioScheduledSourceNodeHostObject, stop) {
45
- auto time = args[0].getNumber();
46
- auto audioScheduleSourceNode =
47
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
48
- audioScheduleSourceNode->stop(time);
49
- return jsi::Value::undefined();
50
- }
51
-
52
- } // namespace audioapi
@@ -1,25 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
-
5
- #include <memory>
6
- #include <vector>
7
-
8
- namespace audioapi {
9
- using namespace facebook;
10
-
11
- class AudioScheduledSourceNode;
12
-
13
- class AudioScheduledSourceNodeHostObject : public AudioNodeHostObject {
14
- public:
15
- explicit AudioScheduledSourceNodeHostObject(
16
- const std::shared_ptr<AudioScheduledSourceNode> &node);
17
-
18
- ~AudioScheduledSourceNodeHostObject() override;
19
-
20
- JSI_PROPERTY_SETTER_DECL(onEnded);
21
-
22
- JSI_HOST_FUNCTION_DECL(start);
23
- JSI_HOST_FUNCTION_DECL(stop);
24
- };
25
- } // namespace audioapi
@@ -1,19 +0,0 @@
1
- #include <audioapi/HostObjects/AudioParamHostObject.h>
2
- #include <audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h>
3
- #include <audioapi/core/sources/ConstantSourceNode.h>
4
-
5
- namespace audioapi {
6
-
7
- ConstantSourceNodeHostObject::ConstantSourceNodeHostObject(
8
- const std::shared_ptr<ConstantSourceNode> &node)
9
- : AudioScheduledSourceNodeHostObject(node) {
10
- addGetters(JSI_EXPORT_PROPERTY_GETTER(ConstantSourceNodeHostObject, offset));
11
- }
12
-
13
- JSI_PROPERTY_GETTER_IMPL(ConstantSourceNodeHostObject, offset) {
14
- auto constantSourceNode = std::static_pointer_cast<ConstantSourceNode>(node_);
15
- auto offsetParam_ = std::make_shared<AudioParamHostObject>(
16
- constantSourceNode->getOffsetParam());
17
- return jsi::Object::createFromHostObject(runtime, offsetParam_);
18
- }
19
- } // namespace audioapi
@@ -1,21 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h>
4
-
5
- #include <memory>
6
- #include <string>
7
- #include <vector>
8
-
9
- namespace audioapi {
10
- using namespace facebook;
11
-
12
- class ConstantSourceNode;
13
-
14
- class ConstantSourceNodeHostObject : public AudioScheduledSourceNodeHostObject {
15
- public:
16
- explicit ConstantSourceNodeHostObject(
17
- const std::shared_ptr<ConstantSourceNode> &node);
18
-
19
- JSI_PROPERTY_GETTER_DECL(offset);
20
- };
21
- } // namespace audioapi
@@ -1,55 +0,0 @@
1
- #include <audioapi/HostObjects/sources/OscillatorNodeHostObject.h>
2
-
3
- #include <audioapi/HostObjects/AudioParamHostObject.h>
4
- #include <audioapi/HostObjects/effects/PeriodicWaveHostObject.h>
5
- #include <audioapi/core/sources/OscillatorNode.h>
6
-
7
- namespace audioapi {
8
-
9
- OscillatorNodeHostObject::OscillatorNodeHostObject(
10
- const std::shared_ptr<OscillatorNode> &node)
11
- : AudioScheduledSourceNodeHostObject(node) {
12
- addGetters(
13
- JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, frequency),
14
- JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, detune),
15
- JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, type));
16
-
17
- addFunctions(JSI_EXPORT_FUNCTION(OscillatorNodeHostObject, setPeriodicWave));
18
-
19
- addSetters(JSI_EXPORT_PROPERTY_SETTER(OscillatorNodeHostObject, type));
20
- }
21
-
22
- JSI_PROPERTY_GETTER_IMPL(OscillatorNodeHostObject, frequency) {
23
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
24
- auto frequencyParam_ = std::make_shared<AudioParamHostObject>(
25
- oscillatorNode->getFrequencyParam());
26
- return jsi::Object::createFromHostObject(runtime, frequencyParam_);
27
- }
28
-
29
- JSI_PROPERTY_GETTER_IMPL(OscillatorNodeHostObject, detune) {
30
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
31
- auto detuneParam_ =
32
- std::make_shared<AudioParamHostObject>(oscillatorNode->getDetuneParam());
33
- return jsi::Object::createFromHostObject(runtime, detuneParam_);
34
- }
35
-
36
- JSI_PROPERTY_GETTER_IMPL(OscillatorNodeHostObject, type) {
37
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
38
- auto waveType = oscillatorNode->getType();
39
- return jsi::String::createFromUtf8(runtime, waveType);
40
- }
41
-
42
- JSI_HOST_FUNCTION_IMPL(OscillatorNodeHostObject, setPeriodicWave) {
43
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
44
- auto periodicWave =
45
- args[0].getObject(runtime).getHostObject<PeriodicWaveHostObject>(runtime);
46
- oscillatorNode->setPeriodicWave(periodicWave->periodicWave_);
47
- return jsi::Value::undefined();
48
- }
49
-
50
- JSI_PROPERTY_SETTER_IMPL(OscillatorNodeHostObject, type) {
51
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
52
- oscillatorNode->setType(value.getString(runtime).utf8(runtime));
53
- }
54
-
55
- } // namespace audioapi
@@ -1,27 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h>
4
-
5
- #include <memory>
6
- #include <string>
7
- #include <vector>
8
-
9
- namespace audioapi {
10
- using namespace facebook;
11
-
12
- class OscillatorNode;
13
-
14
- class OscillatorNodeHostObject : public AudioScheduledSourceNodeHostObject {
15
- public:
16
- explicit OscillatorNodeHostObject(
17
- const std::shared_ptr<OscillatorNode> &node);
18
-
19
- JSI_PROPERTY_GETTER_DECL(frequency);
20
- JSI_PROPERTY_GETTER_DECL(detune);
21
- JSI_PROPERTY_GETTER_DECL(type);
22
-
23
- JSI_HOST_FUNCTION_DECL(setPeriodicWave);
24
-
25
- JSI_PROPERTY_SETTER_DECL(type);
26
- };
27
- } // namespace audioapi
@@ -1,22 +0,0 @@
1
- #include <audioapi/HostObjects/sources/StreamerNodeHostObject.h>
2
-
3
- #include <audioapi/HostObjects/AudioParamHostObject.h>
4
- #include <audioapi/HostObjects/effects/PeriodicWaveHostObject.h>
5
- #include <audioapi/core/sources/StreamerNode.h>
6
-
7
- namespace audioapi {
8
-
9
- StreamerNodeHostObject::StreamerNodeHostObject(
10
- const std::shared_ptr<StreamerNode> &node)
11
- : AudioScheduledSourceNodeHostObject(node) {
12
- addFunctions(JSI_EXPORT_FUNCTION(StreamerNodeHostObject, initialize));
13
- }
14
-
15
- JSI_HOST_FUNCTION_IMPL(StreamerNodeHostObject, initialize) {
16
- auto streamerNode = std::static_pointer_cast<StreamerNode>(node_);
17
- auto path = args[0].getString(runtime).utf8(runtime);
18
- auto result = streamerNode->initialize(path);
19
- return {result};
20
- }
21
-
22
- } // namespace audioapi
@@ -1,28 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h>
4
-
5
- #include <memory>
6
- #include <string>
7
- #include <vector>
8
-
9
- namespace audioapi {
10
- using namespace facebook;
11
-
12
- class StreamerNode;
13
-
14
- class StreamerNodeHostObject : public AudioScheduledSourceNodeHostObject {
15
- public:
16
- explicit StreamerNodeHostObject(
17
- const std::shared_ptr<StreamerNode> &node);
18
-
19
- [[nodiscard]] static inline size_t getSizeInBytes() {
20
- return SIZE;
21
- }
22
-
23
- JSI_HOST_FUNCTION_DECL(initialize);
24
-
25
- private:
26
- static constexpr size_t SIZE = 4'000'000; // 4MB
27
- };
28
- } // namespace audioapi
@@ -1,18 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h>
4
- #include <audioapi/core/sources/WorkletSourceNode.h>
5
-
6
- #include <memory>
7
- #include <vector>
8
-
9
- namespace audioapi {
10
- using namespace facebook;
11
-
12
- class WorkletSourceNodeHostObject : public AudioScheduledSourceNodeHostObject {
13
- public:
14
- explicit WorkletSourceNodeHostObject(const std::shared_ptr<WorkletSourceNode> &node)
15
- : AudioScheduledSourceNodeHostObject(node) {
16
- }
17
- };
18
- } // namespace audioapi
@@ -1,87 +0,0 @@
1
- #include <audioapi/core/effects/WorkletNode.h>
2
-
3
- namespace audioapi {
4
-
5
- WorkletNode::WorkletNode(
6
- BaseAudioContext *context,
7
- std::shared_ptr<worklets::SerializableWorklet> &worklet,
8
- std::weak_ptr<worklets::WorkletRuntime> runtime,
9
- size_t bufferLength,
10
- size_t inputChannelCount)
11
- : AudioNode(context),
12
- buffRealLength_(bufferLength * sizeof(float)),
13
- bufferLength_(bufferLength),
14
- workletRunner_(runtime),
15
- shareableWorklet_(worklet),
16
- inputChannelCount_(inputChannelCount),
17
- curBuffIndex_(0) {
18
- buffs_.reserve(inputChannelCount_);
19
- for (size_t i = 0; i < inputChannelCount_; ++i) {
20
- buffs_.emplace_back(new uint8_t[buffRealLength_]);
21
- }
22
- isInitialized_ = true;
23
- }
24
-
25
- WorkletNode::~WorkletNode() {
26
- for (auto &buff : buffs_) {
27
- delete[] buff;
28
- }
29
- }
30
-
31
- void WorkletNode::processNode(
32
- const std::shared_ptr<AudioBus> &processingBus,
33
- int framesToProcess) {
34
- size_t processed = 0;
35
- size_t channelCount_ = std::min(
36
- inputChannelCount_,
37
- static_cast<size_t>(processingBus->getNumberOfChannels()));
38
- while (processed < framesToProcess) {
39
- size_t framesToWorkletInvoke = bufferLength_ - curBuffIndex_;
40
- size_t needsToProcess = framesToProcess - processed;
41
- size_t shouldProcess = std::min(framesToWorkletInvoke, needsToProcess);
42
-
43
- for (size_t ch = 0; ch < channelCount_; ch++) {
44
- /// here we copy
45
- /// to uint8_t* [curBuffIndex_, curBuffIndex_ + shouldProcess]
46
- /// from float* [processed, processed + shouldProcess]
47
- /// so as the we need to copy shouldProcess * sizeof(float) bytes
48
- auto channelData = processingBus->getChannel(ch)->getData();
49
- std::memcpy(
50
- /* dest */ buffs_[ch] + curBuffIndex_ * sizeof(float),
51
- /* src */ reinterpret_cast<const uint8_t *>(channelData + processed),
52
- /* size */ shouldProcess * sizeof(float));
53
- }
54
- processed += shouldProcess;
55
- curBuffIndex_ += shouldProcess;
56
-
57
- /// If we filled the entire buffer, we need to execute the worklet
58
- if (curBuffIndex_ == bufferLength_) {
59
- // Reset buffer index, channel buffers and execute worklet
60
- curBuffIndex_ = 0;
61
- workletRunner_.executeOnRuntimeGuardedSync(
62
- [this, channelCount_](jsi::Runtime &uiRuntimeRaw) {
63
- /// Arguments preparation
64
- auto jsArray = jsi::Array(uiRuntimeRaw, channelCount_);
65
- for (size_t ch = 0; ch < channelCount_; ch++) {
66
- uint8_t *buffPtr = buffs_[ch];
67
- buffs_[ch] = new uint8_t[buffRealLength_];
68
- auto sharedAudioArray =
69
- std::make_shared<AudioArrayBuffer>(buffPtr, buffRealLength_);
70
- auto arrayBuffer =
71
- jsi::ArrayBuffer(uiRuntimeRaw, std::move(sharedAudioArray));
72
- jsArray.setValueAtIndex(uiRuntimeRaw, ch, std::move(arrayBuffer));
73
- }
74
- jsArray.setExternalMemoryPressure(
75
- uiRuntimeRaw, channelCount_ * buffRealLength_);
76
-
77
- workletRunner_.executeWorklet(
78
- shareableWorklet_,
79
- std::move(jsArray),
80
- jsi::Value(uiRuntimeRaw, static_cast<int>(channelCount_)));
81
- return jsi::Value::undefined();
82
- });
83
- }
84
- }
85
- }
86
-
87
- } // namespace audioapi
@@ -1,65 +0,0 @@
1
- #pragma once
2
-
3
-
4
- #include <jsi/jsi.h>
5
- #include <audioapi/core/utils/worklets/WorkletsRunner.h>
6
- #include <audioapi/core/AudioNode.h>
7
- #include <audioapi/core/BaseAudioContext.h>
8
- #include <audioapi/utils/AudioBus.h>
9
- #include <audioapi/utils/AudioArray.h>
10
- #include <audioapi/jsi/AudioArrayBuffer.h>
11
-
12
- #include <memory>
13
- #include <vector>
14
-
15
- namespace audioapi {
16
-
17
- #if RN_AUDIO_API_TEST
18
- class WorkletNode : public AudioNode {
19
- public:
20
- explicit WorkletNode(
21
- BaseAudioContext *context,
22
- std::shared_ptr<worklets::SerializableWorklet> &worklet,
23
- std::weak_ptr<worklets::WorkletRuntime> runtime,
24
- size_t bufferLength,
25
- size_t inputChannelCount
26
- ) : AudioNode(context) {}
27
-
28
- protected:
29
- void processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override {}
30
- };
31
- #else
32
-
33
- using namespace facebook;
34
-
35
- class WorkletNode : public AudioNode {
36
- public:
37
- explicit WorkletNode(
38
- BaseAudioContext *context,
39
- std::shared_ptr<worklets::SerializableWorklet> &worklet,
40
- std::weak_ptr<worklets::WorkletRuntime> runtime,
41
- size_t bufferLength,
42
- size_t inputChannelCount
43
- );
44
-
45
- ~WorkletNode() override;
46
-
47
- protected:
48
- void processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override;
49
-
50
-
51
- private:
52
- WorkletsRunner workletRunner_;
53
- std::shared_ptr<worklets::SerializableWorklet> shareableWorklet_;
54
- std::vector<uint8_t*> buffs_;
55
-
56
- /// @brief Length of the byte buffer that will be passed to the AudioArrayBuffer
57
- size_t buffRealLength_;
58
- size_t bufferLength_;
59
- size_t inputChannelCount_;
60
- size_t curBuffIndex_;
61
- };
62
-
63
- #endif // RN_AUDIO_API_TEST
64
-
65
- } // namespace audioapi
@@ -1,89 +0,0 @@
1
- #include <audioapi/core/effects/WorkletProcessingNode.h>
2
- #include <audioapi/core/utils/Constants.h>
3
-
4
- namespace audioapi {
5
-
6
- WorkletProcessingNode::WorkletProcessingNode(
7
- BaseAudioContext *context,
8
- std::shared_ptr<worklets::SerializableWorklet> &worklet,
9
- std::weak_ptr<worklets::WorkletRuntime> runtime)
10
- : AudioNode(context), workletRunner_(runtime), shareableWorklet_(worklet) {
11
- isInitialized_ = true;
12
-
13
- // Pre-allocate buffers for max 128 frames and 2 channels (stereo)
14
- size_t maxChannelCount = 2;
15
- inputBuffsHandles_.resize(maxChannelCount);
16
- outputBuffsHandles_.resize(maxChannelCount);
17
-
18
- for (size_t i = 0; i < maxChannelCount; ++i) {
19
- auto inputBuff = new uint8_t[RENDER_QUANTUM_SIZE * sizeof(float)];
20
- inputBuffsHandles_[i] = std::make_shared<AudioArrayBuffer>(
21
- inputBuff, RENDER_QUANTUM_SIZE * sizeof(float));
22
-
23
- auto outputBuff = new uint8_t[RENDER_QUANTUM_SIZE * sizeof(float)];
24
- outputBuffsHandles_[i] = std::make_shared<AudioArrayBuffer>(
25
- outputBuff, RENDER_QUANTUM_SIZE * sizeof(float));
26
- }
27
- }
28
-
29
- void WorkletProcessingNode::processNode(
30
- const std::shared_ptr<AudioBus> &processingBus,
31
- int framesToProcess) {
32
- size_t channelCount = std::min(
33
- static_cast<size_t>(2), // Fixed to stereo for now
34
- static_cast<size_t>(processingBus->getNumberOfChannels()));
35
-
36
- // Copy input data to pre-allocated input buffers
37
- for (size_t ch = 0; ch < channelCount; ch++) {
38
- auto channelData = processingBus->getChannel(ch)->getData();
39
- std::memcpy(
40
- /* dest */ inputBuffsHandles_[ch]->data(),
41
- /* src */ reinterpret_cast<const uint8_t *>(channelData),
42
- /* size */ framesToProcess * sizeof(float));
43
- }
44
-
45
- // Execute the worklet
46
- auto result = workletRunner_.executeOnRuntimeGuardedSync(
47
- [this, channelCount, framesToProcess](jsi::Runtime &rt) {
48
- auto inputJsArray = jsi::Array(rt, channelCount);
49
- auto outputJsArray = jsi::Array(rt, channelCount);
50
-
51
- for (size_t ch = 0; ch < channelCount; ch++) {
52
- // Create input array buffer
53
- auto inputArrayBuffer = jsi::ArrayBuffer(rt, inputBuffsHandles_[ch]);
54
- inputJsArray.setValueAtIndex(rt, ch, inputArrayBuffer);
55
-
56
- // Create output array buffer
57
- auto outputArrayBuffer =
58
- jsi::ArrayBuffer(rt, outputBuffsHandles_[ch]);
59
- outputJsArray.setValueAtIndex(rt, ch, outputArrayBuffer);
60
- }
61
-
62
- return workletRunner_
63
- .executeWorklet(
64
- shareableWorklet_,
65
- inputJsArray,
66
- outputJsArray,
67
- jsi::Value(rt, static_cast<int>(framesToProcess)),
68
- jsi::Value(rt, this->context_->getCurrentTime()))
69
- .value_or(jsi::Value::undefined());
70
- });
71
-
72
- // Copy processed output data back to the processing bus or zero on failure
73
- for (size_t ch = 0; ch < channelCount; ch++) {
74
- auto channelData = processingBus->getChannel(ch)->getData();
75
-
76
- if (result.has_value()) {
77
- // Copy processed output data
78
- std::memcpy(
79
- /* dest */ reinterpret_cast<uint8_t *>(channelData),
80
- /* src */ outputBuffsHandles_[ch]->data(),
81
- /* size */ framesToProcess * sizeof(float));
82
- } else {
83
- // Zero the output on worklet execution failure
84
- std::memset(channelData, 0, framesToProcess * sizeof(float));
85
- }
86
- }
87
- }
88
-
89
- } // namespace audioapi
@@ -1,52 +0,0 @@
1
- #pragma once
2
-
3
- #include <jsi/jsi.h>
4
- #include <audioapi/core/utils/worklets/WorkletsRunner.h>
5
- #include <audioapi/core/AudioNode.h>
6
- #include <audioapi/core/BaseAudioContext.h>
7
- #include <audioapi/utils/AudioBus.h>
8
- #include <audioapi/utils/AudioArray.h>
9
- #include <audioapi/jsi/AudioArrayBuffer.h>
10
-
11
- #include <memory>
12
- #include <vector>
13
-
14
- namespace audioapi {
15
-
16
- #if RN_AUDIO_API_TEST
17
- class WorkletProcessingNode : public AudioNode {
18
- public:
19
- explicit WorkletProcessingNode(
20
- BaseAudioContext *context,
21
- std::shared_ptr<worklets::SerializableWorklet> &worklet,
22
- std::weak_ptr<worklets::WorkletRuntime> runtime
23
- ) : AudioNode(context) {}
24
-
25
- protected:
26
- void processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override {}
27
- };
28
- #else
29
-
30
- using namespace facebook;
31
-
32
- class WorkletProcessingNode : public AudioNode {
33
- public:
34
- explicit WorkletProcessingNode(
35
- BaseAudioContext *context,
36
- std::shared_ptr<worklets::SerializableWorklet> &worklet,
37
- std::weak_ptr<worklets::WorkletRuntime> runtime
38
- );
39
-
40
- protected:
41
- void processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override;
42
-
43
- private:
44
- WorkletsRunner workletRunner_;
45
- std::shared_ptr<worklets::SerializableWorklet> shareableWorklet_;
46
- std::vector<std::shared_ptr<AudioArrayBuffer>> inputBuffsHandles_;
47
- std::vector<std::shared_ptr<AudioArrayBuffer>> outputBuffsHandles_;
48
- };
49
-
50
- #endif // RN_AUDIO_API_TEST
51
-
52
- } // namespace audioapi
@@ -1,51 +0,0 @@
1
- #include <audioapi/core/BaseAudioContext.h>
2
- #include <audioapi/core/sources/ConstantSourceNode.h>
3
- #include <audioapi/dsp/AudioUtils.h>
4
- #include <audioapi/utils/AudioArray.h>
5
- #include <audioapi/utils/AudioBus.h>
6
-
7
- namespace audioapi {
8
- ConstantSourceNode::ConstantSourceNode(BaseAudioContext *context)
9
- : AudioScheduledSourceNode(context) {
10
- offsetParam_ = std::make_shared<AudioParam>(
11
- 1.0, MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT, context);
12
- isInitialized_ = true;
13
- }
14
-
15
- std::shared_ptr<AudioParam> ConstantSourceNode::getOffsetParam() const {
16
- return offsetParam_;
17
- }
18
-
19
- void ConstantSourceNode::processNode(
20
- const std::shared_ptr<AudioBus> &processingBus,
21
- int framesToProcess) {
22
- size_t startOffset = 0;
23
- size_t offsetLength = 0;
24
-
25
- updatePlaybackInfo(processingBus, framesToProcess, startOffset, offsetLength);
26
-
27
- if (!isPlaying() && !isStopScheduled()) {
28
- processingBus->zero();
29
- return;
30
- }
31
-
32
- auto offsetBus = offsetParam_->processARateParam(
33
- framesToProcess, context_->getCurrentTime());
34
-
35
- auto offsetChannelData = offsetBus->getChannel(0)->getData();
36
-
37
- for (int channel = 0; channel < processingBus->getNumberOfChannels();
38
- ++channel) {
39
- auto outputChannelData = processingBus->getChannel(channel)->getData();
40
-
41
- std::copy(
42
- offsetChannelData + startOffset,
43
- offsetChannelData + startOffset + offsetLength,
44
- outputChannelData + startOffset);
45
- }
46
-
47
- if (isStopScheduled()) {
48
- handleStopScheduled();
49
- }
50
- }
51
- } // namespace audioapi