react-native-audio-api 0.8.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) 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/java/com/swmansion/audioapi/AudioAPIModule.kt +11 -1
  12. package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +24 -0
  13. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +15 -2
  14. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +53 -18
  15. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +57 -0
  16. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +6 -46
  17. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +70 -6
  18. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.h +10 -66
  19. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +105 -0
  20. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +17 -91
  21. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +362 -6
  22. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +29 -241
  23. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +70 -0
  24. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +6 -50
  25. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +18 -0
  26. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +18 -0
  27. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +148 -0
  28. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.h +37 -0
  29. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +92 -0
  30. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +29 -0
  31. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +20 -0
  32. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.h +19 -0
  33. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +21 -0
  34. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +21 -0
  35. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +41 -0
  36. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +28 -0
  37. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +69 -0
  38. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +33 -0
  39. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +73 -0
  40. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +29 -0
  41. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +94 -0
  42. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +46 -0
  43. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +60 -0
  44. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +25 -0
  45. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +152 -0
  46. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +37 -0
  47. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +52 -0
  48. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h +25 -0
  49. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +19 -0
  50. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +21 -0
  51. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +55 -0
  52. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +27 -0
  53. package/common/cpp/audioapi/HostObjects/{RecorderAdapterNodeHostObject.h → sources/RecorderAdapterNodeHostObject.h} +1 -2
  54. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +22 -0
  55. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +28 -0
  56. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +18 -0
  57. package/common/cpp/audioapi/core/AudioContext.cpp +3 -2
  58. package/common/cpp/audioapi/core/AudioContext.h +2 -1
  59. package/common/cpp/audioapi/core/AudioNode.cpp +3 -3
  60. package/common/cpp/audioapi/core/AudioNode.h +2 -2
  61. package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
  62. package/common/cpp/audioapi/core/AudioParam.h +1 -1
  63. package/common/cpp/audioapi/core/BaseAudioContext.cpp +47 -3
  64. package/common/cpp/audioapi/core/BaseAudioContext.h +13 -4
  65. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +4 -3
  66. package/common/cpp/audioapi/core/OfflineAudioContext.h +2 -1
  67. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +3 -1
  68. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +1 -1
  69. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +1 -1
  70. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +3 -1
  71. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +1 -1
  72. package/common/cpp/audioapi/core/effects/GainNode.cpp +3 -1
  73. package/common/cpp/audioapi/core/effects/GainNode.h +1 -1
  74. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +1 -1
  75. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +18 -13
  76. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +1 -1
  77. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +89 -0
  78. package/common/cpp/audioapi/core/effects/WorkletNode.h +65 -0
  79. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +91 -0
  80. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +52 -0
  81. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +1 -1
  82. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +2 -2
  83. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +47 -10
  84. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +18 -3
  85. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +98 -14
  86. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +9 -3
  87. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +37 -44
  88. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +7 -9
  89. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +1 -6
  90. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +1 -1
  91. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +53 -0
  92. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +26 -0
  93. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +7 -2
  94. package/common/cpp/audioapi/core/sources/OscillatorNode.h +1 -1
  95. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +3 -1
  96. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +1 -1
  97. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +9 -1
  98. package/common/cpp/audioapi/core/sources/StreamerNode.h +1 -9
  99. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +84 -0
  100. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +47 -0
  101. package/common/cpp/audioapi/core/{AudioParamEventQueue.cpp → utils/AudioParamEventQueue.cpp} +13 -7
  102. package/common/cpp/audioapi/core/{Constants.h → utils/Constants.h} +5 -0
  103. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +52 -0
  104. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +9 -0
  105. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +73 -0
  106. package/common/cpp/audioapi/dsp/Windows.cpp +1 -1
  107. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +1 -1
  108. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +2 -1
  109. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +14 -1
  110. package/common/cpp/audioapi/jsi/JsiHostObject.h +6 -12
  111. package/common/cpp/audioapi/jsi/JsiPromise.cpp +49 -0
  112. package/common/cpp/audioapi/jsi/JsiPromise.h +29 -1
  113. package/common/cpp/audioapi/utils/AudioBus.cpp +1 -1
  114. package/common/cpp/audioapi/utils/ThreadPool.hpp +104 -0
  115. package/common/cpp/test/AudioParamTest.cpp +204 -0
  116. package/common/cpp/test/CMakeLists.txt +12 -3
  117. package/common/cpp/test/GainTest.cpp +11 -10
  118. package/common/cpp/test/OscillatorTest.cpp +2 -1
  119. package/common/cpp/test/StereoPannerTest.cpp +129 -0
  120. package/ios/audioapi/ios/AudioAPIModule.mm +32 -5
  121. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +1 -1
  122. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
  123. package/lib/commonjs/api.js +36 -2
  124. package/lib/commonjs/api.js.map +1 -1
  125. package/lib/commonjs/api.web.js +8 -0
  126. package/lib/commonjs/api.web.js.map +1 -1
  127. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +7 -7
  128. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
  129. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +1 -6
  130. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  131. package/lib/commonjs/core/AudioBufferSourceNode.js +15 -0
  132. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  133. package/lib/commonjs/core/AudioContext.js +10 -1
  134. package/lib/commonjs/core/AudioContext.js.map +1 -1
  135. package/lib/commonjs/core/AudioScheduledSourceNode.js +4 -4
  136. package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
  137. package/lib/commonjs/core/BaseAudioContext.js +66 -11
  138. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  139. package/lib/commonjs/core/ConstantSourceNode.js +17 -0
  140. package/lib/commonjs/core/ConstantSourceNode.js.map +1 -0
  141. package/lib/commonjs/core/OfflineAudioContext.js +11 -2
  142. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  143. package/lib/commonjs/core/OscillatorNode.js +6 -0
  144. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  145. package/lib/commonjs/core/WorkletNode.js +11 -0
  146. package/lib/commonjs/core/WorkletNode.js.map +1 -0
  147. package/lib/commonjs/core/WorkletProcessingNode.js +11 -0
  148. package/lib/commonjs/core/WorkletProcessingNode.js.map +1 -0
  149. package/lib/commonjs/core/WorkletSourceNode.js +11 -0
  150. package/lib/commonjs/core/WorkletSourceNode.js.map +1 -0
  151. package/lib/commonjs/hooks/{useSytemVolume.js → useSystemVolume.js} +1 -1
  152. package/lib/commonjs/hooks/useSystemVolume.js.map +1 -0
  153. package/lib/commonjs/utils/index.js +9 -0
  154. package/lib/commonjs/utils/index.js.map +1 -1
  155. package/lib/commonjs/web-core/AudioContext.js +4 -0
  156. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  157. package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -1
  158. package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
  159. package/lib/commonjs/web-core/ConstantSourceNode.js +17 -0
  160. package/lib/commonjs/web-core/ConstantSourceNode.js.map +1 -0
  161. package/lib/commonjs/web-core/OfflineAudioContext.js +4 -0
  162. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  163. package/lib/module/api.js +6 -2
  164. package/lib/module/api.js.map +1 -1
  165. package/lib/module/api.web.js +1 -0
  166. package/lib/module/api.web.js.map +1 -1
  167. package/lib/module/core/AudioBufferBaseSourceNode.js +7 -7
  168. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
  169. package/lib/module/core/AudioBufferQueueSourceNode.js +1 -6
  170. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  171. package/lib/module/core/AudioBufferSourceNode.js +15 -0
  172. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  173. package/lib/module/core/AudioContext.js +10 -1
  174. package/lib/module/core/AudioContext.js.map +1 -1
  175. package/lib/module/core/AudioScheduledSourceNode.js +4 -4
  176. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  177. package/lib/module/core/BaseAudioContext.js +66 -11
  178. package/lib/module/core/BaseAudioContext.js.map +1 -1
  179. package/lib/module/core/ConstantSourceNode.js +11 -0
  180. package/lib/module/core/ConstantSourceNode.js.map +1 -0
  181. package/lib/module/core/OfflineAudioContext.js +11 -2
  182. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  183. package/lib/module/core/OscillatorNode.js +6 -0
  184. package/lib/module/core/OscillatorNode.js.map +1 -1
  185. package/lib/module/core/WorkletNode.js +5 -0
  186. package/lib/module/core/WorkletNode.js.map +1 -0
  187. package/lib/module/core/WorkletProcessingNode.js +5 -0
  188. package/lib/module/core/WorkletProcessingNode.js.map +1 -0
  189. package/lib/module/core/WorkletSourceNode.js +5 -0
  190. package/lib/module/core/WorkletSourceNode.js.map +1 -0
  191. package/lib/module/hooks/{useSytemVolume.js → useSystemVolume.js} +1 -1
  192. package/lib/module/hooks/useSystemVolume.js.map +1 -0
  193. package/lib/module/utils/index.js +8 -0
  194. package/lib/module/utils/index.js.map +1 -1
  195. package/lib/module/web-core/AudioContext.js +4 -0
  196. package/lib/module/web-core/AudioContext.js.map +1 -1
  197. package/lib/module/web-core/AudioScheduledSourceNode.js +1 -1
  198. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  199. package/lib/module/web-core/ConstantSourceNode.js +11 -0
  200. package/lib/module/web-core/ConstantSourceNode.js.map +1 -0
  201. package/lib/module/web-core/OfflineAudioContext.js +4 -0
  202. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  203. package/lib/typescript/api.d.ts +8 -4
  204. package/lib/typescript/api.d.ts.map +1 -1
  205. package/lib/typescript/api.web.d.ts +1 -0
  206. package/lib/typescript/api.web.d.ts.map +1 -1
  207. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +2 -2
  208. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
  209. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
  210. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  211. package/lib/typescript/core/AudioBufferSourceNode.d.ts +4 -0
  212. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  213. package/lib/typescript/core/AudioContext.d.ts +1 -0
  214. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  215. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -1
  216. package/lib/typescript/core/BaseAudioContext.d.ts +19 -11
  217. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  218. package/lib/typescript/core/ConstantSourceNode.d.ts +9 -0
  219. package/lib/typescript/core/ConstantSourceNode.d.ts.map +1 -0
  220. package/lib/typescript/core/OfflineAudioContext.d.ts +1 -0
  221. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  222. package/lib/typescript/core/OscillatorNode.d.ts +3 -0
  223. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  224. package/lib/typescript/core/WorkletNode.d.ts +4 -0
  225. package/lib/typescript/core/WorkletNode.d.ts.map +1 -0
  226. package/lib/typescript/core/WorkletProcessingNode.d.ts +4 -0
  227. package/lib/typescript/core/WorkletProcessingNode.d.ts.map +1 -0
  228. package/lib/typescript/core/WorkletSourceNode.d.ts +4 -0
  229. package/lib/typescript/core/WorkletSourceNode.d.ts.map +1 -0
  230. package/lib/typescript/events/types.d.ts +2 -0
  231. package/lib/typescript/events/types.d.ts.map +1 -1
  232. package/lib/typescript/hooks/{useSytemVolume.d.ts → useSystemVolume.d.ts} +1 -1
  233. package/lib/typescript/hooks/useSystemVolume.d.ts.map +1 -0
  234. package/lib/typescript/interfaces.d.ts +21 -3
  235. package/lib/typescript/interfaces.d.ts.map +1 -1
  236. package/lib/typescript/types.d.ts +2 -1
  237. package/lib/typescript/types.d.ts.map +1 -1
  238. package/lib/typescript/utils/index.d.ts +8 -0
  239. package/lib/typescript/utils/index.d.ts.map +1 -1
  240. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +1 -1
  241. package/lib/typescript/web-core/AudioContext.d.ts +4 -2
  242. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  243. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -1
  244. package/lib/typescript/web-core/BaseAudioContext.d.ts +2 -0
  245. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  246. package/lib/typescript/web-core/ConstantSourceNode.d.ts +8 -0
  247. package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +1 -0
  248. package/lib/typescript/web-core/OfflineAudioContext.d.ts +4 -2
  249. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  250. package/package.json +3 -2
  251. package/src/api.ts +12 -3
  252. package/src/api.web.ts +1 -0
  253. package/src/core/AudioBufferBaseSourceNode.ts +9 -9
  254. package/src/core/AudioBufferQueueSourceNode.ts +1 -9
  255. package/src/core/AudioBufferSourceNode.ts +28 -0
  256. package/src/core/AudioContext.ts +12 -1
  257. package/src/core/AudioScheduledSourceNode.ts +5 -5
  258. package/src/core/BaseAudioContext.ts +149 -13
  259. package/src/core/ConstantSourceNode.ts +13 -0
  260. package/src/core/OfflineAudioContext.ts +18 -2
  261. package/src/core/OscillatorNode.ts +11 -0
  262. package/src/core/WorkletNode.ts +3 -0
  263. package/src/core/WorkletProcessingNode.ts +3 -0
  264. package/src/core/WorkletSourceNode.ts +3 -0
  265. package/src/events/types.ts +2 -0
  266. package/src/interfaces.ts +59 -5
  267. package/src/types.ts +3 -1
  268. package/src/utils/index.ts +21 -0
  269. package/src/web-core/AudioBufferSourceNode.tsx +1 -1
  270. package/src/web-core/AudioContext.tsx +7 -2
  271. package/src/web-core/AudioScheduledSourceNode.tsx +1 -1
  272. package/src/web-core/BaseAudioContext.tsx +2 -0
  273. package/src/web-core/ConstantSourceNode.tsx +12 -0
  274. package/src/web-core/OfflineAudioContext.tsx +7 -2
  275. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +0 -149
  276. package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +0 -76
  277. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +0 -120
  278. package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +0 -67
  279. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +0 -142
  280. package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +0 -86
  281. package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +0 -56
  282. package/common/cpp/audioapi/HostObjects/BiquadFilterNodeHostObject.h +0 -89
  283. package/common/cpp/audioapi/HostObjects/GainNodeHostObject.h +0 -27
  284. package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +0 -65
  285. package/common/cpp/audioapi/HostObjects/StereoPannerNodeHostObject.h +0 -29
  286. package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +0 -30
  287. package/common/cpp/audioapi/events/AudioEventHandlerRegistryHostObject.h +0 -48
  288. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.h +0 -7
  289. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.mm +0 -12
  290. package/lib/commonjs/hooks/useSytemVolume.js.map +0 -1
  291. package/lib/module/hooks/useSytemVolume.js.map +0 -1
  292. package/lib/typescript/hooks/useSytemVolume.d.ts.map +0 -1
  293. /package/common/cpp/audioapi/HostObjects/{AudioDestinationNodeHostObject.h → destinations/AudioDestinationNodeHostObject.h} +0 -0
  294. /package/common/cpp/audioapi/HostObjects/{PeriodicWaveHostObject.h → effects/PeriodicWaveHostObject.h} +0 -0
  295. /package/common/cpp/audioapi/core/{AudioParamEventQueue.h → utils/AudioParamEventQueue.h} +0 -0
  296. /package/src/hooks/{useSytemVolume.ts → useSystemVolume.ts} +0 -0
@@ -0,0 +1,70 @@
1
+ #include <audioapi/HostObjects/OfflineAudioContextHostObject.h>
2
+
3
+ #include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
4
+ #include <audioapi/core/OfflineAudioContext.h>
5
+
6
+ namespace audioapi {
7
+
8
+ OfflineAudioContextHostObject::OfflineAudioContextHostObject(
9
+ const std::shared_ptr<OfflineAudioContext> &offlineAudioContext,
10
+ jsi::Runtime *runtime,
11
+ const std::shared_ptr<react::CallInvoker> &callInvoker)
12
+ : BaseAudioContextHostObject(offlineAudioContext, runtime, callInvoker) {
13
+ addFunctions(
14
+ JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, resume),
15
+ JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, suspend),
16
+ JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, startRendering));
17
+ }
18
+
19
+ JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, resume) {
20
+ auto promise = promiseVendor_->createPromise(
21
+ [this](const std::shared_ptr<Promise> &promise) {
22
+ auto audioContext =
23
+ std::static_pointer_cast<OfflineAudioContext>(context_);
24
+ audioContext->resume();
25
+ });
26
+
27
+ return promise;
28
+ }
29
+
30
+ JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, suspend) {
31
+ double when = args[0].getNumber();
32
+
33
+ auto promise = promiseVendor_->createPromise(
34
+ [this, when](const std::shared_ptr<Promise> &promise) {
35
+ auto audioContext =
36
+ std::static_pointer_cast<OfflineAudioContext>(context_);
37
+ OfflineAudioContextSuspendCallback callback = [promise]() {
38
+ promise->resolve(
39
+ [](jsi::Runtime &runtime) { return jsi::Value::undefined(); });
40
+ };
41
+ audioContext->suspend(when, callback);
42
+ });
43
+
44
+ return promise;
45
+ }
46
+
47
+ JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, startRendering) {
48
+ auto promise = promiseVendor_->createPromise(
49
+ [this](const std::shared_ptr<Promise> &promise) {
50
+ auto audioContext =
51
+ std::static_pointer_cast<OfflineAudioContext>(context_);
52
+
53
+ OfflineAudioContextResultCallback callback =
54
+ [promise](const std::shared_ptr<AudioBuffer> &audioBuffer) -> void {
55
+ auto audioBufferHostObject =
56
+ std::make_shared<AudioBufferHostObject>(audioBuffer);
57
+ promise->resolve([audioBufferHostObject = std::move(
58
+ audioBufferHostObject)](jsi::Runtime &runtime) {
59
+ return jsi::Object::createFromHostObject(
60
+ runtime, audioBufferHostObject);
61
+ });
62
+ };
63
+
64
+ audioContext->startRendering(callback);
65
+ });
66
+
67
+ return promise;
68
+ }
69
+
70
+ } // namespace audioapi
@@ -1,6 +1,5 @@
1
1
  #pragma once
2
2
 
3
- #include <audioapi/core/OfflineAudioContext.h>
4
3
  #include <audioapi/HostObjects/BaseAudioContextHostObject.h>
5
4
 
6
5
  #include <jsi/jsi.h>
@@ -11,60 +10,17 @@
11
10
  namespace audioapi {
12
11
  using namespace facebook;
13
12
 
13
+ class OfflineAudioContext;
14
+
14
15
  class OfflineAudioContextHostObject : public BaseAudioContextHostObject {
15
16
  public:
16
17
  explicit OfflineAudioContextHostObject(
17
18
  const std::shared_ptr<OfflineAudioContext> &offlineAudioContext,
18
19
  jsi::Runtime *runtime,
19
- const std::shared_ptr<react::CallInvoker> &callInvoker)
20
- : BaseAudioContextHostObject(offlineAudioContext, runtime, callInvoker) {
21
- addFunctions(
22
- JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, resume),
23
- JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, suspend),
24
- JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, startRendering));
25
- }
26
-
27
- JSI_HOST_FUNCTION(resume) {
28
- auto promise = promiseVendor_->createPromise([this](const std::shared_ptr<Promise>& promise) {
29
- auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
30
- audioContext->resume();
31
- });
32
-
33
- return promise;
34
- }
35
-
36
- JSI_HOST_FUNCTION(suspend) {
37
- double when = args[0].getNumber();
38
-
39
- auto promise = promiseVendor_->createPromise([this, when](const std::shared_ptr<Promise>& promise) {
40
- auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
41
- OfflineAudioContextSuspendCallback callback = [promise]() {
42
- promise->resolve([](jsi::Runtime &runtime) {
43
- return jsi::Value::undefined();
44
- });
45
- };
46
- audioContext->suspend(when, callback);
47
- });
48
-
49
- return promise;
50
- }
51
-
52
- JSI_HOST_FUNCTION(startRendering) {
53
- auto promise = promiseVendor_->createPromise([this](const std::shared_ptr<Promise>& promise) {
54
- auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
55
-
56
- OfflineAudioContextResultCallback callback =
57
- [promise](const std::shared_ptr<AudioBuffer>& audioBuffer) -> void {
58
- auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(audioBuffer);
59
- promise->resolve([audioBufferHostObject = std::move(audioBufferHostObject)](jsi::Runtime &runtime) {
60
- return jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
61
- });
62
- };
63
-
64
- audioContext->startRendering(callback);
65
- });
20
+ const std::shared_ptr<react::CallInvoker> &callInvoker);
66
21
 
67
- return promise;
68
- }
22
+ JSI_HOST_FUNCTION_DECL(resume);
23
+ JSI_HOST_FUNCTION_DECL(suspend);
24
+ JSI_HOST_FUNCTION_DECL(startRendering);
69
25
  };
70
26
  } // namespace audioapi
@@ -0,0 +1,18 @@
1
+ #pragma once
2
+
3
+ #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
+ #include <audioapi/core/effects/WorkletNode.h>
5
+
6
+ #include <memory>
7
+ #include <vector>
8
+
9
+ namespace audioapi {
10
+ using namespace facebook;
11
+
12
+ class WorkletNodeHostObject : public AudioNodeHostObject {
13
+ public:
14
+ explicit WorkletNodeHostObject(const std::shared_ptr<WorkletNode> &node)
15
+ : AudioNodeHostObject(node) {
16
+ }
17
+ };
18
+ } // namespace audioapi
@@ -0,0 +1,18 @@
1
+ #pragma once
2
+
3
+ #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
+ #include <audioapi/core/effects/WorkletProcessingNode.h>
5
+
6
+ #include <memory>
7
+ #include <vector>
8
+
9
+ namespace audioapi {
10
+ using namespace facebook;
11
+
12
+ class WorkletProcessingNodeHostObject : public AudioNodeHostObject {
13
+ public:
14
+ explicit WorkletProcessingNodeHostObject(const std::shared_ptr<WorkletProcessingNode> &node)
15
+ : AudioNodeHostObject(node) {
16
+ }
17
+ };
18
+ } // namespace audioapi
@@ -0,0 +1,148 @@
1
+ #include <audioapi/HostObjects/analysis/AnalyserNodeHostObject.h>
2
+
3
+ #include <audioapi/core/analysis/AnalyserNode.h>
4
+
5
+ namespace audioapi {
6
+
7
+ AnalyserNodeHostObject::AnalyserNodeHostObject(
8
+ const std::shared_ptr<AnalyserNode> &node)
9
+ : AudioNodeHostObject(node) {
10
+ addGetters(
11
+ JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, fftSize),
12
+ JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, frequencyBinCount),
13
+ JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, minDecibels),
14
+ JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, maxDecibels),
15
+ JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, smoothingTimeConstant),
16
+ JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, window));
17
+
18
+ addSetters(
19
+ JSI_EXPORT_PROPERTY_SETTER(AnalyserNodeHostObject, fftSize),
20
+ JSI_EXPORT_PROPERTY_SETTER(AnalyserNodeHostObject, minDecibels),
21
+ JSI_EXPORT_PROPERTY_SETTER(AnalyserNodeHostObject, maxDecibels),
22
+ JSI_EXPORT_PROPERTY_SETTER(AnalyserNodeHostObject, smoothingTimeConstant),
23
+ JSI_EXPORT_PROPERTY_SETTER(AnalyserNodeHostObject, window));
24
+
25
+ addFunctions(
26
+ JSI_EXPORT_FUNCTION(AnalyserNodeHostObject, getFloatFrequencyData),
27
+ JSI_EXPORT_FUNCTION(AnalyserNodeHostObject, getByteFrequencyData),
28
+ JSI_EXPORT_FUNCTION(AnalyserNodeHostObject, getFloatTimeDomainData),
29
+ JSI_EXPORT_FUNCTION(AnalyserNodeHostObject, getByteTimeDomainData));
30
+ }
31
+
32
+ JSI_PROPERTY_GETTER_IMPL(AnalyserNodeHostObject, fftSize) {
33
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
34
+ return {static_cast<int>(analyserNode->getFftSize())};
35
+ }
36
+
37
+ JSI_PROPERTY_GETTER_IMPL(AnalyserNodeHostObject, frequencyBinCount) {
38
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
39
+ return {static_cast<int>(analyserNode->getFrequencyBinCount())};
40
+ }
41
+
42
+ JSI_PROPERTY_GETTER_IMPL(AnalyserNodeHostObject, minDecibels) {
43
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
44
+ return {analyserNode->getMinDecibels()};
45
+ }
46
+
47
+ JSI_PROPERTY_GETTER_IMPL(AnalyserNodeHostObject, maxDecibels) {
48
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
49
+ return {analyserNode->getMaxDecibels()};
50
+ }
51
+
52
+ JSI_PROPERTY_GETTER_IMPL(AnalyserNodeHostObject, smoothingTimeConstant) {
53
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
54
+ return {analyserNode->getSmoothingTimeConstant()};
55
+ }
56
+
57
+ JSI_PROPERTY_GETTER_IMPL(AnalyserNodeHostObject, window) {
58
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
59
+ auto windowType = analyserNode->getWindowType();
60
+ return jsi::String::createFromUtf8(runtime, windowType);
61
+ }
62
+
63
+ JSI_PROPERTY_SETTER_IMPL(AnalyserNodeHostObject, fftSize) {
64
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
65
+ auto fftSize = static_cast<int>(value.getNumber());
66
+ analyserNode->setFftSize(fftSize);
67
+ }
68
+
69
+ JSI_PROPERTY_SETTER_IMPL(AnalyserNodeHostObject, minDecibels) {
70
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
71
+ auto minDecibels = static_cast<float>(value.getNumber());
72
+ analyserNode->setMinDecibels(minDecibels);
73
+ }
74
+
75
+ JSI_PROPERTY_SETTER_IMPL(AnalyserNodeHostObject, maxDecibels) {
76
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
77
+ auto maxDecibels = static_cast<float>(value.getNumber());
78
+ analyserNode->setMaxDecibels(maxDecibels);
79
+ }
80
+
81
+ JSI_PROPERTY_SETTER_IMPL(AnalyserNodeHostObject, smoothingTimeConstant) {
82
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
83
+ auto smoothingTimeConstant = static_cast<float>(value.getNumber());
84
+ analyserNode->setSmoothingTimeConstant(smoothingTimeConstant);
85
+ }
86
+
87
+ JSI_PROPERTY_SETTER_IMPL(AnalyserNodeHostObject, window) {
88
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
89
+ analyserNode->setWindowType(value.getString(runtime).utf8(runtime));
90
+ }
91
+
92
+ JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getFloatFrequencyData) {
93
+ auto arrayBuffer = args[0]
94
+ .getObject(runtime)
95
+ .getPropertyAsObject(runtime, "buffer")
96
+ .getArrayBuffer(runtime);
97
+ auto data = reinterpret_cast<float *>(arrayBuffer.data(runtime));
98
+ auto length = static_cast<int>(arrayBuffer.size(runtime));
99
+
100
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
101
+ analyserNode->getFloatFrequencyData(data, length);
102
+
103
+ return jsi::Value::undefined();
104
+ }
105
+
106
+ JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getByteFrequencyData) {
107
+ auto arrayBuffer = args[0]
108
+ .getObject(runtime)
109
+ .getPropertyAsObject(runtime, "buffer")
110
+ .getArrayBuffer(runtime);
111
+ auto data = arrayBuffer.data(runtime);
112
+ auto length = static_cast<int>(arrayBuffer.size(runtime));
113
+
114
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
115
+ analyserNode->getByteFrequencyData(data, length);
116
+
117
+ return jsi::Value::undefined();
118
+ }
119
+
120
+ JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getFloatTimeDomainData) {
121
+ auto arrayBuffer = args[0]
122
+ .getObject(runtime)
123
+ .getPropertyAsObject(runtime, "buffer")
124
+ .getArrayBuffer(runtime);
125
+ auto data = reinterpret_cast<float *>(arrayBuffer.data(runtime));
126
+ auto length = static_cast<int>(arrayBuffer.size(runtime));
127
+
128
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
129
+ analyserNode->getFloatTimeDomainData(data, length);
130
+
131
+ return jsi::Value::undefined();
132
+ }
133
+
134
+ JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getByteTimeDomainData) {
135
+ auto arrayBuffer = args[0]
136
+ .getObject(runtime)
137
+ .getPropertyAsObject(runtime, "buffer")
138
+ .getArrayBuffer(runtime);
139
+ auto data = arrayBuffer.data(runtime);
140
+ auto length = static_cast<int>(arrayBuffer.size(runtime));
141
+
142
+ auto analyserNode = std::static_pointer_cast<AnalyserNode>(node_);
143
+ analyserNode->getByteTimeDomainData(data, length);
144
+
145
+ return jsi::Value::undefined();
146
+ }
147
+
148
+ } // namespace audioapi
@@ -0,0 +1,37 @@
1
+ #pragma once
2
+
3
+ #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
+
5
+ #include <memory>
6
+ #include <string>
7
+ #include <vector>
8
+
9
+ namespace audioapi {
10
+ using namespace facebook;
11
+
12
+ class AnalyserNode;
13
+
14
+ class AnalyserNodeHostObject : public AudioNodeHostObject {
15
+ public:
16
+ explicit AnalyserNodeHostObject(const std::shared_ptr<AnalyserNode> &node);
17
+
18
+ JSI_PROPERTY_GETTER_DECL(fftSize);
19
+ JSI_PROPERTY_GETTER_DECL(frequencyBinCount);
20
+ JSI_PROPERTY_GETTER_DECL(minDecibels);
21
+ JSI_PROPERTY_GETTER_DECL(maxDecibels);
22
+ JSI_PROPERTY_GETTER_DECL(smoothingTimeConstant);
23
+ JSI_PROPERTY_GETTER_DECL(window);
24
+
25
+ JSI_PROPERTY_SETTER_DECL(fftSize);
26
+ JSI_PROPERTY_SETTER_DECL(minDecibels);
27
+ JSI_PROPERTY_SETTER_DECL(maxDecibels);
28
+ JSI_PROPERTY_SETTER_DECL(smoothingTimeConstant);
29
+ JSI_PROPERTY_SETTER_DECL(window);
30
+
31
+ JSI_HOST_FUNCTION_DECL(getFloatFrequencyData);
32
+ JSI_HOST_FUNCTION_DECL(getByteFrequencyData);
33
+ JSI_HOST_FUNCTION_DECL(getFloatTimeDomainData);
34
+ JSI_HOST_FUNCTION_DECL(getByteTimeDomainData);
35
+ };
36
+
37
+ } // namespace audioapi
@@ -0,0 +1,92 @@
1
+ #include <audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h>
2
+
3
+ #include <audioapi/HostObjects/AudioParamHostObject.h>
4
+ #include <audioapi/core/effects/BiquadFilterNode.h>
5
+
6
+ namespace audioapi {
7
+
8
+ BiquadFilterNodeHostObject::BiquadFilterNodeHostObject(
9
+ const std::shared_ptr<BiquadFilterNode> &node)
10
+ : AudioNodeHostObject(node) {
11
+ addGetters(
12
+ JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, frequency),
13
+ JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, detune),
14
+ JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, Q),
15
+ JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, gain),
16
+ JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, type));
17
+
18
+ addSetters(JSI_EXPORT_PROPERTY_SETTER(BiquadFilterNodeHostObject, type));
19
+
20
+ addFunctions(
21
+ JSI_EXPORT_FUNCTION(BiquadFilterNodeHostObject, getFrequencyResponse));
22
+ }
23
+
24
+ JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, frequency) {
25
+ auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
26
+ auto frequencyParam_ = std::make_shared<AudioParamHostObject>(
27
+ biquadFilterNode->getFrequencyParam());
28
+ return jsi::Object::createFromHostObject(runtime, frequencyParam_);
29
+ }
30
+
31
+ JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, detune) {
32
+ auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
33
+ auto detuneParam_ = std::make_shared<AudioParamHostObject>(
34
+ biquadFilterNode->getDetuneParam());
35
+ return jsi::Object::createFromHostObject(runtime, detuneParam_);
36
+ }
37
+
38
+ JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, Q) {
39
+ auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
40
+ auto QParam_ =
41
+ std::make_shared<AudioParamHostObject>(biquadFilterNode->getQParam());
42
+ return jsi::Object::createFromHostObject(runtime, QParam_);
43
+ }
44
+
45
+ JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, gain) {
46
+ auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
47
+ auto gainParam_ =
48
+ std::make_shared<AudioParamHostObject>(biquadFilterNode->getGainParam());
49
+ return jsi::Object::createFromHostObject(runtime, gainParam_);
50
+ }
51
+
52
+ JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, type) {
53
+ auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
54
+ auto type = biquadFilterNode->getType();
55
+ return jsi::String::createFromUtf8(runtime, type);
56
+ }
57
+
58
+ JSI_PROPERTY_SETTER_IMPL(BiquadFilterNodeHostObject, type) {
59
+ auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
60
+ biquadFilterNode->setType(value.getString(runtime).utf8(runtime));
61
+ }
62
+
63
+ JSI_HOST_FUNCTION_IMPL(BiquadFilterNodeHostObject, getFrequencyResponse) {
64
+ auto arrayBufferFrequency = args[0]
65
+ .getObject(runtime)
66
+ .getPropertyAsObject(runtime, "buffer")
67
+ .getArrayBuffer(runtime);
68
+ auto frequencyArray =
69
+ reinterpret_cast<float *>(arrayBufferFrequency.data(runtime));
70
+ auto length = static_cast<int>(arrayBufferFrequency.size(runtime));
71
+
72
+ auto arrayBufferMag = args[1]
73
+ .getObject(runtime)
74
+ .getPropertyAsObject(runtime, "buffer")
75
+ .getArrayBuffer(runtime);
76
+ auto magResponseOut = reinterpret_cast<float *>(arrayBufferMag.data(runtime));
77
+
78
+ auto arrayBufferPhase = args[2]
79
+ .getObject(runtime)
80
+ .getPropertyAsObject(runtime, "buffer")
81
+ .getArrayBuffer(runtime);
82
+ auto phaseResponseOut =
83
+ reinterpret_cast<float *>(arrayBufferPhase.data(runtime));
84
+
85
+ auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
86
+ biquadFilterNode->getFrequencyResponse(
87
+ frequencyArray, magResponseOut, phaseResponseOut, length);
88
+
89
+ return jsi::Value::undefined();
90
+ }
91
+
92
+ } // namespace audioapi
@@ -0,0 +1,29 @@
1
+ #pragma once
2
+
3
+ #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
+
5
+ #include <memory>
6
+ #include <string>
7
+ #include <vector>
8
+
9
+ namespace audioapi {
10
+ using namespace facebook;
11
+
12
+ class BiquadFilterNode;
13
+
14
+ class BiquadFilterNodeHostObject : public AudioNodeHostObject {
15
+ public:
16
+ explicit BiquadFilterNodeHostObject(
17
+ const std::shared_ptr<BiquadFilterNode> &node);
18
+
19
+ JSI_PROPERTY_GETTER_DECL(frequency);
20
+ JSI_PROPERTY_GETTER_DECL(detune);
21
+ JSI_PROPERTY_GETTER_DECL(Q);
22
+ JSI_PROPERTY_GETTER_DECL(gain);
23
+ JSI_PROPERTY_GETTER_DECL(type);
24
+
25
+ JSI_PROPERTY_SETTER_DECL(type);
26
+
27
+ JSI_HOST_FUNCTION_DECL(getFrequencyResponse);
28
+ };
29
+ } // namespace audioapi
@@ -0,0 +1,20 @@
1
+ #include <audioapi/HostObjects/effects/GainNodeHostObject.h>
2
+
3
+ #include <audioapi/HostObjects/AudioParamHostObject.h>
4
+ #include <audioapi/core/effects/GainNode.h>
5
+
6
+ namespace audioapi {
7
+
8
+ GainNodeHostObject::GainNodeHostObject(const std::shared_ptr<GainNode> &node)
9
+ : AudioNodeHostObject(node) {
10
+ addGetters(JSI_EXPORT_PROPERTY_GETTER(GainNodeHostObject, gain));
11
+ }
12
+
13
+ JSI_PROPERTY_GETTER_IMPL(GainNodeHostObject, gain) {
14
+ auto gainNode = std::static_pointer_cast<GainNode>(node_);
15
+ auto gainParam =
16
+ std::make_shared<AudioParamHostObject>(gainNode->getGainParam());
17
+ return jsi::Object::createFromHostObject(runtime, gainParam);
18
+ }
19
+
20
+ } // namespace audioapi
@@ -0,0 +1,19 @@
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 GainNode;
12
+
13
+ class GainNodeHostObject : public AudioNodeHostObject {
14
+ public:
15
+ explicit GainNodeHostObject(const std::shared_ptr<GainNode> &node);
16
+
17
+ JSI_PROPERTY_GETTER_DECL(gain);
18
+ };
19
+ } // namespace audioapi
@@ -0,0 +1,21 @@
1
+ #include <audioapi/HostObjects/effects/StereoPannerNodeHostObject.h>
2
+
3
+ #include <audioapi/HostObjects/AudioParamHostObject.h>
4
+ #include <audioapi/core/effects/StereoPannerNode.h>
5
+
6
+ namespace audioapi {
7
+
8
+ StereoPannerNodeHostObject::StereoPannerNodeHostObject(
9
+ const std::shared_ptr<StereoPannerNode> &node)
10
+ : AudioNodeHostObject(node) {
11
+ addGetters(JSI_EXPORT_PROPERTY_GETTER(StereoPannerNodeHostObject, pan));
12
+ }
13
+
14
+ JSI_PROPERTY_GETTER_IMPL(StereoPannerNodeHostObject, pan) {
15
+ auto stereoPannerNode = std::static_pointer_cast<StereoPannerNode>(node_);
16
+ auto panParam_ =
17
+ std::make_shared<AudioParamHostObject>(stereoPannerNode->getPanParam());
18
+ return jsi::Object::createFromHostObject(runtime, panParam_);
19
+ }
20
+
21
+ } // namespace audioapi
@@ -0,0 +1,21 @@
1
+ #pragma once
2
+
3
+ #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
+
5
+ #include <memory>
6
+ #include <string>
7
+ #include <vector>
8
+
9
+ namespace audioapi {
10
+ using namespace facebook;
11
+
12
+ class StereoPannerNode;
13
+
14
+ class StereoPannerNodeHostObject : public AudioNodeHostObject {
15
+ public:
16
+ explicit StereoPannerNodeHostObject(
17
+ const std::shared_ptr<StereoPannerNode> &node);
18
+
19
+ JSI_PROPERTY_GETTER_DECL(pan);
20
+ };
21
+ } // namespace audioapi
@@ -0,0 +1,41 @@
1
+ #include <audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h>
2
+
3
+ #include <audioapi/events/AudioEventHandlerRegistry.h>
4
+
5
+ namespace audioapi {
6
+
7
+ AudioEventHandlerRegistryHostObject::AudioEventHandlerRegistryHostObject(
8
+ const std::shared_ptr<AudioEventHandlerRegistry> &eventHandlerRegistry) {
9
+ eventHandlerRegistry_ = eventHandlerRegistry;
10
+
11
+ addFunctions(
12
+ JSI_EXPORT_FUNCTION(
13
+ AudioEventHandlerRegistryHostObject, addAudioEventListener),
14
+ JSI_EXPORT_FUNCTION(
15
+ AudioEventHandlerRegistryHostObject, removeAudioEventListener));
16
+ }
17
+
18
+ JSI_HOST_FUNCTION_IMPL(
19
+ AudioEventHandlerRegistryHostObject,
20
+ addAudioEventListener) {
21
+ auto eventName = args[0].getString(runtime).utf8(runtime);
22
+ auto callback = std::make_shared<jsi::Function>(
23
+ args[1].getObject(runtime).getFunction(runtime));
24
+
25
+ auto listenerId = eventHandlerRegistry_->registerHandler(eventName, callback);
26
+
27
+ return jsi::String::createFromUtf8(runtime, std::to_string(listenerId));
28
+ }
29
+
30
+ JSI_HOST_FUNCTION_IMPL(
31
+ AudioEventHandlerRegistryHostObject,
32
+ removeAudioEventListener) {
33
+ auto eventName = args[0].getString(runtime).utf8(runtime);
34
+ uint64_t listenerId = std::stoull(args[1].getString(runtime).utf8(runtime));
35
+
36
+ eventHandlerRegistry_->unregisterHandler(eventName, listenerId);
37
+
38
+ return jsi::Value::undefined();
39
+ }
40
+
41
+ } // namespace audioapi
@@ -0,0 +1,28 @@
1
+ #pragma once
2
+
3
+ #include <audioapi/jsi/JsiHostObject.h>
4
+
5
+ #include <jsi/jsi.h>
6
+ #include <ReactCommon/CallInvoker.h>
7
+ #include <memory>
8
+ #include <unordered_map>
9
+ #include <vector>
10
+ #include <string>
11
+
12
+ namespace audioapi {
13
+ using namespace facebook;
14
+
15
+ class AudioEventHandlerRegistry;
16
+
17
+ class AudioEventHandlerRegistryHostObject : public JsiHostObject {
18
+ public:
19
+ explicit AudioEventHandlerRegistryHostObject(const std::shared_ptr<AudioEventHandlerRegistry>& eventHandlerRegistry);
20
+
21
+ JSI_HOST_FUNCTION_DECL(addAudioEventListener);
22
+ JSI_HOST_FUNCTION_DECL(removeAudioEventListener);
23
+
24
+ private:
25
+ std::shared_ptr<AudioEventHandlerRegistry> eventHandlerRegistry_;
26
+ };
27
+ } // namespace audioapi
28
+