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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/README.md +40 -39
  2. package/RNAudioAPI.podspec +17 -12
  3. package/android/build.gradle +44 -4
  4. package/android/src/main/cpp/audioapi/CMakeLists.txt +65 -0
  5. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +29 -1
  6. package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +14 -0
  7. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +7 -1
  8. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +6 -1
  9. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +1 -1
  10. package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +36 -0
  11. package/android/src/main/cpp/audioapi/android/core/{AudioDecoder.cpp → utils/AudioDecoder.cpp} +79 -75
  12. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +11 -1
  13. package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +24 -0
  14. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +15 -2
  15. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +154 -38
  16. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +57 -0
  17. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +6 -46
  18. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +70 -6
  19. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.h +10 -66
  20. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +105 -0
  21. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +17 -91
  22. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +262 -6
  23. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +26 -241
  24. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +70 -0
  25. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +6 -50
  26. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +18 -0
  27. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +18 -0
  28. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +148 -0
  29. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.h +37 -0
  30. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +92 -0
  31. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +29 -0
  32. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +20 -0
  33. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.h +19 -0
  34. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +21 -0
  35. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +21 -0
  36. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +41 -0
  37. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +28 -0
  38. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +69 -0
  39. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +33 -0
  40. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +73 -0
  41. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +29 -0
  42. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +94 -0
  43. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +46 -0
  44. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +60 -0
  45. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +25 -0
  46. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +152 -0
  47. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +37 -0
  48. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +52 -0
  49. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h +25 -0
  50. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +19 -0
  51. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +21 -0
  52. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +55 -0
  53. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +27 -0
  54. package/common/cpp/audioapi/HostObjects/{RecorderAdapterNodeHostObject.h → sources/RecorderAdapterNodeHostObject.h} +1 -2
  55. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +22 -0
  56. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +28 -0
  57. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +18 -0
  58. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +133 -0
  59. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.h +28 -0
  60. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +58 -0
  61. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.h +26 -0
  62. package/common/cpp/audioapi/core/AudioContext.cpp +3 -4
  63. package/common/cpp/audioapi/core/AudioContext.h +2 -1
  64. package/common/cpp/audioapi/core/AudioNode.cpp +3 -3
  65. package/common/cpp/audioapi/core/AudioNode.h +2 -2
  66. package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
  67. package/common/cpp/audioapi/core/AudioParam.h +1 -1
  68. package/common/cpp/audioapi/core/BaseAudioContext.cpp +47 -38
  69. package/common/cpp/audioapi/core/BaseAudioContext.h +17 -16
  70. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +4 -5
  71. package/common/cpp/audioapi/core/OfflineAudioContext.h +2 -1
  72. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +3 -1
  73. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +1 -1
  74. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +1 -1
  75. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +3 -1
  76. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +1 -1
  77. package/common/cpp/audioapi/core/effects/GainNode.cpp +3 -1
  78. package/common/cpp/audioapi/core/effects/GainNode.h +1 -1
  79. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +1 -1
  80. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +18 -13
  81. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +1 -1
  82. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +89 -0
  83. package/common/cpp/audioapi/core/effects/WorkletNode.h +65 -0
  84. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +91 -0
  85. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +52 -0
  86. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +1 -1
  87. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +2 -2
  88. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +47 -10
  89. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +18 -3
  90. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +98 -14
  91. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +9 -3
  92. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +37 -44
  93. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +7 -9
  94. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +1 -6
  95. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +1 -1
  96. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +53 -0
  97. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +26 -0
  98. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +7 -2
  99. package/common/cpp/audioapi/core/sources/OscillatorNode.h +1 -1
  100. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +3 -1
  101. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +1 -1
  102. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +9 -1
  103. package/common/cpp/audioapi/core/sources/StreamerNode.h +1 -9
  104. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +84 -0
  105. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +47 -0
  106. package/common/cpp/audioapi/core/types/AudioFormat.h +16 -0
  107. package/common/cpp/audioapi/core/utils/AudioDecoder.h +36 -91
  108. package/common/cpp/audioapi/core/{AudioParamEventQueue.cpp → utils/AudioParamEventQueue.cpp} +13 -7
  109. package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +75 -0
  110. package/common/cpp/audioapi/core/utils/AudioStretcher.h +30 -0
  111. package/common/cpp/audioapi/core/{Constants.h → utils/Constants.h} +9 -0
  112. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +52 -0
  113. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +9 -0
  114. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +73 -0
  115. package/common/cpp/audioapi/dsp/Windows.cpp +1 -1
  116. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +1 -1
  117. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +2 -1
  118. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +14 -1
  119. package/common/cpp/audioapi/jsi/JsiHostObject.h +6 -12
  120. package/common/cpp/audioapi/jsi/JsiPromise.cpp +49 -0
  121. package/common/cpp/audioapi/jsi/JsiPromise.h +29 -1
  122. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +241 -282
  123. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +57 -19
  124. package/common/cpp/audioapi/utils/AudioBus.cpp +1 -1
  125. package/common/cpp/audioapi/utils/ThreadPool.hpp +104 -0
  126. package/common/cpp/test/AudioParamTest.cpp +204 -0
  127. package/common/cpp/test/CMakeLists.txt +13 -4
  128. package/common/cpp/test/GainTest.cpp +11 -10
  129. package/common/cpp/test/OscillatorTest.cpp +2 -1
  130. package/common/cpp/test/StereoPannerTest.cpp +129 -0
  131. package/ios/audioapi/ios/AudioAPIModule.mm +32 -5
  132. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +1 -1
  133. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
  134. package/ios/audioapi/ios/core/utils/AudioDecoder.mm +160 -0
  135. package/lib/commonjs/api.js +57 -3
  136. package/lib/commonjs/api.js.map +1 -1
  137. package/lib/commonjs/api.web.js +8 -0
  138. package/lib/commonjs/api.web.js.map +1 -1
  139. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +7 -7
  140. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
  141. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +1 -6
  142. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  143. package/lib/commonjs/core/AudioBufferSourceNode.js +15 -0
  144. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  145. package/lib/commonjs/core/AudioContext.js +10 -1
  146. package/lib/commonjs/core/AudioContext.js.map +1 -1
  147. package/lib/commonjs/core/AudioDecoder.js +48 -0
  148. package/lib/commonjs/core/AudioDecoder.js.map +1 -0
  149. package/lib/commonjs/core/AudioScheduledSourceNode.js +4 -4
  150. package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
  151. package/lib/commonjs/core/AudioStretcher.js +31 -0
  152. package/lib/commonjs/core/AudioStretcher.js.map +1 -0
  153. package/lib/commonjs/core/BaseAudioContext.js +76 -28
  154. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  155. package/lib/commonjs/core/ConstantSourceNode.js +17 -0
  156. package/lib/commonjs/core/ConstantSourceNode.js.map +1 -0
  157. package/lib/commonjs/core/OfflineAudioContext.js +11 -2
  158. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  159. package/lib/commonjs/core/OscillatorNode.js +6 -0
  160. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  161. package/lib/commonjs/core/WorkletNode.js +11 -0
  162. package/lib/commonjs/core/WorkletNode.js.map +1 -0
  163. package/lib/commonjs/core/WorkletProcessingNode.js +11 -0
  164. package/lib/commonjs/core/WorkletProcessingNode.js.map +1 -0
  165. package/lib/commonjs/core/WorkletSourceNode.js +11 -0
  166. package/lib/commonjs/core/WorkletSourceNode.js.map +1 -0
  167. package/lib/commonjs/hooks/{useSytemVolume.js → useSystemVolume.js} +1 -1
  168. package/lib/commonjs/hooks/useSystemVolume.js.map +1 -0
  169. package/lib/commonjs/utils/index.js +9 -0
  170. package/lib/commonjs/utils/index.js.map +1 -1
  171. package/lib/commonjs/web-core/AudioContext.js +4 -0
  172. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  173. package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -1
  174. package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
  175. package/lib/commonjs/web-core/ConstantSourceNode.js +17 -0
  176. package/lib/commonjs/web-core/ConstantSourceNode.js.map +1 -0
  177. package/lib/commonjs/web-core/OfflineAudioContext.js +4 -0
  178. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  179. package/lib/module/api.js +9 -3
  180. package/lib/module/api.js.map +1 -1
  181. package/lib/module/api.web.js +1 -0
  182. package/lib/module/api.web.js.map +1 -1
  183. package/lib/module/core/AudioBufferBaseSourceNode.js +7 -7
  184. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
  185. package/lib/module/core/AudioBufferQueueSourceNode.js +1 -6
  186. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  187. package/lib/module/core/AudioBufferSourceNode.js +15 -0
  188. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  189. package/lib/module/core/AudioContext.js +10 -1
  190. package/lib/module/core/AudioContext.js.map +1 -1
  191. package/lib/module/core/AudioDecoder.js +42 -0
  192. package/lib/module/core/AudioDecoder.js.map +1 -0
  193. package/lib/module/core/AudioScheduledSourceNode.js +4 -4
  194. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  195. package/lib/module/core/AudioStretcher.js +26 -0
  196. package/lib/module/core/AudioStretcher.js.map +1 -0
  197. package/lib/module/core/BaseAudioContext.js +76 -28
  198. package/lib/module/core/BaseAudioContext.js.map +1 -1
  199. package/lib/module/core/ConstantSourceNode.js +11 -0
  200. package/lib/module/core/ConstantSourceNode.js.map +1 -0
  201. package/lib/module/core/OfflineAudioContext.js +11 -2
  202. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  203. package/lib/module/core/OscillatorNode.js +6 -0
  204. package/lib/module/core/OscillatorNode.js.map +1 -1
  205. package/lib/module/core/WorkletNode.js +5 -0
  206. package/lib/module/core/WorkletNode.js.map +1 -0
  207. package/lib/module/core/WorkletProcessingNode.js +5 -0
  208. package/lib/module/core/WorkletProcessingNode.js.map +1 -0
  209. package/lib/module/core/WorkletSourceNode.js +5 -0
  210. package/lib/module/core/WorkletSourceNode.js.map +1 -0
  211. package/lib/module/hooks/{useSytemVolume.js → useSystemVolume.js} +1 -1
  212. package/lib/module/hooks/useSystemVolume.js.map +1 -0
  213. package/lib/module/utils/index.js +8 -0
  214. package/lib/module/utils/index.js.map +1 -1
  215. package/lib/module/web-core/AudioContext.js +4 -0
  216. package/lib/module/web-core/AudioContext.js.map +1 -1
  217. package/lib/module/web-core/AudioScheduledSourceNode.js +1 -1
  218. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  219. package/lib/module/web-core/ConstantSourceNode.js +11 -0
  220. package/lib/module/web-core/ConstantSourceNode.js.map +1 -0
  221. package/lib/module/web-core/OfflineAudioContext.js +4 -0
  222. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  223. package/lib/typescript/api.d.ts +13 -5
  224. package/lib/typescript/api.d.ts.map +1 -1
  225. package/lib/typescript/api.web.d.ts +1 -0
  226. package/lib/typescript/api.web.d.ts.map +1 -1
  227. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +2 -2
  228. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
  229. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
  230. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  231. package/lib/typescript/core/AudioBufferSourceNode.d.ts +4 -0
  232. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  233. package/lib/typescript/core/AudioContext.d.ts +1 -0
  234. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  235. package/lib/typescript/core/AudioDecoder.d.ts +4 -0
  236. package/lib/typescript/core/AudioDecoder.d.ts.map +1 -0
  237. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -1
  238. package/lib/typescript/core/AudioStretcher.d.ts +3 -0
  239. package/lib/typescript/core/AudioStretcher.d.ts.map +1 -0
  240. package/lib/typescript/core/BaseAudioContext.d.ts +21 -16
  241. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  242. package/lib/typescript/core/ConstantSourceNode.d.ts +9 -0
  243. package/lib/typescript/core/ConstantSourceNode.d.ts.map +1 -0
  244. package/lib/typescript/core/OfflineAudioContext.d.ts +1 -0
  245. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  246. package/lib/typescript/core/OscillatorNode.d.ts +3 -0
  247. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  248. package/lib/typescript/core/WorkletNode.d.ts +4 -0
  249. package/lib/typescript/core/WorkletNode.d.ts.map +1 -0
  250. package/lib/typescript/core/WorkletProcessingNode.d.ts +4 -0
  251. package/lib/typescript/core/WorkletProcessingNode.d.ts.map +1 -0
  252. package/lib/typescript/core/WorkletSourceNode.d.ts +4 -0
  253. package/lib/typescript/core/WorkletSourceNode.d.ts.map +1 -0
  254. package/lib/typescript/events/types.d.ts +2 -0
  255. package/lib/typescript/events/types.d.ts.map +1 -1
  256. package/lib/typescript/hooks/{useSytemVolume.d.ts → useSystemVolume.d.ts} +1 -1
  257. package/lib/typescript/hooks/useSystemVolume.d.ts.map +1 -0
  258. package/lib/typescript/interfaces.d.ts +31 -6
  259. package/lib/typescript/interfaces.d.ts.map +1 -1
  260. package/lib/typescript/types.d.ts +2 -1
  261. package/lib/typescript/types.d.ts.map +1 -1
  262. package/lib/typescript/utils/index.d.ts +8 -0
  263. package/lib/typescript/utils/index.d.ts.map +1 -1
  264. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +1 -1
  265. package/lib/typescript/web-core/AudioContext.d.ts +4 -2
  266. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  267. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -1
  268. package/lib/typescript/web-core/BaseAudioContext.d.ts +2 -0
  269. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  270. package/lib/typescript/web-core/ConstantSourceNode.d.ts +8 -0
  271. package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +1 -0
  272. package/lib/typescript/web-core/OfflineAudioContext.d.ts +4 -2
  273. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  274. package/package.json +3 -2
  275. package/src/api.ts +22 -3
  276. package/src/api.web.ts +1 -0
  277. package/src/core/AudioBufferBaseSourceNode.ts +9 -9
  278. package/src/core/AudioBufferQueueSourceNode.ts +1 -9
  279. package/src/core/AudioBufferSourceNode.ts +28 -0
  280. package/src/core/AudioContext.ts +12 -1
  281. package/src/core/AudioDecoder.ts +78 -0
  282. package/src/core/AudioScheduledSourceNode.ts +5 -5
  283. package/src/core/AudioStretcher.ts +43 -0
  284. package/src/core/BaseAudioContext.ts +174 -41
  285. package/src/core/ConstantSourceNode.ts +13 -0
  286. package/src/core/OfflineAudioContext.ts +18 -2
  287. package/src/core/OscillatorNode.ts +11 -0
  288. package/src/core/WorkletNode.ts +3 -0
  289. package/src/core/WorkletProcessingNode.ts +3 -0
  290. package/src/core/WorkletSourceNode.ts +3 -0
  291. package/src/events/types.ts +2 -0
  292. package/src/interfaces.ts +85 -11
  293. package/src/types.ts +3 -1
  294. package/src/utils/index.ts +21 -0
  295. package/src/web-core/AudioBufferSourceNode.tsx +1 -1
  296. package/src/web-core/AudioContext.tsx +7 -2
  297. package/src/web-core/AudioScheduledSourceNode.tsx +1 -1
  298. package/src/web-core/BaseAudioContext.tsx +2 -0
  299. package/src/web-core/ConstantSourceNode.tsx +12 -0
  300. package/src/web-core/OfflineAudioContext.tsx +7 -2
  301. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +0 -149
  302. package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +0 -76
  303. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +0 -120
  304. package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +0 -67
  305. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +0 -142
  306. package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +0 -86
  307. package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +0 -56
  308. package/common/cpp/audioapi/HostObjects/BiquadFilterNodeHostObject.h +0 -89
  309. package/common/cpp/audioapi/HostObjects/GainNodeHostObject.h +0 -27
  310. package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +0 -65
  311. package/common/cpp/audioapi/HostObjects/StereoPannerNodeHostObject.h +0 -29
  312. package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +0 -30
  313. package/common/cpp/audioapi/events/AudioEventHandlerRegistryHostObject.h +0 -48
  314. package/ios/audioapi/ios/core/AudioDecoder.mm +0 -156
  315. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.h +0 -7
  316. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.mm +0 -12
  317. package/lib/commonjs/hooks/useSytemVolume.js.map +0 -1
  318. package/lib/module/hooks/useSytemVolume.js.map +0 -1
  319. package/lib/typescript/hooks/useSytemVolume.d.ts.map +0 -1
  320. /package/common/cpp/audioapi/HostObjects/{AudioDestinationNodeHostObject.h → destinations/AudioDestinationNodeHostObject.h} +0 -0
  321. /package/common/cpp/audioapi/HostObjects/{PeriodicWaveHostObject.h → effects/PeriodicWaveHostObject.h} +0 -0
  322. /package/common/cpp/audioapi/core/{AudioParamEventQueue.h → utils/AudioParamEventQueue.h} +0 -0
  323. /package/src/hooks/{useSytemVolume.ts → useSystemVolume.ts} +0 -0
@@ -1,6 +1,5 @@
1
1
  #pragma once
2
2
 
3
- #include <audioapi/core/AudioContext.h>
4
3
  #include <audioapi/HostObjects/BaseAudioContextHostObject.h>
5
4
 
6
5
  #include <jsi/jsi.h>
@@ -11,56 +10,17 @@
11
10
  namespace audioapi {
12
11
  using namespace facebook;
13
12
 
13
+ class AudioContext;
14
+
14
15
  class AudioContextHostObject : public BaseAudioContextHostObject {
15
16
  public:
16
17
  explicit AudioContextHostObject(
17
18
  const std::shared_ptr<AudioContext> &audioContext,
18
19
  jsi::Runtime *runtime,
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
- });
20
+ const std::shared_ptr<react::CallInvoker> &callInvoker);
62
21
 
63
- return promise;
64
- }
22
+ JSI_HOST_FUNCTION_DECL(close);
23
+ JSI_HOST_FUNCTION_DECL(resume);
24
+ JSI_HOST_FUNCTION_DECL(suspend);
65
25
  };
66
26
  } // namespace audioapi
@@ -1,9 +1,73 @@
1
1
  #include <audioapi/HostObjects/AudioNodeHostObject.h>
2
2
 
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
3
+ #include <audioapi/HostObjects/AudioParamHostObject.h>
4
+ #include <audioapi/core/AudioNode.h>
5
+
7
6
  namespace audioapi {
8
- AudioNodeHostObject::~AudioNodeHostObject() = default;
9
- }
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
@@ -1,7 +1,5 @@
1
1
  #pragma once
2
2
 
3
- #include <audioapi/HostObjects/AudioParamHostObject.h>
4
- #include <audioapi/core/AudioNode.h>
5
3
  #include <audioapi/jsi/JsiHostObject.h>
6
4
 
7
5
  #include <jsi/jsi.h>
@@ -11,74 +9,20 @@
11
9
  namespace audioapi {
12
10
  using namespace facebook;
13
11
 
12
+ class AudioNode;
13
+
14
14
  class AudioNodeHostObject : public JsiHostObject {
15
15
  public:
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
- }
16
+ explicit AudioNodeHostObject(const std::shared_ptr<AudioNode> &node);
64
17
 
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
- }
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);
75
23
 
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
- }
24
+ JSI_HOST_FUNCTION_DECL(connect);
25
+ JSI_HOST_FUNCTION_DECL(disconnect);
82
26
 
83
27
  protected:
84
28
  std::shared_ptr<AudioNode> node_;
@@ -0,0 +1,105 @@
1
+ #include <audioapi/HostObjects/AudioParamHostObject.h>
2
+
3
+ #include <audioapi/core/AudioParam.h>
4
+
5
+ namespace audioapi {
6
+
7
+ AudioParamHostObject::AudioParamHostObject(
8
+ const std::shared_ptr<AudioParam> &param)
9
+ : param_(param) {
10
+ addGetters(
11
+ JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, value),
12
+ JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, defaultValue),
13
+ JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, minValue),
14
+ JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, maxValue));
15
+
16
+ addFunctions(
17
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, setValueAtTime),
18
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, linearRampToValueAtTime),
19
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, exponentialRampToValueAtTime),
20
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, setTargetAtTime),
21
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, setValueCurveAtTime),
22
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, cancelScheduledValues),
23
+ JSI_EXPORT_FUNCTION(AudioParamHostObject, cancelAndHoldAtTime));
24
+
25
+ addSetters(JSI_EXPORT_PROPERTY_SETTER(AudioParamHostObject, value));
26
+ }
27
+
28
+ JSI_PROPERTY_GETTER_IMPL(AudioParamHostObject, value) {
29
+ return {param_->getValue()};
30
+ }
31
+
32
+ JSI_PROPERTY_GETTER_IMPL(AudioParamHostObject, defaultValue) {
33
+ return {param_->getDefaultValue()};
34
+ }
35
+
36
+ JSI_PROPERTY_GETTER_IMPL(AudioParamHostObject, minValue) {
37
+ return {param_->getMinValue()};
38
+ }
39
+
40
+ JSI_PROPERTY_GETTER_IMPL(AudioParamHostObject, maxValue) {
41
+ return {param_->getMaxValue()};
42
+ }
43
+
44
+ JSI_PROPERTY_SETTER_IMPL(AudioParamHostObject, value) {
45
+ param_->setValue(static_cast<float>(value.getNumber()));
46
+ }
47
+
48
+ JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, setValueAtTime) {
49
+ auto value = static_cast<float>(args[0].getNumber());
50
+ double startTime = args[1].getNumber();
51
+ param_->setValueAtTime(value, startTime);
52
+ return jsi::Value::undefined();
53
+ }
54
+
55
+ JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, linearRampToValueAtTime) {
56
+ auto value = static_cast<float>(args[0].getNumber());
57
+ double endTime = args[1].getNumber();
58
+ param_->linearRampToValueAtTime(value, endTime);
59
+ return jsi::Value::undefined();
60
+ }
61
+
62
+ JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, exponentialRampToValueAtTime) {
63
+ auto value = static_cast<float>(args[0].getNumber());
64
+ double endTime = args[1].getNumber();
65
+ param_->exponentialRampToValueAtTime(value, endTime);
66
+ return jsi::Value::undefined();
67
+ }
68
+
69
+ JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, setTargetAtTime) {
70
+ auto target = static_cast<float>(args[0].getNumber());
71
+ double startTime = args[1].getNumber();
72
+ double timeConstant = args[2].getNumber();
73
+ param_->setTargetAtTime(target, startTime, timeConstant);
74
+ return jsi::Value::undefined();
75
+ }
76
+
77
+ JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, setValueCurveAtTime) {
78
+ auto arrayBuffer = args[0]
79
+ .getObject(runtime)
80
+ .getPropertyAsObject(runtime, "buffer")
81
+ .getArrayBuffer(runtime);
82
+ auto rawValues = reinterpret_cast<float *>(arrayBuffer.data(runtime));
83
+ auto length = static_cast<int>(arrayBuffer.size(runtime));
84
+ auto values =
85
+ std::make_unique<std::vector<float>>(rawValues, rawValues + length);
86
+
87
+ double startTime = args[1].getNumber();
88
+ double duration = args[2].getNumber();
89
+ param_->setValueCurveAtTime(std::move(values), length, startTime, duration);
90
+ return jsi::Value::undefined();
91
+ }
92
+
93
+ JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, cancelScheduledValues) {
94
+ double cancelTime = args[0].getNumber();
95
+ param_->cancelScheduledValues(cancelTime);
96
+ return jsi::Value::undefined();
97
+ }
98
+
99
+ JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, cancelAndHoldAtTime) {
100
+ double cancelTime = args[0].getNumber();
101
+ param_->cancelAndHoldAtTime(cancelTime);
102
+ return jsi::Value::undefined();
103
+ }
104
+
105
+ } // namespace audioapi
@@ -1,7 +1,6 @@
1
1
  #pragma once
2
2
 
3
3
  #include <audioapi/jsi/JsiHostObject.h>
4
- #include <audioapi/core/AudioParam.h>
5
4
 
6
5
  #include <jsi/jsi.h>
7
6
  #include <utility>
@@ -12,103 +11,30 @@
12
11
  namespace audioapi {
13
12
  using namespace facebook;
14
13
 
14
+ class AudioParam;
15
+
15
16
  class AudioParamHostObject : public JsiHostObject {
16
17
  public:
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));
24
-
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));
33
-
34
- addSetters(JSI_EXPORT_PROPERTY_SETTER(AudioParamHostObject, value));
35
- }
36
- friend class AudioNodeHostObject;
37
-
38
- JSI_PROPERTY_GETTER(value) {
39
- return {param_->getValue()};
40
- }
41
-
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
- }
18
+ explicit AudioParamHostObject(const std::shared_ptr<AudioParam> &param);
53
19
 
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
- }
20
+ JSI_PROPERTY_GETTER_DECL(value);
21
+ JSI_PROPERTY_GETTER_DECL(defaultValue);
22
+ JSI_PROPERTY_GETTER_DECL(minValue);
23
+ JSI_PROPERTY_GETTER_DECL(maxValue);
60
24
 
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
- }
25
+ JSI_PROPERTY_SETTER_DECL(value);
67
26
 
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
- }
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);
110
34
 
111
35
  private:
36
+ friend class AudioNodeHostObject;
37
+
112
38
  std::shared_ptr<AudioParam> param_;
113
39
  };
114
40
  } // namespace audioapi