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

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 +4 -50
  49. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +2 -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 +0 -4
  55. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +0 -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 +6 -2
  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,5 +1,6 @@
1
1
  #pragma once
2
2
 
3
+ #include <audioapi/core/AudioContext.h>
3
4
  #include <audioapi/HostObjects/BaseAudioContextHostObject.h>
4
5
 
5
6
  #include <jsi/jsi.h>
@@ -10,17 +11,56 @@
10
11
  namespace audioapi {
11
12
  using namespace facebook;
12
13
 
13
- class AudioContext;
14
-
15
14
  class AudioContextHostObject : public BaseAudioContextHostObject {
16
15
  public:
17
16
  explicit AudioContextHostObject(
18
17
  const std::shared_ptr<AudioContext> &audioContext,
19
18
  jsi::Runtime *runtime,
20
- const std::shared_ptr<react::CallInvoker> &callInvoker);
19
+ const std::shared_ptr<react::CallInvoker> &callInvoker)
20
+ : BaseAudioContextHostObject(audioContext, runtime, callInvoker) {
21
+ addFunctions(
22
+ JSI_EXPORT_FUNCTION(AudioContextHostObject, close),
23
+ JSI_EXPORT_FUNCTION(AudioContextHostObject, resume),
24
+ JSI_EXPORT_FUNCTION(AudioContextHostObject, suspend));
25
+ }
26
+
27
+ JSI_HOST_FUNCTION(close) {
28
+ auto audioContext = std::static_pointer_cast<AudioContext>(context_);
29
+ auto promise = promiseVendor_->createPromise([audioContext](const std::shared_ptr<Promise>& promise) {
30
+ audioContext->close();
31
+
32
+ promise->resolve([](jsi::Runtime &runtime) {
33
+ return jsi::Value::undefined();
34
+ });
35
+ });
36
+
37
+ return promise;
38
+ }
39
+
40
+ JSI_HOST_FUNCTION(resume) {
41
+ auto audioContext = std::static_pointer_cast<AudioContext>(context_);
42
+ auto promise = promiseVendor_->createPromise([audioContext](const std::shared_ptr<Promise>& promise) {
43
+ auto result = audioContext->resume();
44
+
45
+ promise->resolve([result](jsi::Runtime &runtime) {
46
+ return jsi::Value(result);
47
+ });
48
+ });
49
+
50
+ return promise;
51
+ }
52
+
53
+ JSI_HOST_FUNCTION(suspend) {
54
+ auto audioContext = std::static_pointer_cast<AudioContext>(context_);
55
+ auto promise = promiseVendor_->createPromise([audioContext](const std::shared_ptr<Promise>& promise) {
56
+ auto result = audioContext->suspend();
57
+
58
+ promise->resolve([result](jsi::Runtime &runtime) {
59
+ return jsi::Value(result);
60
+ });
61
+ });
21
62
 
22
- JSI_HOST_FUNCTION_DECL(close);
23
- JSI_HOST_FUNCTION_DECL(resume);
24
- JSI_HOST_FUNCTION_DECL(suspend);
63
+ return promise;
64
+ }
25
65
  };
26
66
  } // namespace audioapi
@@ -1,73 +1,9 @@
1
1
  #include <audioapi/HostObjects/AudioNodeHostObject.h>
2
2
 
3
- #include <audioapi/HostObjects/AudioParamHostObject.h>
4
- #include <audioapi/core/AudioNode.h>
5
-
3
+ // Explicitly define destructors here, as they to exist in order to act as a
4
+ // "key function" for the audio classes - this allow for RTTI to work
5
+ // properly across dynamic library boundaries (i.e. dynamic_cast that is used by
6
+ // isHostObject method), android specific issue
6
7
  namespace audioapi {
7
-
8
- AudioNodeHostObject::AudioNodeHostObject(const std::shared_ptr<AudioNode> &node)
9
- : node_(node) {
10
- addGetters(
11
- JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, numberOfInputs),
12
- JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, numberOfOutputs),
13
- JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelCount),
14
- JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelCountMode),
15
- JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelInterpretation));
16
-
17
- addFunctions(
18
- JSI_EXPORT_FUNCTION(AudioNodeHostObject, connect),
19
- JSI_EXPORT_FUNCTION(AudioNodeHostObject, disconnect));
20
- }
21
-
22
- JSI_PROPERTY_GETTER_IMPL(AudioNodeHostObject, numberOfInputs) {
23
- return {node_->getNumberOfInputs()};
24
- }
25
-
26
- JSI_PROPERTY_GETTER_IMPL(AudioNodeHostObject, numberOfOutputs) {
27
- return {node_->getNumberOfOutputs()};
28
- }
29
-
30
- JSI_PROPERTY_GETTER_IMPL(AudioNodeHostObject, channelCount) {
31
- return {node_->getChannelCount()};
32
- }
33
-
34
- JSI_PROPERTY_GETTER_IMPL(AudioNodeHostObject, channelCountMode) {
35
- return jsi::String::createFromUtf8(runtime, node_->getChannelCountMode());
36
- }
37
-
38
- JSI_PROPERTY_GETTER_IMPL(AudioNodeHostObject, channelInterpretation) {
39
- return jsi::String::createFromUtf8(
40
- runtime, node_->getChannelInterpretation());
41
- }
42
-
43
- JSI_HOST_FUNCTION_IMPL(AudioNodeHostObject, connect) {
44
- auto obj = args[0].getObject(runtime);
45
- if (obj.isHostObject<AudioNodeHostObject>(runtime)) {
46
- auto node = obj.getHostObject<AudioNodeHostObject>(runtime);
47
- node_->connect(std::shared_ptr<AudioNodeHostObject>(node)->node_);
48
- }
49
- if (obj.isHostObject<AudioParamHostObject>(runtime)) {
50
- auto param = obj.getHostObject<AudioParamHostObject>(runtime);
51
- node_->connect(std::shared_ptr<AudioParamHostObject>(param)->param_);
52
- }
53
- return jsi::Value::undefined();
54
- }
55
-
56
- JSI_HOST_FUNCTION_IMPL(AudioNodeHostObject, disconnect) {
57
- if (args[0].isUndefined()) {
58
- node_->disconnect();
59
- return jsi::Value::undefined();
60
- }
61
- auto obj = args[0].getObject(runtime);
62
- if (obj.isHostObject<AudioNodeHostObject>(runtime)) {
63
- auto node = obj.getHostObject<AudioNodeHostObject>(runtime);
64
- node_->disconnect(std::shared_ptr<AudioNodeHostObject>(node)->node_);
65
- }
66
-
67
- if (obj.isHostObject<AudioParamHostObject>(runtime)) {
68
- auto param = obj.getHostObject<AudioParamHostObject>(runtime);
69
- node_->disconnect(std::shared_ptr<AudioParamHostObject>(param)->param_);
70
- }
71
- return jsi::Value::undefined();
72
- }
73
- } // namespace audioapi
8
+ AudioNodeHostObject::~AudioNodeHostObject() = default;
9
+ }
@@ -1,5 +1,7 @@
1
1
  #pragma once
2
2
 
3
+ #include <audioapi/HostObjects/AudioParamHostObject.h>
4
+ #include <audioapi/core/AudioNode.h>
3
5
  #include <audioapi/jsi/JsiHostObject.h>
4
6
 
5
7
  #include <jsi/jsi.h>
@@ -9,20 +11,74 @@
9
11
  namespace audioapi {
10
12
  using namespace facebook;
11
13
 
12
- class AudioNode;
13
-
14
14
  class AudioNodeHostObject : public JsiHostObject {
15
15
  public:
16
- explicit AudioNodeHostObject(const std::shared_ptr<AudioNode> &node);
16
+ explicit AudioNodeHostObject(const std::shared_ptr<AudioNode> &node)
17
+ : node_(node) {
18
+ addGetters(
19
+ JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, numberOfInputs),
20
+ JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, numberOfOutputs),
21
+ JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelCount),
22
+ JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelCountMode),
23
+ JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelInterpretation));
24
+ addFunctions(
25
+ JSI_EXPORT_FUNCTION(AudioNodeHostObject, connect),
26
+ JSI_EXPORT_FUNCTION(AudioNodeHostObject, disconnect));
27
+ }
28
+
29
+ ~AudioNodeHostObject() override;
30
+
31
+ JSI_PROPERTY_GETTER(numberOfInputs) {
32
+ return {node_->getNumberOfInputs()};
33
+ }
34
+
35
+ JSI_PROPERTY_GETTER(numberOfOutputs) {
36
+ return {node_->getNumberOfOutputs()};
37
+ }
38
+
39
+ JSI_PROPERTY_GETTER(channelCount) {
40
+ return {node_->getChannelCount()};
41
+ }
42
+
43
+ JSI_PROPERTY_GETTER(channelCountMode) {
44
+ return jsi::String::createFromUtf8(runtime, node_->getChannelCountMode());
45
+ }
46
+
47
+ JSI_PROPERTY_GETTER(channelInterpretation) {
48
+ return jsi::String::createFromUtf8(
49
+ runtime, node_->getChannelInterpretation());
50
+ }
51
+
52
+ JSI_HOST_FUNCTION(connect) {
53
+ auto obj = args[0].getObject(runtime);
54
+ if (obj.isHostObject<AudioNodeHostObject>(runtime)) {
55
+ auto node = obj.getHostObject<AudioNodeHostObject>(runtime);
56
+ node_->connect(std::shared_ptr<AudioNodeHostObject>(node)->node_);
57
+ }
58
+ if (obj.isHostObject<AudioParamHostObject>(runtime)) {
59
+ auto param = obj.getHostObject<AudioParamHostObject>(runtime);
60
+ node_->connect(std::shared_ptr<AudioParamHostObject>(param)->param_);
61
+ }
62
+ return jsi::Value::undefined();
63
+ }
17
64
 
18
- JSI_PROPERTY_GETTER_DECL(numberOfInputs);
19
- JSI_PROPERTY_GETTER_DECL(numberOfOutputs);
20
- JSI_PROPERTY_GETTER_DECL(channelCount);
21
- JSI_PROPERTY_GETTER_DECL(channelCountMode);
22
- JSI_PROPERTY_GETTER_DECL(channelInterpretation);
65
+ JSI_HOST_FUNCTION(disconnect) {
66
+ if (args[0].isUndefined()) {
67
+ node_->disconnect();
68
+ return jsi::Value::undefined();
69
+ }
70
+ auto obj = args[0].getObject(runtime);
71
+ if (obj.isHostObject<AudioNodeHostObject>(runtime)) {
72
+ auto node = obj.getHostObject<AudioNodeHostObject>(runtime);
73
+ node_->disconnect(std::shared_ptr<AudioNodeHostObject>(node)->node_);
74
+ }
23
75
 
24
- JSI_HOST_FUNCTION_DECL(connect);
25
- JSI_HOST_FUNCTION_DECL(disconnect);
76
+ if (obj.isHostObject<AudioParamHostObject>(runtime)) {
77
+ auto param = obj.getHostObject<AudioParamHostObject>(runtime);
78
+ node_->disconnect(std::shared_ptr<AudioParamHostObject>(param)->param_);
79
+ }
80
+ return jsi::Value::undefined();
81
+ }
26
82
 
27
83
  protected:
28
84
  std::shared_ptr<AudioNode> node_;
@@ -1,6 +1,7 @@
1
1
  #pragma once
2
2
 
3
3
  #include <audioapi/jsi/JsiHostObject.h>
4
+ #include <audioapi/core/AudioParam.h>
4
5
 
5
6
  #include <jsi/jsi.h>
6
7
  #include <utility>
@@ -11,30 +12,103 @@
11
12
  namespace audioapi {
12
13
  using namespace facebook;
13
14
 
14
- class AudioParam;
15
-
16
15
  class AudioParamHostObject : public JsiHostObject {
17
16
  public:
18
- explicit AudioParamHostObject(const std::shared_ptr<AudioParam> &param);
17
+ explicit AudioParamHostObject(const std::shared_ptr<AudioParam> &param)
18
+ : param_(param) {
19
+ addGetters(
20
+ JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, value),
21
+ JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, defaultValue),
22
+ JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, minValue),
23
+ JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, maxValue));
19
24
 
20
- JSI_PROPERTY_GETTER_DECL(value);
21
- JSI_PROPERTY_GETTER_DECL(defaultValue);
22
- JSI_PROPERTY_GETTER_DECL(minValue);
23
- JSI_PROPERTY_GETTER_DECL(maxValue);
25
+ addFunctions(
26
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, setValueAtTime),
27
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, linearRampToValueAtTime),
28
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, exponentialRampToValueAtTime),
29
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, setTargetAtTime),
30
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, setValueCurveAtTime),
31
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, cancelScheduledValues),
32
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, cancelAndHoldAtTime));
24
33
 
25
- JSI_PROPERTY_SETTER_DECL(value);
34
+ addSetters(JSI_EXPORT_PROPERTY_SETTER(AudioParamHostObject, value));
35
+ }
36
+ friend class AudioNodeHostObject;
26
37
 
27
- JSI_HOST_FUNCTION_DECL(setValueAtTime);
28
- JSI_HOST_FUNCTION_DECL(linearRampToValueAtTime);
29
- JSI_HOST_FUNCTION_DECL(exponentialRampToValueAtTime);
30
- JSI_HOST_FUNCTION_DECL(setTargetAtTime);
31
- JSI_HOST_FUNCTION_DECL(setValueCurveAtTime);
32
- JSI_HOST_FUNCTION_DECL(cancelScheduledValues);
33
- JSI_HOST_FUNCTION_DECL(cancelAndHoldAtTime);
38
+ JSI_PROPERTY_GETTER(value) {
39
+ return {param_->getValue()};
40
+ }
34
41
 
35
- private:
36
- friend class AudioNodeHostObject;
42
+ JSI_PROPERTY_GETTER(defaultValue) {
43
+ return {param_->getDefaultValue()};
44
+ }
45
+
46
+ JSI_PROPERTY_GETTER(minValue) {
47
+ return {param_->getMinValue()};
48
+ }
49
+
50
+ JSI_PROPERTY_GETTER(maxValue) {
51
+ return {param_->getMaxValue()};
52
+ }
53
+
54
+ JSI_HOST_FUNCTION(setValueAtTime) {
55
+ auto value = static_cast<float>(args[0].getNumber());
56
+ double startTime = args[1].getNumber();
57
+ param_->setValueAtTime(value, startTime);
58
+ return jsi::Value::undefined();
59
+ }
60
+
61
+ JSI_HOST_FUNCTION(linearRampToValueAtTime) {
62
+ auto value = static_cast<float>(args[0].getNumber());
63
+ double endTime = args[1].getNumber();
64
+ param_->linearRampToValueAtTime(value, endTime);
65
+ return jsi::Value::undefined();
66
+ }
37
67
 
68
+ JSI_HOST_FUNCTION(exponentialRampToValueAtTime) {
69
+ auto value = static_cast<float>(args[0].getNumber());
70
+ double endTime = args[1].getNumber();
71
+ param_->exponentialRampToValueAtTime(value, endTime);
72
+ return jsi::Value::undefined();
73
+ }
74
+
75
+ JSI_HOST_FUNCTION(setTargetAtTime) {
76
+ auto target = static_cast<float>(args[0].getNumber());
77
+ double startTime = args[1].getNumber();
78
+ double timeConstant = args[2].getNumber();
79
+ param_->setTargetAtTime(target, startTime, timeConstant);
80
+ return jsi::Value::undefined();
81
+ }
82
+
83
+ JSI_HOST_FUNCTION(setValueCurveAtTime) {
84
+ auto arrayBuffer = args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
85
+ auto rawValues = reinterpret_cast<float *>(arrayBuffer.data(runtime));
86
+ auto length = static_cast<int>(arrayBuffer.size(runtime));
87
+ auto values = std::make_unique<std::vector<float>>(rawValues, rawValues + length);
88
+
89
+ double startTime = args[1].getNumber();
90
+ double duration = args[2].getNumber();
91
+ param_->setValueCurveAtTime(std::move(values), length, startTime, duration);
92
+ return jsi::Value::undefined();
93
+ }
94
+
95
+ JSI_HOST_FUNCTION(cancelScheduledValues) {
96
+ double cancelTime = args[0].getNumber();
97
+ param_->cancelScheduledValues(cancelTime);
98
+ return jsi::Value::undefined();
99
+ }
100
+
101
+ JSI_HOST_FUNCTION(cancelAndHoldAtTime) {
102
+ double cancelTime = args[0].getNumber();
103
+ param_->cancelAndHoldAtTime(cancelTime);
104
+ return jsi::Value::undefined();
105
+ }
106
+
107
+ JSI_PROPERTY_SETTER(value) {
108
+ param_->setValue(static_cast<float>(value.getNumber()));
109
+ }
110
+
111
+ private:
38
112
  std::shared_ptr<AudioParam> param_;
39
113
  };
40
114
  } // namespace audioapi
@@ -0,0 +1,86 @@
1
+ #pragma once
2
+
3
+ #include <jsi/jsi.h>
4
+
5
+ #include <audioapi/core/sources/AudioBuffer.h>
6
+ #include <audioapi/HostObjects/AudioBufferHostObject.h>
7
+ #include <audioapi/core/inputs/AudioRecorder.h>
8
+ #include <audioapi/HostObjects/RecorderAdapterNodeHostObject.h>
9
+
10
+ #ifdef ANDROID
11
+ #include <audioapi/android/core/AndroidAudioRecorder.h>
12
+ #else
13
+ #include <audioapi/ios/core/IOSAudioRecorder.h>
14
+ #endif
15
+
16
+ #include <memory>
17
+ #include <utility>
18
+ #include <vector>
19
+ #include <cstdio>
20
+
21
+ namespace audioapi {
22
+ using namespace facebook;
23
+
24
+ class AudioRecorderHostObject : public JsiHostObject {
25
+ public:
26
+ explicit AudioRecorderHostObject(
27
+ jsi::Runtime *runtime,
28
+ const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry,
29
+ float sampleRate,
30
+ int bufferLength) {
31
+ #ifdef ANDROID
32
+ audioRecorder_ = std::make_shared<AndroidAudioRecorder>(
33
+ sampleRate,
34
+ bufferLength,
35
+ audioEventHandlerRegistry
36
+ );
37
+ #else
38
+ audioRecorder_ = std::make_shared<IOSAudioRecorder>(
39
+ sampleRate,
40
+ bufferLength,
41
+ audioEventHandlerRegistry
42
+ );
43
+ #endif
44
+
45
+ addSetters(JSI_EXPORT_PROPERTY_SETTER(AudioRecorderHostObject, onAudioReady));
46
+
47
+ addFunctions(
48
+ JSI_EXPORT_FUNCTION(AudioRecorderHostObject, start),
49
+ JSI_EXPORT_FUNCTION(AudioRecorderHostObject, stop),
50
+ JSI_EXPORT_FUNCTION(AudioRecorderHostObject, connect),
51
+ JSI_EXPORT_FUNCTION(AudioRecorderHostObject, disconnect)
52
+ );
53
+ }
54
+
55
+ JSI_HOST_FUNCTION(connect) {
56
+ auto adapterNodeHostObject = args[0].getObject(runtime).getHostObject<RecorderAdapterNodeHostObject>(runtime);
57
+ audioRecorder_->connect(
58
+ std::static_pointer_cast<RecorderAdapterNode>(adapterNodeHostObject->node_));
59
+ return jsi::Value::undefined();
60
+ }
61
+
62
+ JSI_HOST_FUNCTION(disconnect) {
63
+ audioRecorder_->disconnect();
64
+ return jsi::Value::undefined();
65
+ }
66
+
67
+ JSI_HOST_FUNCTION(start) {
68
+ audioRecorder_->start();
69
+
70
+ return jsi::Value::undefined();
71
+ }
72
+
73
+ JSI_HOST_FUNCTION(stop) {
74
+ audioRecorder_->stop();
75
+
76
+ return jsi::Value::undefined();
77
+ }
78
+
79
+ JSI_PROPERTY_SETTER(onAudioReady) {
80
+ audioRecorder_->setOnAudioReadyCallbackId(std::stoull(value.getString(runtime).utf8(runtime)));
81
+ }
82
+
83
+ private:
84
+ std::shared_ptr<AudioRecorder> audioRecorder_;
85
+ };
86
+ } // namespace audioapi
@@ -0,0 +1,56 @@
1
+ #pragma once
2
+
3
+ #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
+ #include <audioapi/core/sources/AudioScheduledSourceNode.h>
5
+
6
+ #include <memory>
7
+ #include <vector>
8
+
9
+ namespace audioapi {
10
+ using namespace facebook;
11
+
12
+ class AudioScheduledSourceNodeHostObject : public AudioNodeHostObject {
13
+ public:
14
+ explicit AudioScheduledSourceNodeHostObject(
15
+ const std::shared_ptr<AudioScheduledSourceNode> &node)
16
+ : AudioNodeHostObject(node) {
17
+ addSetters(
18
+ JSI_EXPORT_PROPERTY_SETTER(AudioScheduledSourceNodeHostObject, onEnded));
19
+ addFunctions(
20
+ JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, start),
21
+ JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, stop));
22
+ }
23
+
24
+ ~AudioScheduledSourceNodeHostObject() {
25
+ auto audioScheduledSourceNode =
26
+ std::static_pointer_cast<AudioScheduledSourceNode>(node_);
27
+
28
+ // When JSI object is garbage collected (together with the eventual callback),
29
+ // underlying source node might still be active and try to call the non-existing callback.
30
+ audioScheduledSourceNode->clearOnEndedCallback();
31
+ }
32
+
33
+ JSI_PROPERTY_SETTER(onEnded) {
34
+ auto audioScheduleSourceNode =
35
+ std::static_pointer_cast<AudioScheduledSourceNode>(node_);
36
+
37
+ audioScheduleSourceNode->setOnEndedCallbackId(std::stoull(value.getString(runtime).utf8(runtime)));
38
+ }
39
+
40
+ JSI_HOST_FUNCTION(start) {
41
+ auto when = args[0].getNumber();
42
+ auto audioScheduleSourceNode =
43
+ std::static_pointer_cast<AudioScheduledSourceNode>(node_);
44
+ audioScheduleSourceNode->start(when);
45
+ return jsi::Value::undefined();
46
+ }
47
+
48
+ JSI_HOST_FUNCTION(stop) {
49
+ auto time = args[0].getNumber();
50
+ auto audioScheduleSourceNode =
51
+ std::static_pointer_cast<AudioScheduledSourceNode>(node_);
52
+ audioScheduleSourceNode->stop(time);
53
+ return jsi::Value::undefined();
54
+ }
55
+ };
56
+ } // namespace audioapi