react-native-audio-api 0.12.0-nightly-0d1a19d-20260120 → 0.12.0-nightly-75589dc-20260121

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 (332) hide show
  1. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +52 -49
  2. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +6 -0
  3. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +1 -0
  4. package/common/cpp/audioapi/HostObjects/utils/NodeOptions.h +111 -0
  5. package/common/cpp/audioapi/HostObjects/utils/NodeOptionsParser.h +262 -0
  6. package/common/cpp/audioapi/core/AudioNode.cpp +13 -6
  7. package/common/cpp/audioapi/core/AudioNode.h +2 -0
  8. package/common/cpp/audioapi/core/BaseAudioContext.cpp +42 -44
  9. package/common/cpp/audioapi/core/BaseAudioContext.h +32 -21
  10. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +8 -6
  11. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +2 -1
  12. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +7 -8
  13. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +4 -1
  14. package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +5 -9
  15. package/common/cpp/audioapi/core/effects/ConvolverNode.h +2 -2
  16. package/common/cpp/audioapi/core/effects/DelayNode.cpp +5 -4
  17. package/common/cpp/audioapi/core/effects/DelayNode.h +2 -1
  18. package/common/cpp/audioapi/core/effects/GainNode.cpp +4 -3
  19. package/common/cpp/audioapi/core/effects/GainNode.h +2 -1
  20. package/common/cpp/audioapi/core/effects/IIRFilterNode.cpp +6 -6
  21. package/common/cpp/audioapi/core/effects/IIRFilterNode.h +3 -2
  22. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +3 -3
  23. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +4 -1
  24. package/common/cpp/audioapi/core/effects/WaveShaperNode.cpp +4 -3
  25. package/common/cpp/audioapi/core/effects/WaveShaperNode.h +4 -1
  26. package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +3 -2
  27. package/common/cpp/audioapi/core/sources/AudioBuffer.h +2 -1
  28. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +16 -22
  29. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +2 -1
  30. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +9 -6
  31. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +2 -1
  32. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +9 -7
  33. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +4 -1
  34. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +5 -8
  35. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +4 -1
  36. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +21 -16
  37. package/common/cpp/audioapi/core/sources/OscillatorNode.h +4 -1
  38. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +4 -2
  39. package/common/cpp/audioapi/core/sources/StreamerNode.h +11 -1
  40. package/common/cpp/test/src/ConstantSourceTest.cpp +3 -2
  41. package/common/cpp/test/src/DelayTest.cpp +12 -5
  42. package/common/cpp/test/src/GainTest.cpp +3 -2
  43. package/common/cpp/test/src/IIRFilterTest.cpp +3 -2
  44. package/common/cpp/test/src/OscillatorTest.cpp +2 -1
  45. package/common/cpp/test/src/StereoPannerTest.cpp +3 -2
  46. package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +10 -9
  47. package/common/cpp/test/src/core/effects/WaveShaperNodeTest.cpp +4 -3
  48. package/lib/commonjs/api.js +11 -3
  49. package/lib/commonjs/api.js.map +1 -1
  50. package/lib/commonjs/api.web.js +4 -10
  51. package/lib/commonjs/api.web.js.map +1 -1
  52. package/lib/commonjs/core/AnalyserNode.js +11 -0
  53. package/lib/commonjs/core/AnalyserNode.js.map +1 -1
  54. package/lib/commonjs/core/AudioBuffer.js +20 -6
  55. package/lib/commonjs/core/AudioBuffer.js.map +1 -1
  56. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +9 -0
  57. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  58. package/lib/commonjs/core/AudioBufferSourceNode.js +9 -0
  59. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  60. package/lib/commonjs/core/BaseAudioContext.js +52 -65
  61. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  62. package/lib/commonjs/core/BiquadFilterNode.js +7 -1
  63. package/lib/commonjs/core/BiquadFilterNode.js.map +1 -1
  64. package/lib/commonjs/core/ConstantSourceNode.js +7 -1
  65. package/lib/commonjs/core/ConstantSourceNode.js.map +1 -1
  66. package/lib/commonjs/core/ConvolverNode.js +9 -3
  67. package/lib/commonjs/core/ConvolverNode.js.map +1 -1
  68. package/lib/commonjs/core/DelayNode.js +7 -1
  69. package/lib/commonjs/core/DelayNode.js.map +1 -1
  70. package/lib/commonjs/core/GainNode.js +9 -3
  71. package/lib/commonjs/core/GainNode.js.map +1 -1
  72. package/lib/commonjs/core/IIRFilterNode.js +9 -0
  73. package/lib/commonjs/core/IIRFilterNode.js.map +1 -1
  74. package/lib/commonjs/core/OscillatorNode.js +10 -1
  75. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  76. package/lib/commonjs/core/PeriodicWave.js +30 -2
  77. package/lib/commonjs/core/PeriodicWave.js.map +1 -1
  78. package/lib/commonjs/core/RecorderAdapterNode.js +3 -0
  79. package/lib/commonjs/core/RecorderAdapterNode.js.map +1 -1
  80. package/lib/commonjs/core/StereoPannerNode.js +7 -1
  81. package/lib/commonjs/core/StereoPannerNode.js.map +1 -1
  82. package/lib/commonjs/core/StreamerNode.js +25 -1
  83. package/lib/commonjs/core/StreamerNode.js.map +1 -1
  84. package/lib/commonjs/core/WaveShaperNode.js +12 -0
  85. package/lib/commonjs/core/WaveShaperNode.js.map +1 -1
  86. package/lib/commonjs/core/WorkletNode.js +13 -1
  87. package/lib/commonjs/core/WorkletNode.js.map +1 -1
  88. package/lib/commonjs/core/WorkletProcessingNode.js +14 -1
  89. package/lib/commonjs/core/WorkletProcessingNode.js.map +1 -1
  90. package/lib/commonjs/core/WorkletSourceNode.js +13 -1
  91. package/lib/commonjs/core/WorkletSourceNode.js.map +1 -1
  92. package/lib/commonjs/defaults.js +78 -0
  93. package/lib/commonjs/defaults.js.map +1 -0
  94. package/lib/commonjs/options-validators.js +40 -0
  95. package/lib/commonjs/options-validators.js.map +1 -0
  96. package/lib/commonjs/types.js.map +1 -1
  97. package/lib/commonjs/web-core/AnalyserNode.js +2 -1
  98. package/lib/commonjs/web-core/AnalyserNode.js.map +1 -1
  99. package/lib/commonjs/web-core/AudioBuffer.js +14 -6
  100. package/lib/commonjs/web-core/AudioBuffer.js.map +1 -1
  101. package/lib/commonjs/web-core/AudioBufferSourceNode.js +276 -89
  102. package/lib/commonjs/web-core/AudioBufferSourceNode.js.map +1 -1
  103. package/lib/commonjs/web-core/AudioContext.js +33 -32
  104. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  105. package/lib/commonjs/web-core/AudioNode.js +4 -0
  106. package/lib/commonjs/web-core/AudioNode.js.map +1 -1
  107. package/lib/commonjs/web-core/BiquadFilterNode.js +2 -1
  108. package/lib/commonjs/web-core/BiquadFilterNode.js.map +1 -1
  109. package/lib/commonjs/web-core/ConstantSourceNode.js +2 -1
  110. package/lib/commonjs/web-core/ConstantSourceNode.js.map +1 -1
  111. package/lib/commonjs/web-core/ConvolverNode.js +3 -5
  112. package/lib/commonjs/web-core/ConvolverNode.js.map +1 -1
  113. package/lib/commonjs/web-core/DelayNode.js +7 -1
  114. package/lib/commonjs/web-core/DelayNode.js.map +1 -1
  115. package/lib/commonjs/web-core/GainNode.js +2 -1
  116. package/lib/commonjs/web-core/GainNode.js.map +1 -1
  117. package/lib/commonjs/web-core/IIRFilterNode.js +12 -0
  118. package/lib/commonjs/web-core/IIRFilterNode.js.map +1 -1
  119. package/lib/commonjs/web-core/OfflineAudioContext.js +33 -32
  120. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  121. package/lib/commonjs/web-core/OscillatorNode.js +2 -1
  122. package/lib/commonjs/web-core/OscillatorNode.js.map +1 -1
  123. package/lib/commonjs/web-core/PeriodicWave.js +6 -1
  124. package/lib/commonjs/web-core/PeriodicWave.js.map +1 -1
  125. package/lib/commonjs/web-core/StereoPannerNode.js +2 -1
  126. package/lib/commonjs/web-core/StereoPannerNode.js.map +1 -1
  127. package/lib/module/api.js +2 -1
  128. package/lib/module/api.js.map +1 -1
  129. package/lib/module/api.web.js +2 -1
  130. package/lib/module/api.web.js.map +1 -1
  131. package/lib/module/core/AnalyserNode.js +11 -0
  132. package/lib/module/core/AnalyserNode.js.map +1 -1
  133. package/lib/module/core/AudioBuffer.js +19 -6
  134. package/lib/module/core/AudioBuffer.js.map +1 -1
  135. package/lib/module/core/AudioBufferQueueSourceNode.js +9 -0
  136. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  137. package/lib/module/core/AudioBufferSourceNode.js +9 -0
  138. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  139. package/lib/module/core/BaseAudioContext.js +52 -65
  140. package/lib/module/core/BaseAudioContext.js.map +1 -1
  141. package/lib/module/core/BiquadFilterNode.js +7 -1
  142. package/lib/module/core/BiquadFilterNode.js.map +1 -1
  143. package/lib/module/core/ConstantSourceNode.js +7 -1
  144. package/lib/module/core/ConstantSourceNode.js.map +1 -1
  145. package/lib/module/core/ConvolverNode.js +9 -3
  146. package/lib/module/core/ConvolverNode.js.map +1 -1
  147. package/lib/module/core/DelayNode.js +7 -1
  148. package/lib/module/core/DelayNode.js.map +1 -1
  149. package/lib/module/core/GainNode.js +9 -3
  150. package/lib/module/core/GainNode.js.map +1 -1
  151. package/lib/module/core/IIRFilterNode.js +9 -0
  152. package/lib/module/core/IIRFilterNode.js.map +1 -1
  153. package/lib/module/core/OscillatorNode.js +10 -1
  154. package/lib/module/core/OscillatorNode.js.map +1 -1
  155. package/lib/module/core/PeriodicWave.js +29 -2
  156. package/lib/module/core/PeriodicWave.js.map +1 -1
  157. package/lib/module/core/RecorderAdapterNode.js +3 -0
  158. package/lib/module/core/RecorderAdapterNode.js.map +1 -1
  159. package/lib/module/core/StereoPannerNode.js +7 -1
  160. package/lib/module/core/StereoPannerNode.js.map +1 -1
  161. package/lib/module/core/StreamerNode.js +25 -1
  162. package/lib/module/core/StreamerNode.js.map +1 -1
  163. package/lib/module/core/WaveShaperNode.js +12 -0
  164. package/lib/module/core/WaveShaperNode.js.map +1 -1
  165. package/lib/module/core/WorkletNode.js +13 -1
  166. package/lib/module/core/WorkletNode.js.map +1 -1
  167. package/lib/module/core/WorkletProcessingNode.js +14 -1
  168. package/lib/module/core/WorkletProcessingNode.js.map +1 -1
  169. package/lib/module/core/WorkletSourceNode.js +13 -1
  170. package/lib/module/core/WorkletSourceNode.js.map +1 -1
  171. package/lib/module/defaults.js +74 -0
  172. package/lib/module/defaults.js.map +1 -0
  173. package/lib/module/options-validators.js +36 -0
  174. package/lib/module/options-validators.js.map +1 -0
  175. package/lib/module/types.js.map +1 -1
  176. package/lib/module/web-core/AnalyserNode.js +2 -1
  177. package/lib/module/web-core/AnalyserNode.js.map +1 -1
  178. package/lib/module/web-core/AudioBuffer.js +13 -6
  179. package/lib/module/web-core/AudioBuffer.js.map +1 -1
  180. package/lib/module/web-core/AudioBufferSourceNode.js +277 -90
  181. package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -1
  182. package/lib/module/web-core/AudioContext.js +33 -32
  183. package/lib/module/web-core/AudioContext.js.map +1 -1
  184. package/lib/module/web-core/AudioNode.js +4 -0
  185. package/lib/module/web-core/AudioNode.js.map +1 -1
  186. package/lib/module/web-core/BiquadFilterNode.js +2 -1
  187. package/lib/module/web-core/BiquadFilterNode.js.map +1 -1
  188. package/lib/module/web-core/ConstantSourceNode.js +2 -1
  189. package/lib/module/web-core/ConstantSourceNode.js.map +1 -1
  190. package/lib/module/web-core/ConvolverNode.js +3 -5
  191. package/lib/module/web-core/ConvolverNode.js.map +1 -1
  192. package/lib/module/web-core/DelayNode.js +7 -1
  193. package/lib/module/web-core/DelayNode.js.map +1 -1
  194. package/lib/module/web-core/GainNode.js +2 -1
  195. package/lib/module/web-core/GainNode.js.map +1 -1
  196. package/lib/module/web-core/IIRFilterNode.js +12 -0
  197. package/lib/module/web-core/IIRFilterNode.js.map +1 -1
  198. package/lib/module/web-core/OfflineAudioContext.js +33 -32
  199. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  200. package/lib/module/web-core/OscillatorNode.js +2 -1
  201. package/lib/module/web-core/OscillatorNode.js.map +1 -1
  202. package/lib/module/web-core/PeriodicWave.js +6 -1
  203. package/lib/module/web-core/PeriodicWave.js.map +1 -1
  204. package/lib/module/web-core/StereoPannerNode.js +2 -1
  205. package/lib/module/web-core/StereoPannerNode.js.map +1 -1
  206. package/lib/typescript/api.d.ts +2 -1
  207. package/lib/typescript/api.d.ts.map +1 -1
  208. package/lib/typescript/api.web.d.ts +2 -1
  209. package/lib/typescript/api.web.d.ts.map +1 -1
  210. package/lib/typescript/core/AnalyserNode.d.ts +3 -1
  211. package/lib/typescript/core/AnalyserNode.d.ts.map +1 -1
  212. package/lib/typescript/core/AudioBuffer.d.ts +3 -0
  213. package/lib/typescript/core/AudioBuffer.d.ts.map +1 -1
  214. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +3 -0
  215. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  216. package/lib/typescript/core/AudioBufferSourceNode.d.ts +3 -0
  217. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  218. package/lib/typescript/core/BaseAudioContext.d.ts +10 -6
  219. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  220. package/lib/typescript/core/BiquadFilterNode.d.ts +2 -3
  221. package/lib/typescript/core/BiquadFilterNode.d.ts.map +1 -1
  222. package/lib/typescript/core/ConstantSourceNode.d.ts +2 -2
  223. package/lib/typescript/core/ConstantSourceNode.d.ts.map +1 -1
  224. package/lib/typescript/core/ConvolverNode.d.ts +2 -2
  225. package/lib/typescript/core/ConvolverNode.d.ts.map +1 -1
  226. package/lib/typescript/core/DelayNode.d.ts +2 -2
  227. package/lib/typescript/core/DelayNode.d.ts.map +1 -1
  228. package/lib/typescript/core/GainNode.d.ts +2 -2
  229. package/lib/typescript/core/GainNode.d.ts.map +1 -1
  230. package/lib/typescript/core/IIRFilterNode.d.ts +3 -0
  231. package/lib/typescript/core/IIRFilterNode.d.ts.map +1 -1
  232. package/lib/typescript/core/OscillatorNode.d.ts +2 -3
  233. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  234. package/lib/typescript/core/PeriodicWave.d.ts +4 -1
  235. package/lib/typescript/core/PeriodicWave.d.ts.map +1 -1
  236. package/lib/typescript/core/RecorderAdapterNode.d.ts +2 -0
  237. package/lib/typescript/core/RecorderAdapterNode.d.ts.map +1 -1
  238. package/lib/typescript/core/StereoPannerNode.d.ts +2 -2
  239. package/lib/typescript/core/StereoPannerNode.d.ts.map +1 -1
  240. package/lib/typescript/core/StreamerNode.d.ts +5 -0
  241. package/lib/typescript/core/StreamerNode.d.ts.map +1 -1
  242. package/lib/typescript/core/WaveShaperNode.d.ts +3 -0
  243. package/lib/typescript/core/WaveShaperNode.d.ts.map +1 -1
  244. package/lib/typescript/core/WorkletNode.d.ts +3 -0
  245. package/lib/typescript/core/WorkletNode.d.ts.map +1 -1
  246. package/lib/typescript/core/WorkletProcessingNode.d.ts +3 -0
  247. package/lib/typescript/core/WorkletProcessingNode.d.ts.map +1 -1
  248. package/lib/typescript/core/WorkletSourceNode.d.ts +3 -0
  249. package/lib/typescript/core/WorkletSourceNode.d.ts.map +1 -1
  250. package/lib/typescript/defaults.d.ts +16 -0
  251. package/lib/typescript/defaults.d.ts.map +1 -0
  252. package/lib/typescript/interfaces.d.ts +16 -15
  253. package/lib/typescript/interfaces.d.ts.map +1 -1
  254. package/lib/typescript/options-validators.d.ts +6 -0
  255. package/lib/typescript/options-validators.d.ts.map +1 -0
  256. package/lib/typescript/types.d.ts +80 -11
  257. package/lib/typescript/types.d.ts.map +1 -1
  258. package/lib/typescript/web-core/AnalyserNode.d.ts +2 -2
  259. package/lib/typescript/web-core/AnalyserNode.d.ts.map +1 -1
  260. package/lib/typescript/web-core/AudioBuffer.d.ts +3 -0
  261. package/lib/typescript/web-core/AudioBuffer.d.ts.map +1 -1
  262. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +24 -15
  263. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -1
  264. package/lib/typescript/web-core/AudioContext.d.ts +5 -6
  265. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  266. package/lib/typescript/web-core/AudioNode.d.ts +2 -2
  267. package/lib/typescript/web-core/AudioNode.d.ts.map +1 -1
  268. package/lib/typescript/web-core/BaseAudioContext.d.ts +3 -3
  269. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  270. package/lib/typescript/web-core/BiquadFilterNode.d.ts +2 -2
  271. package/lib/typescript/web-core/BiquadFilterNode.d.ts.map +1 -1
  272. package/lib/typescript/web-core/ConstantSourceNode.d.ts +2 -1
  273. package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +1 -1
  274. package/lib/typescript/web-core/ConvolverNode.d.ts +2 -1
  275. package/lib/typescript/web-core/ConvolverNode.d.ts.map +1 -1
  276. package/lib/typescript/web-core/DelayNode.d.ts +2 -1
  277. package/lib/typescript/web-core/DelayNode.d.ts.map +1 -1
  278. package/lib/typescript/web-core/GainNode.d.ts +2 -1
  279. package/lib/typescript/web-core/GainNode.d.ts.map +1 -1
  280. package/lib/typescript/web-core/IIRFilterNode.d.ts +3 -0
  281. package/lib/typescript/web-core/IIRFilterNode.d.ts.map +1 -1
  282. package/lib/typescript/web-core/OfflineAudioContext.d.ts +5 -6
  283. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  284. package/lib/typescript/web-core/OscillatorNode.d.ts +2 -2
  285. package/lib/typescript/web-core/OscillatorNode.d.ts.map +1 -1
  286. package/lib/typescript/web-core/PeriodicWave.d.ts +3 -1
  287. package/lib/typescript/web-core/PeriodicWave.d.ts.map +1 -1
  288. package/lib/typescript/web-core/StereoPannerNode.d.ts +2 -1
  289. package/lib/typescript/web-core/StereoPannerNode.d.ts.map +1 -1
  290. package/package.json +1 -1
  291. package/src/api.ts +3 -1
  292. package/src/api.web.ts +1 -2
  293. package/src/core/AnalyserNode.ts +16 -1
  294. package/src/core/AudioBuffer.ts +26 -6
  295. package/src/core/AudioBufferQueueSourceNode.ts +15 -0
  296. package/src/core/AudioBufferSourceNode.ts +12 -0
  297. package/src/core/BaseAudioContext.ts +48 -151
  298. package/src/core/BiquadFilterNode.ts +9 -2
  299. package/src/core/ConstantSourceNode.ts +9 -1
  300. package/src/core/ConvolverNode.ts +11 -3
  301. package/src/core/DelayNode.ts +5 -2
  302. package/src/core/GainNode.ts +10 -3
  303. package/src/core/IIRFilterNode.ts +12 -0
  304. package/src/core/OscillatorNode.ts +13 -2
  305. package/src/core/PeriodicWave.ts +36 -2
  306. package/src/core/RecorderAdapterNode.ts +5 -0
  307. package/src/core/StereoPannerNode.ts +9 -1
  308. package/src/core/StreamerNode.ts +29 -1
  309. package/src/core/WaveShaperNode.ts +17 -0
  310. package/src/core/WorkletNode.ts +30 -1
  311. package/src/core/WorkletProcessingNode.ts +39 -1
  312. package/src/core/WorkletSourceNode.ts +36 -1
  313. package/src/defaults.ts +100 -0
  314. package/src/interfaces.ts +37 -24
  315. package/src/options-validators.ts +66 -0
  316. package/src/types.ts +96 -12
  317. package/src/web-core/AnalyserNode.tsx +15 -6
  318. package/src/web-core/AudioBuffer.tsx +20 -6
  319. package/src/web-core/AudioBufferSourceNode.tsx +393 -148
  320. package/src/web-core/AudioContext.tsx +22 -72
  321. package/src/web-core/AudioNode.tsx +6 -2
  322. package/src/web-core/BaseAudioContext.tsx +3 -7
  323. package/src/web-core/BiquadFilterNode.tsx +6 -2
  324. package/src/web-core/ConstantSourceNode.tsx +3 -1
  325. package/src/web-core/ConvolverNode.tsx +8 -8
  326. package/src/web-core/DelayNode.tsx +5 -1
  327. package/src/web-core/GainNode.tsx +3 -1
  328. package/src/web-core/IIRFilterNode.tsx +15 -0
  329. package/src/web-core/OfflineAudioContext.tsx +19 -67
  330. package/src/web-core/OscillatorNode.tsx +3 -2
  331. package/src/web-core/PeriodicWave.tsx +11 -1
  332. package/src/web-core/StereoPannerNode.tsx +9 -1
@@ -1,3 +1,4 @@
1
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
1
2
  #include <audioapi/core/BaseAudioContext.h>
2
3
  #include <audioapi/core/analysis/AnalyserNode.h>
3
4
  #include <audioapi/core/destinations/AudioDestinationNode.h>
@@ -71,7 +72,7 @@ double BaseAudioContext::getCurrentTime() const {
71
72
  return destination_->getCurrentTime();
72
73
  }
73
74
 
74
- std::shared_ptr<AudioDestinationNode> BaseAudioContext::getDestination() {
75
+ std::shared_ptr<AudioDestinationNode> BaseAudioContext::getDestination() const {
75
76
  return destination_;
76
77
  }
77
78
 
@@ -116,21 +117,22 @@ std::shared_ptr<RecorderAdapterNode> BaseAudioContext::createRecorderAdapter() {
116
117
  return recorderAdapter;
117
118
  }
118
119
 
119
- std::shared_ptr<OscillatorNode> BaseAudioContext::createOscillator() {
120
- auto oscillator = std::make_shared<OscillatorNode>(shared_from_this());
120
+ std::shared_ptr<OscillatorNode> BaseAudioContext::createOscillator(const OscillatorOptions &options) {
121
+ auto oscillator = std::make_shared<OscillatorNode>(shared_from_this(), options);
121
122
  nodeManager_->addSourceNode(oscillator);
122
123
  return oscillator;
123
124
  }
124
125
 
125
- std::shared_ptr<ConstantSourceNode> BaseAudioContext::createConstantSource() {
126
- auto constantSource = std::make_shared<ConstantSourceNode>(shared_from_this());
126
+ std::shared_ptr<ConstantSourceNode> BaseAudioContext::createConstantSource(
127
+ const ConstantSourceOptions &options) {
128
+ auto constantSource = std::make_shared<ConstantSourceNode>(shared_from_this(), options);
127
129
  nodeManager_->addSourceNode(constantSource);
128
130
  return constantSource;
129
131
  }
130
132
 
131
- std::shared_ptr<StreamerNode> BaseAudioContext::createStreamer() {
133
+ std::shared_ptr<StreamerNode> BaseAudioContext::createStreamer(const StreamerOptions &options) {
132
134
  #if !RN_AUDIO_API_FFMPEG_DISABLED
133
- auto streamer = std::make_shared<StreamerNode>(shared_from_this());
135
+ auto streamer = std::make_shared<StreamerNode>(shared_from_this(), options);
134
136
  nodeManager_->addSourceNode(streamer);
135
137
  return streamer;
136
138
  #else
@@ -138,55 +140,54 @@ std::shared_ptr<StreamerNode> BaseAudioContext::createStreamer() {
138
140
  #endif // RN_AUDIO_API_FFMPEG_DISABLED
139
141
  }
140
142
 
141
- std::shared_ptr<GainNode> BaseAudioContext::createGain() {
142
- auto gain = std::make_shared<GainNode>(shared_from_this());
143
+ std::shared_ptr<GainNode> BaseAudioContext::createGain(const GainOptions &options) {
144
+ auto gain = std::make_shared<GainNode>(shared_from_this(), options);
143
145
  nodeManager_->addProcessingNode(gain);
144
146
  return gain;
145
147
  }
146
148
 
147
- std::shared_ptr<DelayNode> BaseAudioContext::createDelay(float maxDelayTime) {
148
- auto delay = std::make_shared<DelayNode>(shared_from_this(), maxDelayTime);
149
- nodeManager_->addProcessingNode(delay);
150
- return delay;
151
- }
152
-
153
- std::shared_ptr<StereoPannerNode> BaseAudioContext::createStereoPanner() {
154
- auto stereoPanner = std::make_shared<StereoPannerNode>(shared_from_this());
149
+ std::shared_ptr<StereoPannerNode> BaseAudioContext::createStereoPanner(
150
+ const StereoPannerOptions &options) {
151
+ auto stereoPanner = std::make_shared<StereoPannerNode>(shared_from_this(), options);
155
152
  nodeManager_->addProcessingNode(stereoPanner);
156
153
  return stereoPanner;
157
154
  }
158
155
 
159
- std::shared_ptr<BiquadFilterNode> BaseAudioContext::createBiquadFilter() {
160
- auto biquadFilter = std::make_shared<BiquadFilterNode>(shared_from_this());
161
- nodeManager_->addProcessingNode(biquadFilter);
162
- return biquadFilter;
156
+ std::shared_ptr<DelayNode> BaseAudioContext::createDelay(const DelayOptions &options) {
157
+ auto delay = std::make_shared<DelayNode>(shared_from_this(), options);
158
+ nodeManager_->addProcessingNode(delay);
159
+ return delay;
163
160
  }
164
161
 
165
- std::shared_ptr<IIRFilterNode> BaseAudioContext::createIIRFilter(
166
- const std::vector<float> &feedforward,
167
- const std::vector<float> &feedback) {
168
- auto iirFilter = std::make_shared<IIRFilterNode>(shared_from_this(), feedforward, feedback);
169
- nodeManager_->addProcessingNode(iirFilter);
170
- return iirFilter;
162
+ std::shared_ptr<BiquadFilterNode> BaseAudioContext::createBiquadFilter(
163
+ const BiquadFilterOptions &options) {
164
+ auto biquadFilter = std::make_shared<BiquadFilterNode>(shared_from_this(), options);
165
+ nodeManager_->addProcessingNode(biquadFilter);
166
+ return biquadFilter;
171
167
  }
172
168
 
173
- std::shared_ptr<AudioBufferSourceNode> BaseAudioContext::createBufferSource(bool pitchCorrection) {
174
- auto bufferSource = std::make_shared<AudioBufferSourceNode>(shared_from_this(), pitchCorrection);
169
+ std::shared_ptr<AudioBufferSourceNode> BaseAudioContext::createBufferSource(
170
+ const AudioBufferSourceOptions &options) {
171
+ auto bufferSource = std::make_shared<AudioBufferSourceNode>(shared_from_this(), options);
175
172
  nodeManager_->addSourceNode(bufferSource);
176
173
  return bufferSource;
177
174
  }
178
175
 
176
+ std::shared_ptr<IIRFilterNode> BaseAudioContext::createIIRFilter(const IIRFilterOptions &options) {
177
+ auto iirFilter = std::make_shared<IIRFilterNode>(shared_from_this(), options);
178
+ nodeManager_->addProcessingNode(iirFilter);
179
+ return iirFilter;
180
+ }
181
+
179
182
  std::shared_ptr<AudioBufferQueueSourceNode> BaseAudioContext::createBufferQueueSource(
180
- bool pitchCorrection) {
181
- auto bufferSource =
182
- std::make_shared<AudioBufferQueueSourceNode>(shared_from_this(), pitchCorrection);
183
+ const BaseAudioBufferSourceOptions &options) {
184
+ auto bufferSource = std::make_shared<AudioBufferQueueSourceNode>(shared_from_this(), options);
183
185
  nodeManager_->addSourceNode(bufferSource);
184
186
  return bufferSource;
185
187
  }
186
188
 
187
- std::shared_ptr<AudioBuffer>
188
- BaseAudioContext::createBuffer(int numberOfChannels, size_t length, float sampleRate) {
189
- return std::make_shared<AudioBuffer>(numberOfChannels, length, sampleRate);
189
+ std::shared_ptr<AudioBuffer> BaseAudioContext::createBuffer(const AudioBufferOptions &options) {
190
+ return std::make_shared<AudioBuffer>(options);
190
191
  }
191
192
 
192
193
  std::shared_ptr<PeriodicWave> BaseAudioContext::createPeriodicWave(
@@ -196,23 +197,20 @@ std::shared_ptr<PeriodicWave> BaseAudioContext::createPeriodicWave(
196
197
  return std::make_shared<PeriodicWave>(sampleRate_, complexData, length, disableNormalization);
197
198
  }
198
199
 
199
- std::shared_ptr<AnalyserNode> BaseAudioContext::createAnalyser() {
200
- auto analyser = std::make_shared<AnalyserNode>(shared_from_this());
200
+ std::shared_ptr<AnalyserNode> BaseAudioContext::createAnalyser(const AnalyserOptions &options) {
201
+ auto analyser = std::make_shared<AnalyserNode>(shared_from_this(), options);
201
202
  nodeManager_->addProcessingNode(analyser);
202
203
  return analyser;
203
204
  }
204
205
 
205
- std::shared_ptr<ConvolverNode> BaseAudioContext::createConvolver(
206
- std::shared_ptr<AudioBuffer> buffer,
207
- bool disableNormalization) {
208
- auto convolver =
209
- std::make_shared<ConvolverNode>(shared_from_this(), buffer, disableNormalization);
206
+ std::shared_ptr<ConvolverNode> BaseAudioContext::createConvolver(const ConvolverOptions &options) {
207
+ auto convolver = std::make_shared<ConvolverNode>(shared_from_this(), options);
210
208
  nodeManager_->addProcessingNode(convolver);
211
209
  return convolver;
212
210
  }
213
211
 
214
- std::shared_ptr<WaveShaperNode> BaseAudioContext::createWaveShaper() {
215
- auto waveShaper = std::make_shared<WaveShaperNode>(shared_from_this());
212
+ std::shared_ptr<WaveShaperNode> BaseAudioContext::createWaveShaper(const WaveShaperOptions &options) {
213
+ auto waveShaper = std::make_shared<WaveShaperNode>(shared_from_this(), options);
216
214
  nodeManager_->addProcessingNode(waveShaper);
217
215
  return waveShaper;
218
216
  }
@@ -33,11 +33,25 @@ class AudioEventHandlerRegistry;
33
33
  class ConvolverNode;
34
34
  class IAudioEventHandlerRegistry;
35
35
  class RecorderAdapterNode;
36
+ class WaveShaperNode;
36
37
  class WorkletSourceNode;
37
38
  class WorkletNode;
38
39
  class WorkletProcessingNode;
39
40
  class StreamerNode;
40
- class WaveShaperNode;
41
+ class GainOptions;
42
+ class StereoPannerOptions;
43
+ class ConvolverOptions;
44
+ class ConstantSourceOptions;
45
+ class AnalyserOptions;
46
+ class BiquadFilterOptions;
47
+ class OscillatorOptions;
48
+ class BaseAudioBufferSourceOptions;
49
+ class AudioBufferSourceOptions;
50
+ class StreamerOptions;
51
+ class AudioBufferOptions;
52
+ class DelayOptions;
53
+ class IIRFilterOptions;
54
+ class WaveShaperOptions;
41
55
 
42
56
  class BaseAudioContext : public std::enable_shared_from_this<BaseAudioContext> {
43
57
  public:
@@ -52,7 +66,7 @@ class BaseAudioContext : public std::enable_shared_from_this<BaseAudioContext> {
52
66
  [[nodiscard]] float getSampleRate() const;
53
67
  [[nodiscard]] double getCurrentTime() const;
54
68
  [[nodiscard]] std::size_t getCurrentSampleFrame() const;
55
- std::shared_ptr<AudioDestinationNode> getDestination();
69
+ std::shared_ptr<AudioDestinationNode> getDestination() const;
56
70
 
57
71
  std::shared_ptr<RecorderAdapterNode> createRecorderAdapter();
58
72
  std::shared_ptr<WorkletSourceNode> createWorkletSourceNode(
@@ -69,29 +83,26 @@ class BaseAudioContext : public std::enable_shared_from_this<BaseAudioContext> {
69
83
  std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
70
84
  std::weak_ptr<worklets::WorkletRuntime> runtime,
71
85
  bool shouldLockRuntime = true);
72
- std::shared_ptr<OscillatorNode> createOscillator();
73
- std::shared_ptr<ConstantSourceNode> createConstantSource();
74
- std::shared_ptr<StreamerNode> createStreamer();
75
- std::shared_ptr<GainNode> createGain();
76
- std::shared_ptr<DelayNode> createDelay(float maxDelayTime);
77
- std::shared_ptr<StereoPannerNode> createStereoPanner();
78
- std::shared_ptr<BiquadFilterNode> createBiquadFilter();
79
- std::shared_ptr<IIRFilterNode> createIIRFilter(
80
- const std::vector<float> &feedforward,
81
- const std::vector<float> &feedback);
82
- std::shared_ptr<AudioBufferSourceNode> createBufferSource(bool pitchCorrection);
83
- std::shared_ptr<AudioBufferQueueSourceNode> createBufferQueueSource(bool pitchCorrection);
84
- static std::shared_ptr<AudioBuffer>
85
- createBuffer(int numberOfChannels, size_t length, float sampleRate);
86
+ std::shared_ptr<DelayNode> createDelay(const DelayOptions &options);
87
+ std::shared_ptr<IIRFilterNode> createIIRFilter(const IIRFilterOptions &options);
88
+ std::shared_ptr<OscillatorNode> createOscillator(const OscillatorOptions &options);
89
+ std::shared_ptr<ConstantSourceNode> createConstantSource(const ConstantSourceOptions &options);
90
+ std::shared_ptr<StreamerNode> createStreamer(const StreamerOptions &options);
91
+ std::shared_ptr<GainNode> createGain(const GainOptions &options);
92
+ std::shared_ptr<StereoPannerNode> createStereoPanner(const StereoPannerOptions &options);
93
+ std::shared_ptr<BiquadFilterNode> createBiquadFilter(const BiquadFilterOptions &options);
94
+ std::shared_ptr<AudioBufferSourceNode> createBufferSource(
95
+ const AudioBufferSourceOptions &options);
96
+ std::shared_ptr<AudioBufferQueueSourceNode> createBufferQueueSource(
97
+ const BaseAudioBufferSourceOptions &options);
98
+ static std::shared_ptr<AudioBuffer> createBuffer(const AudioBufferOptions &options);
86
99
  std::shared_ptr<PeriodicWave> createPeriodicWave(
87
100
  const std::vector<std::complex<float>> &complexData,
88
101
  bool disableNormalization,
89
102
  int length);
90
- std::shared_ptr<AnalyserNode> createAnalyser();
91
- std::shared_ptr<ConvolverNode> createConvolver(
92
- std::shared_ptr<AudioBuffer> buffer,
93
- bool disableNormalization);
94
- std::shared_ptr<WaveShaperNode> createWaveShaper();
103
+ std::shared_ptr<AnalyserNode> createAnalyser(const AnalyserOptions &options);
104
+ std::shared_ptr<ConvolverNode> createConvolver(const ConvolverOptions &options);
105
+ std::shared_ptr<WaveShaperNode> createWaveShaper(const WaveShaperOptions &options);
95
106
 
96
107
  std::shared_ptr<PeriodicWave> getBasicWaveForm(OscillatorType type);
97
108
  [[nodiscard]] float getNyquistFrequency() const;
@@ -1,3 +1,4 @@
1
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
1
2
  #include <audioapi/core/BaseAudioContext.h>
2
3
  #include <audioapi/core/analysis/AnalyserNode.h>
3
4
  #include <audioapi/dsp/AudioUtils.h>
@@ -12,12 +13,13 @@
12
13
  #include <vector>
13
14
 
14
15
  namespace audioapi {
15
- AnalyserNode::AnalyserNode(std::shared_ptr<BaseAudioContext> context)
16
- : AudioNode(context),
17
- fftSize_(2048),
18
- minDecibels_(-100),
19
- maxDecibels_(-30),
20
- smoothingTimeConstant_(0.8),
16
+
17
+ AnalyserNode::AnalyserNode(std::shared_ptr<BaseAudioContext> context, const AnalyserOptions &options)
18
+ : AudioNode(context, options),
19
+ fftSize_(options.fftSize),
20
+ minDecibels_(options.minDecibels),
21
+ maxDecibels_(options.maxDecibels),
22
+ smoothingTimeConstant_(options.smoothingTimeConstant),
21
23
  windowType_(WindowType::BLACKMAN),
22
24
  inputBuffer_(std::make_unique<CircularAudioArray>(MAX_FFT_SIZE * 2)),
23
25
  downMixBus_(std::make_unique<AudioBus>(RENDER_QUANTUM_SIZE, 1, context->getSampleRate())),
@@ -15,11 +15,12 @@ namespace audioapi {
15
15
  class AudioBus;
16
16
  class AudioArray;
17
17
  class CircularAudioArray;
18
+ class AnalyserOptions;
18
19
 
19
20
  class AnalyserNode : public AudioNode {
20
21
  public:
21
22
  enum class WindowType { BLACKMAN, HANN };
22
- explicit AnalyserNode(std::shared_ptr<BaseAudioContext> context);
23
+ explicit AnalyserNode(std::shared_ptr<BaseAudioContext> context, const AnalyserOptions &options);
23
24
 
24
25
  int getFftSize() const;
25
26
  int getFrequencyBinCount() const;
@@ -26,6 +26,7 @@
26
26
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
  */
28
28
 
29
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
29
30
  #include <audioapi/core/BaseAudioContext.h>
30
31
  #include <audioapi/core/effects/BiquadFilterNode.h>
31
32
  #include <audioapi/utils/AudioArray.h>
@@ -38,26 +39,24 @@
38
39
 
39
40
  namespace audioapi {
40
41
 
41
- BiquadFilterNode::BiquadFilterNode(std::shared_ptr<BaseAudioContext> context) : AudioNode(context) {
42
+ BiquadFilterNode::BiquadFilterNode(std::shared_ptr<BaseAudioContext> context, const BiquadFilterOptions &options) : AudioNode(context, options) {
42
43
  frequencyParam_ =
43
- std::make_shared<AudioParam>(350.0, 0.0f, context->getNyquistFrequency(), context);
44
+ std::make_shared<AudioParam>(options.frequency, 0.0f, context->getNyquistFrequency(), context);
44
45
  detuneParam_ = std::make_shared<AudioParam>(
45
- 0.0f,
46
+ options.detune,
46
47
  -1200 * LOG2_MOST_POSITIVE_SINGLE_FLOAT,
47
48
  1200 * LOG2_MOST_POSITIVE_SINGLE_FLOAT,
48
49
  context);
49
50
  QParam_ = std::make_shared<AudioParam>(
50
- 1.0f, MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT, context);
51
+ options.Q, MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT, context);
51
52
  gainParam_ = std::make_shared<AudioParam>(
52
- 0.0f, MOST_NEGATIVE_SINGLE_FLOAT, 40 * LOG10_MOST_POSITIVE_SINGLE_FLOAT, context);
53
- type_ = BiquadFilterType::LOWPASS;
53
+ options.gain, MOST_NEGATIVE_SINGLE_FLOAT, 40 * LOG10_MOST_POSITIVE_SINGLE_FLOAT, context);
54
+ type_ = options.type;
54
55
  x1_.resize(MAX_CHANNEL_COUNT, 0.0f);
55
56
  x2_.resize(MAX_CHANNEL_COUNT, 0.0f);
56
57
  y1_.resize(MAX_CHANNEL_COUNT, 0.0f);
57
58
  y2_.resize(MAX_CHANNEL_COUNT, 0.0f);
58
59
  isInitialized_ = true;
59
- channelCountMode_ = ChannelCountMode::MAX;
60
- isInitialized_ = true;
61
60
  }
62
61
 
63
62
  std::string BiquadFilterNode::getType() {
@@ -46,6 +46,7 @@
46
46
  namespace audioapi {
47
47
 
48
48
  class AudioBus;
49
+ class BiquadFilterOptions;
49
50
 
50
51
  class BiquadFilterNode : public AudioNode {
51
52
  #if RN_AUDIO_API_TEST
@@ -54,7 +55,9 @@ class BiquadFilterNode : public AudioNode {
54
55
  #endif // RN_AUDIO_API_TEST
55
56
 
56
57
  public:
57
- explicit BiquadFilterNode(std::shared_ptr<BaseAudioContext> context);
58
+ explicit BiquadFilterNode(
59
+ std::shared_ptr<BaseAudioContext> context,
60
+ const BiquadFilterOptions &options);
58
61
 
59
62
  [[nodiscard]] std::string getType();
60
63
  void setType(const std::string &type);
@@ -1,3 +1,4 @@
1
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
1
2
  #include <audioapi/core/BaseAudioContext.h>
2
3
  #include <audioapi/core/effects/ConvolverNode.h>
3
4
  #include <audioapi/core/sources/AudioBuffer.h>
@@ -11,23 +12,18 @@
11
12
  #include <vector>
12
13
 
13
14
  namespace audioapi {
14
- ConvolverNode::ConvolverNode(
15
- std::shared_ptr<BaseAudioContext> context,
16
- const std::shared_ptr<AudioBuffer> &buffer,
17
- bool disableNormalization)
18
- : AudioNode(context),
15
+ ConvolverNode::ConvolverNode(std::shared_ptr<BaseAudioContext> context, const ConvolverOptions &options)
16
+ : AudioNode(context, options),
19
17
  gainCalibrationSampleRate_(context->getSampleRate()),
20
18
  remainingSegments_(0),
21
19
  internalBufferIndex_(0),
22
- normalize_(!disableNormalization),
20
+ normalize_(!options.disableNormalization),
23
21
  signalledToStop_(false),
24
22
  scaleFactor_(1.0f),
25
23
  intermediateBus_(nullptr),
26
24
  buffer_(nullptr),
27
25
  internalBuffer_(nullptr) {
28
- channelCount_ = 2;
29
- channelCountMode_ = ChannelCountMode::CLAMPED_MAX;
30
- setBuffer(buffer);
26
+ setBuffer(options.bus);
31
27
  audioBus_ =
32
28
  std::make_shared<AudioBus>(RENDER_QUANTUM_SIZE, channelCount_, context->getSampleRate());
33
29
  requiresTailProcessing_ = true;
@@ -17,13 +17,13 @@ namespace audioapi {
17
17
 
18
18
  class AudioBus;
19
19
  class AudioBuffer;
20
+ class ConvolverOptions;
20
21
 
21
22
  class ConvolverNode : public AudioNode {
22
23
  public:
23
24
  explicit ConvolverNode(
24
25
  std::shared_ptr<BaseAudioContext> context,
25
- const std::shared_ptr<AudioBuffer> &buffer,
26
- bool disableNormalization);
26
+ const ConvolverOptions &options);
27
27
 
28
28
  [[nodiscard]] bool getNormalize_() const;
29
29
  [[nodiscard]] const std::shared_ptr<AudioBuffer> &getBuffer() const;
@@ -1,3 +1,4 @@
1
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
1
2
  #include <audioapi/core/BaseAudioContext.h>
2
3
  #include <audioapi/core/effects/DelayNode.h>
3
4
  #include <audioapi/dsp/VectorMath.h>
@@ -7,13 +8,13 @@
7
8
 
8
9
  namespace audioapi {
9
10
 
10
- DelayNode::DelayNode(std::shared_ptr<BaseAudioContext> context, float maxDelayTime)
11
- : AudioNode(context),
12
- delayTimeParam_(std::make_shared<AudioParam>(0, 0, maxDelayTime, context)),
11
+ DelayNode::DelayNode(std::shared_ptr<BaseAudioContext> context, const DelayOptions &options)
12
+ : AudioNode(context, options),
13
+ delayTimeParam_(std::make_shared<AudioParam>(options.delayTime, 0, options.maxDelayTime, context)),
13
14
  delayBuffer_(
14
15
  std::make_shared<AudioBus>(
15
16
  static_cast<size_t>(
16
- maxDelayTime * context->getSampleRate() +
17
+ options.maxDelayTime * context->getSampleRate() +
17
18
  1), // +1 to enable delayTime equal to maxDelayTime
18
19
  channelCount_,
19
20
  context->getSampleRate())) {
@@ -9,10 +9,11 @@
9
9
  namespace audioapi {
10
10
 
11
11
  class AudioBus;
12
+ class DelayOptions;
12
13
 
13
14
  class DelayNode : public AudioNode {
14
15
  public:
15
- explicit DelayNode(std::shared_ptr<BaseAudioContext> context, float maxDelayTime);
16
+ explicit DelayNode(std::shared_ptr<BaseAudioContext> context, const DelayOptions &options);
16
17
 
17
18
  [[nodiscard]] std::shared_ptr<AudioParam> getDelayTimeParam() const;
18
19
 
@@ -1,3 +1,4 @@
1
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
1
2
  #include <audioapi/core/BaseAudioContext.h>
2
3
  #include <audioapi/core/effects/GainNode.h>
3
4
  #include <audioapi/dsp/VectorMath.h>
@@ -7,11 +8,11 @@
7
8
 
8
9
  namespace audioapi {
9
10
 
10
- GainNode::GainNode(std::shared_ptr<BaseAudioContext> context)
11
- : AudioNode(context),
11
+ GainNode::GainNode(std::shared_ptr<BaseAudioContext> context, const GainOptions &options)
12
+ : AudioNode(context, options),
12
13
  gainParam_(
13
14
  std::make_shared<AudioParam>(
14
- 1.0,
15
+ options.gain,
15
16
  MOST_NEGATIVE_SINGLE_FLOAT,
16
17
  MOST_POSITIVE_SINGLE_FLOAT,
17
18
  context)) {
@@ -8,10 +8,11 @@
8
8
  namespace audioapi {
9
9
 
10
10
  class AudioBus;
11
+ class GainOptions;
11
12
 
12
13
  class GainNode : public AudioNode {
13
14
  public:
14
- explicit GainNode(std::shared_ptr<BaseAudioContext> context);
15
+ explicit GainNode(std::shared_ptr<BaseAudioContext> context, const GainOptions &options);
15
16
 
16
17
  [[nodiscard]] std::shared_ptr<AudioParam> getGainParam() const;
17
18
 
@@ -23,6 +23,7 @@
23
23
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
24
  */
25
25
 
26
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
26
27
  #include <audioapi/core/BaseAudioContext.h>
27
28
  #include <audioapi/core/effects/IIRFilterNode.h>
28
29
  #include <audioapi/core/utils/Constants.h>
@@ -30,16 +31,15 @@
30
31
  #include <audioapi/utils/AudioBus.h>
31
32
  #include <algorithm>
32
33
  #include <memory>
34
+ #include <utility>
33
35
  #include <vector>
34
36
 
35
37
  namespace audioapi {
36
38
 
37
- IIRFilterNode::IIRFilterNode(
38
- std::shared_ptr<BaseAudioContext> context,
39
- const std::vector<float> &feedforward,
40
- const std::vector<float> &feedback)
41
- : AudioNode(context), feedforward_(feedforward), feedback_(feedback) {
42
- channelCountMode_ = ChannelCountMode::MAX;
39
+ IIRFilterNode::IIRFilterNode(std::shared_ptr<BaseAudioContext> context, const IIRFilterOptions &options)
40
+ : AudioNode(context, options),
41
+ feedforward_(std::move(options.feedforward)),
42
+ feedback_(std::move(options.feedback)) {
43
43
 
44
44
  int maxChannels = MAX_CHANNEL_COUNT;
45
45
  xBuffers_.resize(maxChannels);
@@ -33,13 +33,14 @@
33
33
 
34
34
  namespace audioapi {
35
35
 
36
+ class IIRFilterOptions;
37
+
36
38
  class IIRFilterNode : public AudioNode {
37
39
 
38
40
  public:
39
41
  explicit IIRFilterNode(
40
42
  std::shared_ptr<BaseAudioContext> context,
41
- const std::vector<float> &feedforward,
42
- const std::vector<float> &feedback);
43
+ const IIRFilterOptions &options);
43
44
 
44
45
  void getFrequencyResponse(
45
46
  const float *frequencyArray,
@@ -1,3 +1,4 @@
1
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
1
2
  #include <audioapi/core/BaseAudioContext.h>
2
3
  #include <audioapi/core/effects/StereoPannerNode.h>
3
4
  #include <audioapi/core/utils/Constants.h>
@@ -9,9 +10,8 @@
9
10
 
10
11
  namespace audioapi {
11
12
 
12
- StereoPannerNode::StereoPannerNode(std::shared_ptr<BaseAudioContext> context)
13
- : AudioNode(context), panParam_(std::make_shared<AudioParam>(0.0, -1.0f, 1.0f, context)) {
14
- channelCountMode_ = ChannelCountMode::CLAMPED_MAX;
13
+ StereoPannerNode::StereoPannerNode(std::shared_ptr<BaseAudioContext> context, const StereoPannerOptions &options)
14
+ : AudioNode(context, options), panParam_(std::make_shared<AudioParam>(options.pan, -1.0f, 1.0f, context)) {
15
15
  isInitialized_ = true;
16
16
  }
17
17
 
@@ -10,10 +10,13 @@
10
10
  namespace audioapi {
11
11
 
12
12
  class AudioBus;
13
+ class StereoPannerOptions;
13
14
 
14
15
  class StereoPannerNode : public AudioNode {
15
16
  public:
16
- explicit StereoPannerNode(std::shared_ptr<BaseAudioContext> context);
17
+ explicit StereoPannerNode(
18
+ std::shared_ptr<BaseAudioContext> context,
19
+ const StereoPannerOptions &options);
17
20
 
18
21
  [[nodiscard]] std::shared_ptr<AudioParam> getPanParam() const;
19
22
 
@@ -3,6 +3,7 @@
3
3
  #include <audioapi/dsp/VectorMath.h>
4
4
  #include <audioapi/utils/AudioArray.h>
5
5
  #include <audioapi/utils/AudioBus.h>
6
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
6
7
 
7
8
  #include <algorithm>
8
9
  #include <memory>
@@ -10,14 +11,14 @@
10
11
 
11
12
  namespace audioapi {
12
13
 
13
- WaveShaperNode::WaveShaperNode(std::shared_ptr<BaseAudioContext> context)
14
- : AudioNode(context), oversample_(OverSampleType::OVERSAMPLE_NONE) {
14
+ WaveShaperNode::WaveShaperNode(std::shared_ptr<BaseAudioContext> context, const WaveShaperOptions &options)
15
+ : AudioNode(context, options), oversample_(options.oversample) {
15
16
 
16
17
  waveShapers_.reserve(6);
17
18
  for (int i = 0; i < channelCount_; i++) {
18
19
  waveShapers_.emplace_back(std::make_unique<WaveShaper>(nullptr));
19
20
  }
20
-
21
+ setCurve(options.curve);
21
22
  // to change after graph processing improvement - should be max
22
23
  channelCountMode_ = ChannelCountMode::CLAMPED_MAX;
23
24
  isInitialized_ = true;
@@ -16,10 +16,13 @@ namespace audioapi {
16
16
 
17
17
  class AudioBus;
18
18
  class AudioArray;
19
+ class WaveShaperOptions;
19
20
 
20
21
  class WaveShaperNode : public AudioNode {
21
22
  public:
22
- explicit WaveShaperNode(std::shared_ptr<BaseAudioContext> context);
23
+ explicit WaveShaperNode(
24
+ std::shared_ptr<BaseAudioContext> context,
25
+ const WaveShaperOptions &options);
23
26
 
24
27
  [[nodiscard]] std::string getOversample() const;
25
28
  [[nodiscard]] std::shared_ptr<AudioArray> getCurve() const;
@@ -1,3 +1,4 @@
1
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
1
2
  #include <audioapi/core/sources/AudioBuffer.h>
2
3
  #include <audioapi/utils/AudioArray.h>
3
4
  #include <audioapi/utils/AudioBus.h>
@@ -8,8 +9,8 @@
8
9
 
9
10
  namespace audioapi {
10
11
 
11
- AudioBuffer::AudioBuffer(int numberOfChannels, size_t length, float sampleRate)
12
- : bus_(std::make_shared<AudioBus>(length, numberOfChannels, sampleRate)) {}
12
+ AudioBuffer::AudioBuffer(const AudioBufferOptions &options)
13
+ : bus_(std::make_shared<AudioBus>(options.length, options.numberOfChannels, options.sampleRate)) {}
13
14
 
14
15
  AudioBuffer::AudioBuffer(std::shared_ptr<AudioBus> bus) {
15
16
  bus_ = std::move(bus);
@@ -10,10 +10,11 @@
10
10
  namespace audioapi {
11
11
 
12
12
  class AudioBus;
13
+ class AudioBufferOptions;
13
14
 
14
15
  class AudioBuffer {
15
16
  public:
16
- explicit AudioBuffer(int numberOfChannels, size_t length, float sampleRate);
17
+ explicit AudioBuffer(const AudioBufferOptions &options);
17
18
  explicit AudioBuffer(std::shared_ptr<AudioBus> bus);
18
19
 
19
20
  [[nodiscard]] size_t getLength() const;