react-native-audio-api 0.12.0-nightly-0d1a19d-20260120 → 0.12.0-nightly-6993a06-20260122

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 (379) hide show
  1. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +16 -2
  2. package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +7 -3
  3. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +6 -6
  4. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +52 -49
  5. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +18 -0
  6. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +4 -0
  7. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +6 -0
  8. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +1 -0
  9. package/common/cpp/audioapi/HostObjects/utils/NodeOptions.h +111 -0
  10. package/common/cpp/audioapi/HostObjects/utils/NodeOptionsParser.h +262 -0
  11. package/common/cpp/audioapi/core/AudioNode.cpp +13 -6
  12. package/common/cpp/audioapi/core/AudioNode.h +2 -0
  13. package/common/cpp/audioapi/core/BaseAudioContext.cpp +42 -44
  14. package/common/cpp/audioapi/core/BaseAudioContext.h +32 -21
  15. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +8 -6
  16. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +2 -1
  17. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +7 -8
  18. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +4 -1
  19. package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +5 -9
  20. package/common/cpp/audioapi/core/effects/ConvolverNode.h +2 -2
  21. package/common/cpp/audioapi/core/effects/DelayNode.cpp +5 -4
  22. package/common/cpp/audioapi/core/effects/DelayNode.h +2 -1
  23. package/common/cpp/audioapi/core/effects/GainNode.cpp +4 -3
  24. package/common/cpp/audioapi/core/effects/GainNode.h +2 -1
  25. package/common/cpp/audioapi/core/effects/IIRFilterNode.cpp +6 -6
  26. package/common/cpp/audioapi/core/effects/IIRFilterNode.h +3 -2
  27. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +3 -3
  28. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +4 -1
  29. package/common/cpp/audioapi/core/effects/WaveShaperNode.cpp +4 -3
  30. package/common/cpp/audioapi/core/effects/WaveShaperNode.h +4 -1
  31. package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +3 -2
  32. package/common/cpp/audioapi/core/sources/AudioBuffer.h +2 -1
  33. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +16 -22
  34. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +2 -1
  35. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +38 -20
  36. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +9 -1
  37. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +10 -8
  38. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +5 -2
  39. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +5 -8
  40. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +4 -1
  41. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +21 -16
  42. package/common/cpp/audioapi/core/sources/OscillatorNode.h +4 -1
  43. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +4 -2
  44. package/common/cpp/audioapi/core/sources/StreamerNode.h +11 -1
  45. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +8 -2
  46. package/common/cpp/test/src/ConstantSourceTest.cpp +3 -2
  47. package/common/cpp/test/src/DelayTest.cpp +12 -5
  48. package/common/cpp/test/src/GainTest.cpp +3 -2
  49. package/common/cpp/test/src/IIRFilterTest.cpp +3 -2
  50. package/common/cpp/test/src/OscillatorTest.cpp +2 -1
  51. package/common/cpp/test/src/StereoPannerTest.cpp +3 -2
  52. package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +10 -9
  53. package/common/cpp/test/src/core/effects/WaveShaperNodeTest.cpp +4 -3
  54. package/ios/audioapi/ios/AudioAPIModule.h +2 -2
  55. package/ios/audioapi/ios/AudioAPIModule.mm +3 -3
  56. package/ios/audioapi/ios/system/AudioEngine.mm +3 -1
  57. package/ios/audioapi/ios/system/AudioSessionManager.h +1 -0
  58. package/ios/audioapi/ios/system/{NotificationManager.h → SystemNotificationManager.h} +1 -1
  59. package/ios/audioapi/ios/system/{NotificationManager.mm → SystemNotificationManager.mm} +9 -4
  60. package/lib/commonjs/api.js +11 -3
  61. package/lib/commonjs/api.js.map +1 -1
  62. package/lib/commonjs/api.web.js +4 -10
  63. package/lib/commonjs/api.web.js.map +1 -1
  64. package/lib/commonjs/core/AnalyserNode.js +11 -0
  65. package/lib/commonjs/core/AnalyserNode.js.map +1 -1
  66. package/lib/commonjs/core/AudioBuffer.js +20 -6
  67. package/lib/commonjs/core/AudioBuffer.js.map +1 -1
  68. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +24 -0
  69. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  70. package/lib/commonjs/core/AudioBufferSourceNode.js +9 -6
  71. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  72. package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
  73. package/lib/commonjs/core/BaseAudioContext.js +52 -65
  74. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  75. package/lib/commonjs/core/BiquadFilterNode.js +7 -1
  76. package/lib/commonjs/core/BiquadFilterNode.js.map +1 -1
  77. package/lib/commonjs/core/ConstantSourceNode.js +7 -1
  78. package/lib/commonjs/core/ConstantSourceNode.js.map +1 -1
  79. package/lib/commonjs/core/ConvolverNode.js +9 -3
  80. package/lib/commonjs/core/ConvolverNode.js.map +1 -1
  81. package/lib/commonjs/core/DelayNode.js +7 -1
  82. package/lib/commonjs/core/DelayNode.js.map +1 -1
  83. package/lib/commonjs/core/GainNode.js +9 -3
  84. package/lib/commonjs/core/GainNode.js.map +1 -1
  85. package/lib/commonjs/core/IIRFilterNode.js +9 -0
  86. package/lib/commonjs/core/IIRFilterNode.js.map +1 -1
  87. package/lib/commonjs/core/OscillatorNode.js +10 -7
  88. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  89. package/lib/commonjs/core/PeriodicWave.js +30 -2
  90. package/lib/commonjs/core/PeriodicWave.js.map +1 -1
  91. package/lib/commonjs/core/RecorderAdapterNode.js +3 -0
  92. package/lib/commonjs/core/RecorderAdapterNode.js.map +1 -1
  93. package/lib/commonjs/core/StereoPannerNode.js +7 -1
  94. package/lib/commonjs/core/StereoPannerNode.js.map +1 -1
  95. package/lib/commonjs/core/StreamerNode.js +25 -1
  96. package/lib/commonjs/core/StreamerNode.js.map +1 -1
  97. package/lib/commonjs/core/WaveShaperNode.js +12 -0
  98. package/lib/commonjs/core/WaveShaperNode.js.map +1 -1
  99. package/lib/commonjs/core/WorkletNode.js +13 -1
  100. package/lib/commonjs/core/WorkletNode.js.map +1 -1
  101. package/lib/commonjs/core/WorkletProcessingNode.js +14 -1
  102. package/lib/commonjs/core/WorkletProcessingNode.js.map +1 -1
  103. package/lib/commonjs/core/WorkletSourceNode.js +13 -1
  104. package/lib/commonjs/core/WorkletSourceNode.js.map +1 -1
  105. package/lib/commonjs/defaults.js +78 -0
  106. package/lib/commonjs/defaults.js.map +1 -0
  107. package/lib/commonjs/options-validators.js +40 -0
  108. package/lib/commonjs/options-validators.js.map +1 -0
  109. package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
  110. package/lib/commonjs/specs/NativeAudioAPIModule.web.js.map +1 -1
  111. package/lib/commonjs/system/AudioManager.js +7 -2
  112. package/lib/commonjs/system/AudioManager.js.map +1 -1
  113. package/lib/commonjs/types.js.map +1 -1
  114. package/lib/commonjs/web-core/AnalyserNode.js +2 -1
  115. package/lib/commonjs/web-core/AnalyserNode.js.map +1 -1
  116. package/lib/commonjs/web-core/AudioBuffer.js +14 -6
  117. package/lib/commonjs/web-core/AudioBuffer.js.map +1 -1
  118. package/lib/commonjs/web-core/AudioBufferSourceNode.js +276 -89
  119. package/lib/commonjs/web-core/AudioBufferSourceNode.js.map +1 -1
  120. package/lib/commonjs/web-core/AudioContext.js +33 -32
  121. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  122. package/lib/commonjs/web-core/AudioNode.js +4 -0
  123. package/lib/commonjs/web-core/AudioNode.js.map +1 -1
  124. package/lib/commonjs/web-core/AudioScheduledSourceNode.js +4 -2
  125. package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
  126. package/lib/commonjs/web-core/BiquadFilterNode.js +2 -1
  127. package/lib/commonjs/web-core/BiquadFilterNode.js.map +1 -1
  128. package/lib/commonjs/web-core/ConstantSourceNode.js +2 -1
  129. package/lib/commonjs/web-core/ConstantSourceNode.js.map +1 -1
  130. package/lib/commonjs/web-core/ConvolverNode.js +3 -5
  131. package/lib/commonjs/web-core/ConvolverNode.js.map +1 -1
  132. package/lib/commonjs/web-core/DelayNode.js +7 -1
  133. package/lib/commonjs/web-core/DelayNode.js.map +1 -1
  134. package/lib/commonjs/web-core/GainNode.js +2 -1
  135. package/lib/commonjs/web-core/GainNode.js.map +1 -1
  136. package/lib/commonjs/web-core/IIRFilterNode.js +12 -0
  137. package/lib/commonjs/web-core/IIRFilterNode.js.map +1 -1
  138. package/lib/commonjs/web-core/OfflineAudioContext.js +33 -32
  139. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  140. package/lib/commonjs/web-core/OscillatorNode.js +2 -1
  141. package/lib/commonjs/web-core/OscillatorNode.js.map +1 -1
  142. package/lib/commonjs/web-core/PeriodicWave.js +6 -1
  143. package/lib/commonjs/web-core/PeriodicWave.js.map +1 -1
  144. package/lib/commonjs/web-core/StereoPannerNode.js +2 -1
  145. package/lib/commonjs/web-core/StereoPannerNode.js.map +1 -1
  146. package/lib/module/api.js +2 -1
  147. package/lib/module/api.js.map +1 -1
  148. package/lib/module/api.web.js +2 -1
  149. package/lib/module/api.web.js.map +1 -1
  150. package/lib/module/core/AnalyserNode.js +11 -0
  151. package/lib/module/core/AnalyserNode.js.map +1 -1
  152. package/lib/module/core/AudioBuffer.js +19 -6
  153. package/lib/module/core/AudioBuffer.js.map +1 -1
  154. package/lib/module/core/AudioBufferQueueSourceNode.js +24 -0
  155. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  156. package/lib/module/core/AudioBufferSourceNode.js +9 -6
  157. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  158. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  159. package/lib/module/core/BaseAudioContext.js +52 -65
  160. package/lib/module/core/BaseAudioContext.js.map +1 -1
  161. package/lib/module/core/BiquadFilterNode.js +7 -1
  162. package/lib/module/core/BiquadFilterNode.js.map +1 -1
  163. package/lib/module/core/ConstantSourceNode.js +7 -1
  164. package/lib/module/core/ConstantSourceNode.js.map +1 -1
  165. package/lib/module/core/ConvolverNode.js +9 -3
  166. package/lib/module/core/ConvolverNode.js.map +1 -1
  167. package/lib/module/core/DelayNode.js +7 -1
  168. package/lib/module/core/DelayNode.js.map +1 -1
  169. package/lib/module/core/GainNode.js +9 -3
  170. package/lib/module/core/GainNode.js.map +1 -1
  171. package/lib/module/core/IIRFilterNode.js +9 -0
  172. package/lib/module/core/IIRFilterNode.js.map +1 -1
  173. package/lib/module/core/OscillatorNode.js +10 -7
  174. package/lib/module/core/OscillatorNode.js.map +1 -1
  175. package/lib/module/core/PeriodicWave.js +29 -2
  176. package/lib/module/core/PeriodicWave.js.map +1 -1
  177. package/lib/module/core/RecorderAdapterNode.js +3 -0
  178. package/lib/module/core/RecorderAdapterNode.js.map +1 -1
  179. package/lib/module/core/StereoPannerNode.js +7 -1
  180. package/lib/module/core/StereoPannerNode.js.map +1 -1
  181. package/lib/module/core/StreamerNode.js +25 -1
  182. package/lib/module/core/StreamerNode.js.map +1 -1
  183. package/lib/module/core/WaveShaperNode.js +12 -0
  184. package/lib/module/core/WaveShaperNode.js.map +1 -1
  185. package/lib/module/core/WorkletNode.js +13 -1
  186. package/lib/module/core/WorkletNode.js.map +1 -1
  187. package/lib/module/core/WorkletProcessingNode.js +14 -1
  188. package/lib/module/core/WorkletProcessingNode.js.map +1 -1
  189. package/lib/module/core/WorkletSourceNode.js +13 -1
  190. package/lib/module/core/WorkletSourceNode.js.map +1 -1
  191. package/lib/module/defaults.js +74 -0
  192. package/lib/module/defaults.js.map +1 -0
  193. package/lib/module/options-validators.js +36 -0
  194. package/lib/module/options-validators.js.map +1 -0
  195. package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
  196. package/lib/module/specs/NativeAudioAPIModule.web.js.map +1 -1
  197. package/lib/module/system/AudioManager.js +7 -2
  198. package/lib/module/system/AudioManager.js.map +1 -1
  199. package/lib/module/types.js.map +1 -1
  200. package/lib/module/web-core/AnalyserNode.js +2 -1
  201. package/lib/module/web-core/AnalyserNode.js.map +1 -1
  202. package/lib/module/web-core/AudioBuffer.js +13 -6
  203. package/lib/module/web-core/AudioBuffer.js.map +1 -1
  204. package/lib/module/web-core/AudioBufferSourceNode.js +277 -90
  205. package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -1
  206. package/lib/module/web-core/AudioContext.js +33 -32
  207. package/lib/module/web-core/AudioContext.js.map +1 -1
  208. package/lib/module/web-core/AudioNode.js +4 -0
  209. package/lib/module/web-core/AudioNode.js.map +1 -1
  210. package/lib/module/web-core/AudioScheduledSourceNode.js +4 -2
  211. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  212. package/lib/module/web-core/BiquadFilterNode.js +2 -1
  213. package/lib/module/web-core/BiquadFilterNode.js.map +1 -1
  214. package/lib/module/web-core/ConstantSourceNode.js +2 -1
  215. package/lib/module/web-core/ConstantSourceNode.js.map +1 -1
  216. package/lib/module/web-core/ConvolverNode.js +3 -5
  217. package/lib/module/web-core/ConvolverNode.js.map +1 -1
  218. package/lib/module/web-core/DelayNode.js +7 -1
  219. package/lib/module/web-core/DelayNode.js.map +1 -1
  220. package/lib/module/web-core/GainNode.js +2 -1
  221. package/lib/module/web-core/GainNode.js.map +1 -1
  222. package/lib/module/web-core/IIRFilterNode.js +12 -0
  223. package/lib/module/web-core/IIRFilterNode.js.map +1 -1
  224. package/lib/module/web-core/OfflineAudioContext.js +33 -32
  225. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  226. package/lib/module/web-core/OscillatorNode.js +2 -1
  227. package/lib/module/web-core/OscillatorNode.js.map +1 -1
  228. package/lib/module/web-core/PeriodicWave.js +6 -1
  229. package/lib/module/web-core/PeriodicWave.js.map +1 -1
  230. package/lib/module/web-core/StereoPannerNode.js +2 -1
  231. package/lib/module/web-core/StereoPannerNode.js.map +1 -1
  232. package/lib/typescript/api.d.ts +2 -1
  233. package/lib/typescript/api.d.ts.map +1 -1
  234. package/lib/typescript/api.web.d.ts +2 -1
  235. package/lib/typescript/api.web.d.ts.map +1 -1
  236. package/lib/typescript/core/AnalyserNode.d.ts +3 -1
  237. package/lib/typescript/core/AnalyserNode.d.ts.map +1 -1
  238. package/lib/typescript/core/AudioBuffer.d.ts +3 -0
  239. package/lib/typescript/core/AudioBuffer.d.ts.map +1 -1
  240. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +8 -0
  241. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  242. package/lib/typescript/core/AudioBufferSourceNode.d.ts +3 -2
  243. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  244. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +3 -3
  245. package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
  246. package/lib/typescript/core/BaseAudioContext.d.ts +10 -6
  247. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  248. package/lib/typescript/core/BiquadFilterNode.d.ts +2 -3
  249. package/lib/typescript/core/BiquadFilterNode.d.ts.map +1 -1
  250. package/lib/typescript/core/ConstantSourceNode.d.ts +2 -2
  251. package/lib/typescript/core/ConstantSourceNode.d.ts.map +1 -1
  252. package/lib/typescript/core/ConvolverNode.d.ts +2 -2
  253. package/lib/typescript/core/ConvolverNode.d.ts.map +1 -1
  254. package/lib/typescript/core/DelayNode.d.ts +2 -2
  255. package/lib/typescript/core/DelayNode.d.ts.map +1 -1
  256. package/lib/typescript/core/GainNode.d.ts +2 -2
  257. package/lib/typescript/core/GainNode.d.ts.map +1 -1
  258. package/lib/typescript/core/IIRFilterNode.d.ts +3 -0
  259. package/lib/typescript/core/IIRFilterNode.d.ts.map +1 -1
  260. package/lib/typescript/core/OscillatorNode.d.ts +2 -6
  261. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  262. package/lib/typescript/core/PeriodicWave.d.ts +4 -1
  263. package/lib/typescript/core/PeriodicWave.d.ts.map +1 -1
  264. package/lib/typescript/core/RecorderAdapterNode.d.ts +2 -0
  265. package/lib/typescript/core/RecorderAdapterNode.d.ts.map +1 -1
  266. package/lib/typescript/core/StereoPannerNode.d.ts +2 -2
  267. package/lib/typescript/core/StereoPannerNode.d.ts.map +1 -1
  268. package/lib/typescript/core/StreamerNode.d.ts +5 -0
  269. package/lib/typescript/core/StreamerNode.d.ts.map +1 -1
  270. package/lib/typescript/core/WaveShaperNode.d.ts +3 -0
  271. package/lib/typescript/core/WaveShaperNode.d.ts.map +1 -1
  272. package/lib/typescript/core/WorkletNode.d.ts +3 -0
  273. package/lib/typescript/core/WorkletNode.d.ts.map +1 -1
  274. package/lib/typescript/core/WorkletProcessingNode.d.ts +3 -0
  275. package/lib/typescript/core/WorkletProcessingNode.d.ts.map +1 -1
  276. package/lib/typescript/core/WorkletSourceNode.d.ts +3 -0
  277. package/lib/typescript/core/WorkletSourceNode.d.ts.map +1 -1
  278. package/lib/typescript/defaults.d.ts +16 -0
  279. package/lib/typescript/defaults.d.ts.map +1 -0
  280. package/lib/typescript/events/types.d.ts +6 -4
  281. package/lib/typescript/events/types.d.ts.map +1 -1
  282. package/lib/typescript/interfaces.d.ts +17 -15
  283. package/lib/typescript/interfaces.d.ts.map +1 -1
  284. package/lib/typescript/options-validators.d.ts +6 -0
  285. package/lib/typescript/options-validators.d.ts.map +1 -0
  286. package/lib/typescript/specs/NativeAudioAPIModule.d.ts +2 -1
  287. package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
  288. package/lib/typescript/specs/NativeAudioAPIModule.web.d.ts +2 -2
  289. package/lib/typescript/specs/NativeAudioAPIModule.web.d.ts.map +1 -1
  290. package/lib/typescript/system/AudioManager.d.ts +2 -2
  291. package/lib/typescript/system/AudioManager.d.ts.map +1 -1
  292. package/lib/typescript/system/types.d.ts +2 -1
  293. package/lib/typescript/system/types.d.ts.map +1 -1
  294. package/lib/typescript/types.d.ts +80 -11
  295. package/lib/typescript/types.d.ts.map +1 -1
  296. package/lib/typescript/web-core/AnalyserNode.d.ts +2 -2
  297. package/lib/typescript/web-core/AnalyserNode.d.ts.map +1 -1
  298. package/lib/typescript/web-core/AudioBuffer.d.ts +3 -0
  299. package/lib/typescript/web-core/AudioBuffer.d.ts.map +1 -1
  300. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +24 -15
  301. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -1
  302. package/lib/typescript/web-core/AudioContext.d.ts +5 -6
  303. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  304. package/lib/typescript/web-core/AudioNode.d.ts +2 -2
  305. package/lib/typescript/web-core/AudioNode.d.ts.map +1 -1
  306. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +2 -0
  307. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts.map +1 -1
  308. package/lib/typescript/web-core/BaseAudioContext.d.ts +3 -3
  309. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  310. package/lib/typescript/web-core/BiquadFilterNode.d.ts +2 -2
  311. package/lib/typescript/web-core/BiquadFilterNode.d.ts.map +1 -1
  312. package/lib/typescript/web-core/ConstantSourceNode.d.ts +2 -1
  313. package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +1 -1
  314. package/lib/typescript/web-core/ConvolverNode.d.ts +2 -1
  315. package/lib/typescript/web-core/ConvolverNode.d.ts.map +1 -1
  316. package/lib/typescript/web-core/DelayNode.d.ts +2 -1
  317. package/lib/typescript/web-core/DelayNode.d.ts.map +1 -1
  318. package/lib/typescript/web-core/GainNode.d.ts +2 -1
  319. package/lib/typescript/web-core/GainNode.d.ts.map +1 -1
  320. package/lib/typescript/web-core/IIRFilterNode.d.ts +3 -0
  321. package/lib/typescript/web-core/IIRFilterNode.d.ts.map +1 -1
  322. package/lib/typescript/web-core/OfflineAudioContext.d.ts +5 -6
  323. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  324. package/lib/typescript/web-core/OscillatorNode.d.ts +2 -2
  325. package/lib/typescript/web-core/OscillatorNode.d.ts.map +1 -1
  326. package/lib/typescript/web-core/PeriodicWave.d.ts +3 -1
  327. package/lib/typescript/web-core/PeriodicWave.d.ts.map +1 -1
  328. package/lib/typescript/web-core/StereoPannerNode.d.ts +2 -1
  329. package/lib/typescript/web-core/StereoPannerNode.d.ts.map +1 -1
  330. package/package.json +1 -1
  331. package/src/api.ts +3 -1
  332. package/src/api.web.ts +1 -2
  333. package/src/core/AnalyserNode.ts +16 -1
  334. package/src/core/AudioBuffer.ts +26 -6
  335. package/src/core/AudioBufferQueueSourceNode.ts +46 -0
  336. package/src/core/AudioBufferSourceNode.ts +12 -10
  337. package/src/core/AudioScheduledSourceNode.ts +4 -4
  338. package/src/core/BaseAudioContext.ts +48 -151
  339. package/src/core/BiquadFilterNode.ts +9 -2
  340. package/src/core/ConstantSourceNode.ts +9 -1
  341. package/src/core/ConvolverNode.ts +11 -3
  342. package/src/core/DelayNode.ts +5 -2
  343. package/src/core/GainNode.ts +10 -3
  344. package/src/core/IIRFilterNode.ts +12 -0
  345. package/src/core/OscillatorNode.ts +13 -13
  346. package/src/core/PeriodicWave.ts +36 -2
  347. package/src/core/RecorderAdapterNode.ts +5 -0
  348. package/src/core/StereoPannerNode.ts +9 -1
  349. package/src/core/StreamerNode.ts +29 -1
  350. package/src/core/WaveShaperNode.ts +17 -0
  351. package/src/core/WorkletNode.ts +30 -1
  352. package/src/core/WorkletProcessingNode.ts +39 -1
  353. package/src/core/WorkletSourceNode.ts +36 -1
  354. package/src/defaults.ts +100 -0
  355. package/src/events/types.ts +6 -4
  356. package/src/interfaces.ts +40 -24
  357. package/src/options-validators.ts +66 -0
  358. package/src/specs/NativeAudioAPIModule.ts +6 -1
  359. package/src/specs/NativeAudioAPIModule.web.ts +6 -2
  360. package/src/system/AudioManager.ts +8 -2
  361. package/src/system/types.ts +7 -1
  362. package/src/types.ts +96 -12
  363. package/src/web-core/AnalyserNode.tsx +15 -6
  364. package/src/web-core/AudioBuffer.tsx +20 -6
  365. package/src/web-core/AudioBufferSourceNode.tsx +393 -148
  366. package/src/web-core/AudioContext.tsx +22 -72
  367. package/src/web-core/AudioNode.tsx +6 -2
  368. package/src/web-core/AudioScheduledSourceNode.tsx +6 -1
  369. package/src/web-core/BaseAudioContext.tsx +3 -7
  370. package/src/web-core/BiquadFilterNode.tsx +6 -2
  371. package/src/web-core/ConstantSourceNode.tsx +3 -1
  372. package/src/web-core/ConvolverNode.tsx +8 -8
  373. package/src/web-core/DelayNode.tsx +5 -1
  374. package/src/web-core/GainNode.tsx +3 -1
  375. package/src/web-core/IIRFilterNode.tsx +15 -0
  376. package/src/web-core/OfflineAudioContext.tsx +19 -67
  377. package/src/web-core/OscillatorNode.tsx +3 -2
  378. package/src/web-core/PeriodicWave.tsx +11 -1
  379. package/src/web-core/StereoPannerNode.tsx +9 -1
@@ -1,12 +1,5 @@
1
1
  import { InvalidAccessError, NotSupportedError } from '../errors';
2
- import {
3
- AudioBufferBaseSourceNodeOptions,
4
- AudioContextOptions,
5
- ContextState,
6
- DecodeDataInput,
7
- IIRFilterNodeOptions,
8
- PeriodicWaveConstraints,
9
- } from '../types';
2
+ import { AudioContextOptions, ContextState, DecodeDataInput } from '../types';
10
3
  import AnalyserNode from './AnalyserNode';
11
4
  import AudioBuffer from './AudioBuffer';
12
5
  import AudioBufferSourceNode from './AudioBufferSourceNode';
@@ -14,16 +7,13 @@ import AudioDestinationNode from './AudioDestinationNode';
14
7
  import BaseAudioContext from './BaseAudioContext';
15
8
  import BiquadFilterNode from './BiquadFilterNode';
16
9
  import ConvolverNode from './ConvolverNode';
17
- import { ConvolverNodeOptions } from './ConvolverNodeOptions';
18
10
  import DelayNode from './DelayNode';
19
11
  import GainNode from './GainNode';
20
12
  import IIRFilterNode from './IIRFilterNode';
21
13
  import OscillatorNode from './OscillatorNode';
22
14
  import PeriodicWave from './PeriodicWave';
23
15
  import StereoPannerNode from './StereoPannerNode';
24
-
25
16
  import ConstantSourceNode from './ConstantSourceNode';
26
- import { globalTag, globalWasmPromise } from './custom/LoadCustomWasm';
27
17
  import WaveShaperNode from './WaveShaperNode';
28
18
 
29
19
  export default class AudioContext implements BaseAudioContext {
@@ -58,85 +48,49 @@ export default class AudioContext implements BaseAudioContext {
58
48
  }
59
49
 
60
50
  createOscillator(): OscillatorNode {
61
- return new OscillatorNode(this, this.context.createOscillator());
51
+ return new OscillatorNode(this);
62
52
  }
63
53
 
64
54
  createConstantSource(): ConstantSourceNode {
65
- return new ConstantSourceNode(this, this.context.createConstantSource());
55
+ return new ConstantSourceNode(this);
66
56
  }
67
57
 
68
58
  createGain(): GainNode {
69
- return new GainNode(this, this.context.createGain());
59
+ return new GainNode(this);
70
60
  }
71
61
 
72
62
  createDelay(maxDelayTime?: number): DelayNode {
73
- return new DelayNode(this, this.context.createDelay(maxDelayTime));
63
+ return new DelayNode(this, { maxDelayTime });
74
64
  }
75
65
 
76
66
  createStereoPanner(): StereoPannerNode {
77
- return new StereoPannerNode(this, this.context.createStereoPanner());
67
+ return new StereoPannerNode(this);
78
68
  }
79
69
 
80
70
  createBiquadFilter(): BiquadFilterNode {
81
- return new BiquadFilterNode(this, this.context.createBiquadFilter());
82
- }
83
-
84
- createIIRFilter(options: IIRFilterNodeOptions): IIRFilterNode {
85
- return new IIRFilterNode(
86
- this,
87
- this.context.createIIRFilter(options.feedforward, options.feedback)
88
- );
89
- }
90
-
91
- createConvolver(options?: ConvolverNodeOptions): ConvolverNode {
92
- if (options?.buffer) {
93
- const numberOfChannels = options.buffer.numberOfChannels;
94
- if (
95
- numberOfChannels !== 1 &&
96
- numberOfChannels !== 2 &&
97
- numberOfChannels !== 4
98
- ) {
99
- throw new NotSupportedError(
100
- `The number of channels provided (${numberOfChannels}) in impulse response for ConvolverNode buffer must be 1 or 2 or 4.`
101
- );
102
- }
103
- }
104
- const buffer = options?.buffer ?? null;
105
- const disableNormalization = options?.disableNormalization ?? false;
106
- return new ConvolverNode(
107
- this,
108
- this.context.createConvolver(),
109
- buffer,
110
- disableNormalization
111
- );
112
- }
113
-
114
- async createBufferSource(
115
- options?: AudioBufferBaseSourceNodeOptions
116
- ): Promise<AudioBufferSourceNode> {
117
- if (!options || !options.pitchCorrection) {
118
- return new AudioBufferSourceNode(
119
- this,
120
- this.context.createBufferSource(),
121
- false
122
- );
123
- }
71
+ return new BiquadFilterNode(this);
72
+ }
124
73
 
125
- await globalWasmPromise;
74
+ createConvolver(): ConvolverNode {
75
+ return new ConvolverNode(this);
76
+ }
126
77
 
127
- const wasmStretch = await window[globalTag](this.context);
78
+ createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode {
79
+ return new IIRFilterNode(this, { feedforward, feedback });
80
+ }
128
81
 
129
- return new AudioBufferSourceNode(this, wasmStretch, true);
82
+ createBufferSource(pitchCorrection?: boolean): AudioBufferSourceNode {
83
+ return new AudioBufferSourceNode(this, { pitchCorrection });
130
84
  }
131
85
 
132
86
  createBuffer(
133
- numOfChannels: number,
87
+ numberOfChannels: number,
134
88
  length: number,
135
89
  sampleRate: number
136
90
  ): AudioBuffer {
137
- if (numOfChannels < 1 || numOfChannels >= 32) {
91
+ if (numberOfChannels < 1 || numberOfChannels >= 32) {
138
92
  throw new NotSupportedError(
139
- `The number of channels provided (${numOfChannels}) is outside the range [1, 32]`
93
+ `The number of channels provided (${numberOfChannels}) is outside the range [1, 32]`
140
94
  );
141
95
  }
142
96
 
@@ -152,9 +106,7 @@ export default class AudioContext implements BaseAudioContext {
152
106
  );
153
107
  }
154
108
 
155
- return new AudioBuffer(
156
- this.context.createBuffer(numOfChannels, length, sampleRate)
157
- );
109
+ return new AudioBuffer(this, { numberOfChannels, length, sampleRate });
158
110
  }
159
111
 
160
112
  createPeriodicWave(
@@ -168,13 +120,11 @@ export default class AudioContext implements BaseAudioContext {
168
120
  );
169
121
  }
170
122
 
171
- return new PeriodicWave(
172
- this.context.createPeriodicWave(real, imag, constraints)
173
- );
123
+ return new PeriodicWave(this, { real, imag, ...constraints });
174
124
  }
175
125
 
176
126
  createAnalyser(): AnalyserNode {
177
- return new AnalyserNode(this, this.context.createAnalyser());
127
+ return new AnalyserNode(this);
178
128
  }
179
129
 
180
130
  createWaveShaper(): WaveShaperNode {
@@ -10,7 +10,7 @@ export default class AudioNode {
10
10
  readonly channelCountMode: ChannelCountMode;
11
11
  readonly channelInterpretation: ChannelInterpretation;
12
12
 
13
- protected readonly node: globalThis.AudioNode;
13
+ readonly node: globalThis.AudioNode;
14
14
 
15
15
  constructor(context: BaseAudioContext, node: globalThis.AudioNode) {
16
16
  this.context = context;
@@ -38,12 +38,16 @@ export default class AudioNode {
38
38
  return destination;
39
39
  }
40
40
 
41
- public disconnect(destination?: AudioNode): void {
41
+ public disconnect(destination?: AudioNode | AudioParam): void {
42
42
  if (destination === undefined) {
43
43
  this.node.disconnect();
44
44
  return;
45
45
  }
46
46
 
47
+ if (destination instanceof AudioParam) {
48
+ this.node.disconnect(destination.param);
49
+ return;
50
+ }
47
51
  this.node.disconnect(destination.node);
48
52
  }
49
53
  }
@@ -4,6 +4,7 @@ import { RangeError, InvalidStateError } from '../errors';
4
4
 
5
5
  export default class AudioScheduledSourceNode extends AudioNode {
6
6
  protected hasBeenStarted: boolean = false;
7
+ private onEndedCallback?: (event: EventEmptyType) => void;
7
8
 
8
9
  public start(when: number = 0): void {
9
10
  if (when < 0) {
@@ -36,8 +37,12 @@ export default class AudioScheduledSourceNode extends AudioNode {
36
37
  (this.node as globalThis.AudioScheduledSourceNode).stop(when);
37
38
  }
38
39
 
39
- // eslint-disable-next-line accessor-pairs
40
+ public get onEnded(): ((event: EventEmptyType) => void) | undefined {
41
+ return this.onEndedCallback;
42
+ }
43
+
40
44
  public set onEnded(callback: (event: EventEmptyType) => void | null) {
41
45
  (this.node as globalThis.AudioScheduledSourceNode).onended = callback;
46
+ this.onEndedCallback = callback;
42
47
  }
43
48
  }
@@ -1,8 +1,4 @@
1
- import {
2
- ContextState,
3
- IIRFilterNodeOptions,
4
- PeriodicWaveConstraints,
5
- } from '../types';
1
+ import { ContextState } from '../types';
6
2
  import AnalyserNode from './AnalyserNode';
7
3
  import AudioBuffer from './AudioBuffer';
8
4
  import AudioBufferSourceNode from './AudioBufferSourceNode';
@@ -32,9 +28,9 @@ export default interface BaseAudioContext {
32
28
  createDelay(maxDelayTime?: number): DelayNode;
33
29
  createStereoPanner(): StereoPannerNode;
34
30
  createBiquadFilter(): BiquadFilterNode;
35
- createIIRFilter(options: IIRFilterNodeOptions): IIRFilterNode;
31
+ createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;
36
32
  createConvolver(): ConvolverNode;
37
- createBufferSource(): Promise<AudioBufferSourceNode>;
33
+ createBufferSource(): AudioBufferSourceNode;
38
34
  createBuffer(
39
35
  numOfChannels: number,
40
36
  length: number,
@@ -1,8 +1,8 @@
1
1
  import AudioParam from './AudioParam';
2
2
  import AudioNode from './AudioNode';
3
3
  import BaseAudioContext from './BaseAudioContext';
4
- import { BiquadFilterType } from '../types';
5
4
  import { InvalidAccessError } from '../errors';
5
+ import { TBiquadFilterOptions } from '../types';
6
6
 
7
7
  export default class BiquadFilterNode extends AudioNode {
8
8
  readonly frequency: AudioParam;
@@ -12,8 +12,12 @@ export default class BiquadFilterNode extends AudioNode {
12
12
 
13
13
  constructor(
14
14
  context: BaseAudioContext,
15
- biquadFilter: globalThis.BiquadFilterNode
15
+ biquadFilterOptions?: TBiquadFilterOptions
16
16
  ) {
17
+ const biquadFilter = new globalThis.BiquadFilterNode(
18
+ context.context,
19
+ biquadFilterOptions
20
+ );
17
21
  super(context, biquadFilter);
18
22
  this.frequency = new AudioParam(biquadFilter.frequency, context);
19
23
  this.detune = new AudioParam(biquadFilter.detune, context);
@@ -1,11 +1,13 @@
1
1
  import AudioParam from './AudioParam';
2
2
  import AudioScheduledSourceNode from './AudioScheduledSourceNode';
3
3
  import BaseAudioContext from './BaseAudioContext';
4
+ import { TConstantSourceOptions } from '../types';
4
5
 
5
6
  export default class ConstantSourceNode extends AudioScheduledSourceNode {
6
7
  readonly offset: AudioParam;
7
8
 
8
- constructor(context: BaseAudioContext, node: globalThis.ConstantSourceNode) {
9
+ constructor(context: BaseAudioContext, options?: TConstantSourceOptions) {
10
+ const node = new globalThis.ConstantSourceNode(context.context, options);
9
11
  super(context, node);
10
12
  this.offset = new AudioParam(node.offset, context);
11
13
  }
@@ -1,20 +1,20 @@
1
1
  import BaseAudioContext from './BaseAudioContext';
2
2
  import AudioNode from './AudioNode';
3
3
  import AudioBuffer from './AudioBuffer';
4
+ import { TWebConvolverOptions } from '../types';
4
5
 
5
6
  export default class ConvolverNode extends AudioNode {
6
7
  constructor(
7
8
  context: BaseAudioContext,
8
- node: globalThis.ConvolverNode,
9
- buffer: AudioBuffer | null = null,
10
- disableNormalization: boolean = false
9
+ convolverOptions?: TWebConvolverOptions
11
10
  ) {
12
- super(context, node);
11
+ const convolver = new globalThis.ConvolverNode(
12
+ context.context,
13
+ convolverOptions
14
+ );
13
15
 
14
- (this.node as globalThis.ConvolverNode).normalize = !disableNormalization;
15
- if (buffer) {
16
- (this.node as globalThis.ConvolverNode).buffer = buffer.buffer;
17
- }
16
+ const node = convolver;
17
+ super(context, node);
18
18
  }
19
19
 
20
20
  public get buffer(): AudioBuffer | null {
@@ -1,11 +1,15 @@
1
1
  import BaseAudioContext from './BaseAudioContext';
2
2
  import AudioNode from './AudioNode';
3
3
  import AudioParam from './AudioParam';
4
+ import { TDelayOptions } from '../types';
5
+ import { DelayOptions } from '../defaults';
4
6
 
5
7
  export default class DelayNode extends AudioNode {
6
8
  readonly delayTime: AudioParam;
7
9
 
8
- constructor(context: BaseAudioContext, delay: globalThis.DelayNode) {
10
+ constructor(context: BaseAudioContext, options?: TDelayOptions) {
11
+ const finalOptions = { ...DelayOptions, ...options };
12
+ const delay = new globalThis.DelayNode(context.context, finalOptions);
9
13
  super(context, delay);
10
14
  this.delayTime = new AudioParam(delay.delayTime, context);
11
15
  }
@@ -1,11 +1,13 @@
1
1
  import BaseAudioContext from './BaseAudioContext';
2
2
  import AudioNode from './AudioNode';
3
3
  import AudioParam from './AudioParam';
4
+ import { TGainOptions } from '../types';
4
5
 
5
6
  export default class GainNode extends AudioNode {
6
7
  readonly gain: AudioParam;
7
8
 
8
- constructor(context: BaseAudioContext, gain: globalThis.GainNode) {
9
+ constructor(context: BaseAudioContext, gainOptions?: TGainOptions) {
10
+ const gain = new globalThis.GainNode(context.context, gainOptions);
9
11
  super(context, gain);
10
12
  this.gain = new AudioParam(gain.gain, context);
11
13
  }
@@ -1,7 +1,22 @@
1
1
  import { NotSupportedError } from '../errors';
2
2
  import AudioNode from './AudioNode';
3
+ import { TIIRFilterOptions } from '../types';
4
+ import { AudioNodeOptions } from '../defaults';
5
+ import BaseAudioContext from './BaseAudioContext';
3
6
 
4
7
  export default class IIRFilterNode extends AudioNode {
8
+ constructor(context: BaseAudioContext, options: TIIRFilterOptions) {
9
+ const finalOptions: TIIRFilterOptions = {
10
+ ...AudioNodeOptions,
11
+ ...options,
12
+ };
13
+ const iirFilterNode = new globalThis.IIRFilterNode(context.context, {
14
+ feedforward: finalOptions.feedforward,
15
+ feedback: finalOptions.feedback,
16
+ });
17
+ super(context, iirFilterNode);
18
+ }
19
+
5
20
  public getFrequencyResponse(
6
21
  frequencyArray: Float32Array,
7
22
  magResponseOutput: Float32Array,
@@ -1,10 +1,4 @@
1
- import {
2
- ContextState,
3
- PeriodicWaveConstraints,
4
- OfflineAudioContextOptions,
5
- AudioBufferBaseSourceNodeOptions,
6
- IIRFilterNodeOptions,
7
- } from '../types';
1
+ import { ContextState, OfflineAudioContextOptions } from '../types';
8
2
  import { InvalidAccessError, NotSupportedError } from '../errors';
9
3
  import BaseAudioContext from './BaseAudioContext';
10
4
  import AnalyserNode from './AnalyserNode';
@@ -20,9 +14,7 @@ import StereoPannerNode from './StereoPannerNode';
20
14
  import ConstantSourceNode from './ConstantSourceNode';
21
15
  import WaveShaperNode from './WaveShaperNode';
22
16
 
23
- import { globalWasmPromise, globalTag } from './custom/LoadCustomWasm';
24
17
  import ConvolverNode from './ConvolverNode';
25
- import { ConvolverNodeOptions } from './ConvolverNodeOptions';
26
18
  import DelayNode from './DelayNode';
27
19
 
28
20
  export default class OfflineAudioContext implements BaseAudioContext {
@@ -63,85 +55,49 @@ export default class OfflineAudioContext implements BaseAudioContext {
63
55
  }
64
56
 
65
57
  createOscillator(): OscillatorNode {
66
- return new OscillatorNode(this, this.context.createOscillator());
58
+ return new OscillatorNode(this);
67
59
  }
68
60
 
69
61
  createConstantSource(): ConstantSourceNode {
70
- return new ConstantSourceNode(this, this.context.createConstantSource());
62
+ return new ConstantSourceNode(this);
71
63
  }
72
64
 
73
65
  createGain(): GainNode {
74
- return new GainNode(this, this.context.createGain());
66
+ return new GainNode(this);
75
67
  }
76
68
 
77
69
  createDelay(maxDelayTime?: number): DelayNode {
78
- return new DelayNode(this, this.context.createDelay(maxDelayTime));
70
+ return new DelayNode(this, { maxDelayTime });
79
71
  }
80
72
 
81
73
  createStereoPanner(): StereoPannerNode {
82
- return new StereoPannerNode(this, this.context.createStereoPanner());
74
+ return new StereoPannerNode(this);
83
75
  }
84
76
 
85
77
  createBiquadFilter(): BiquadFilterNode {
86
- return new BiquadFilterNode(this, this.context.createBiquadFilter());
78
+ return new BiquadFilterNode(this);
87
79
  }
88
80
 
89
- createIIRFilter(options: IIRFilterNodeOptions): IIRFilterNode {
90
- return new IIRFilterNode(
91
- this,
92
- this.context.createIIRFilter(options.feedforward, options.feedback)
93
- );
81
+ createConvolver(): ConvolverNode {
82
+ return new ConvolverNode(this);
94
83
  }
95
84
 
96
- createConvolver(options?: ConvolverNodeOptions): ConvolverNode {
97
- if (options?.buffer) {
98
- const numberOfChannels = options.buffer.numberOfChannels;
99
- if (
100
- numberOfChannels !== 1 &&
101
- numberOfChannels !== 2 &&
102
- numberOfChannels !== 4
103
- ) {
104
- throw new NotSupportedError(
105
- `The number of channels provided (${numberOfChannels}) in impulse response for ConvolverNode buffer must be 1 or 2 or 4.`
106
- );
107
- }
108
- }
109
- const buffer = options?.buffer ?? null;
110
- const disableNormalization = options?.disableNormalization ?? false;
111
- return new ConvolverNode(
112
- this,
113
- this.context.createConvolver(),
114
- buffer,
115
- disableNormalization
116
- );
85
+ createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode {
86
+ return new IIRFilterNode(this, { feedforward, feedback });
117
87
  }
118
88
 
119
- async createBufferSource(
120
- options?: AudioBufferBaseSourceNodeOptions
121
- ): Promise<AudioBufferSourceNode> {
122
- if (!options || !options.pitchCorrection) {
123
- return new AudioBufferSourceNode(
124
- this,
125
- this.context.createBufferSource(),
126
- false
127
- );
128
- }
129
-
130
- await globalWasmPromise;
131
-
132
- const wasmStretch = await window[globalTag](this.context);
133
-
134
- return new AudioBufferSourceNode(this, wasmStretch, true);
89
+ createBufferSource(pitchCorrection?: boolean): AudioBufferSourceNode {
90
+ return new AudioBufferSourceNode(this, { pitchCorrection });
135
91
  }
136
92
 
137
93
  createBuffer(
138
- numOfChannels: number,
94
+ numberOfChannels: number,
139
95
  length: number,
140
96
  sampleRate: number
141
97
  ): AudioBuffer {
142
- if (numOfChannels < 1 || numOfChannels >= 32) {
98
+ if (numberOfChannels < 1 || numberOfChannels >= 32) {
143
99
  throw new NotSupportedError(
144
- `The number of channels provided (${numOfChannels}) is outside the range [1, 32]`
100
+ `The number of channels provided (${numberOfChannels}) is outside the range [1, 32]`
145
101
  );
146
102
  }
147
103
 
@@ -157,9 +113,7 @@ export default class OfflineAudioContext implements BaseAudioContext {
157
113
  );
158
114
  }
159
115
 
160
- return new AudioBuffer(
161
- this.context.createBuffer(numOfChannels, length, sampleRate)
162
- );
116
+ return new AudioBuffer(this, { numberOfChannels, length, sampleRate });
163
117
  }
164
118
 
165
119
  createPeriodicWave(
@@ -173,13 +127,11 @@ export default class OfflineAudioContext implements BaseAudioContext {
173
127
  );
174
128
  }
175
129
 
176
- return new PeriodicWave(
177
- this.context.createPeriodicWave(real, imag, constraints)
178
- );
130
+ return new PeriodicWave(this, { real, imag, ...constraints });
179
131
  }
180
132
 
181
133
  createAnalyser(): AnalyserNode {
182
- return new AnalyserNode(this, this.context.createAnalyser());
134
+ return new AnalyserNode(this);
183
135
  }
184
136
 
185
137
  createWaveShaper(): WaveShaperNode {
@@ -1,4 +1,4 @@
1
- import { OscillatorType } from '../types';
1
+ import { OscillatorType, TOscillatorOptions } from '../types';
2
2
  import { InvalidStateError } from '../errors';
3
3
  import AudioScheduledSourceNode from './AudioScheduledSourceNode';
4
4
  import BaseAudioContext from './BaseAudioContext';
@@ -9,7 +9,8 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
9
9
  readonly frequency: AudioParam;
10
10
  readonly detune: AudioParam;
11
11
 
12
- constructor(context: BaseAudioContext, node: globalThis.OscillatorNode) {
12
+ constructor(context: BaseAudioContext, options?: TOscillatorOptions) {
13
+ const node = new globalThis.OscillatorNode(context.context, options);
13
14
  super(context, node);
14
15
 
15
16
  this.detune = new AudioParam(node.detune, context);
@@ -1,8 +1,18 @@
1
+ import BaseAudioContext from './BaseAudioContext';
2
+ import { TPeriodicWaveOptions } from '../types';
3
+ import { generateRealAndImag } from '../core/PeriodicWave';
4
+
1
5
  export default class PeriodicWave {
2
6
  /** @internal */
3
7
  readonly periodicWave: globalThis.PeriodicWave;
4
8
 
5
- constructor(periodicWave: globalThis.PeriodicWave) {
9
+ constructor(context: BaseAudioContext, options?: TPeriodicWaveOptions) {
10
+ const finalOptions = generateRealAndImag(options);
11
+ const periodicWave = context.context.createPeriodicWave(
12
+ finalOptions.real!,
13
+ finalOptions.imag!,
14
+ { disableNormalization: finalOptions.disableNormalization }
15
+ );
6
16
  this.periodicWave = periodicWave;
7
17
  }
8
18
  }
@@ -1,11 +1,19 @@
1
1
  import BaseAudioContext from './BaseAudioContext';
2
2
  import AudioNode from './AudioNode';
3
3
  import AudioParam from './AudioParam';
4
+ import { TSteroPannerOptions } from '../types';
4
5
 
5
6
  export default class StereoPannerNode extends AudioNode {
6
7
  readonly pan: AudioParam;
7
8
 
8
- constructor(context: BaseAudioContext, pan: globalThis.StereoPannerNode) {
9
+ constructor(
10
+ context: BaseAudioContext,
11
+ stereoPannerOptions?: TSteroPannerOptions
12
+ ) {
13
+ const pan = new globalThis.StereoPannerNode(
14
+ context.context,
15
+ stereoPannerOptions
16
+ );
9
17
  super(context, pan);
10
18
  this.pan = new AudioParam(pan.pan, context);
11
19
  }