@jadujoel/web-audio-clip-node 0.1.7 → 0.1.8

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 (432) hide show
  1. package/dist/App.d.ts +6 -0
  2. package/dist/App.js +179 -0
  3. package/dist/audio/processor-code.d.ts +1 -1
  4. package/dist/audio/processor-code.js +1 -1
  5. package/dist/audio/processor-kernel.js +23 -9
  6. package/dist/audio/version.d.ts +1 -1
  7. package/dist/audio/version.js +1 -1
  8. package/dist/lib.bundle.js +3 -3
  9. package/dist/lib.bundle.js.map +3 -3
  10. package/dist/processor.js +2 -2
  11. package/dist/processor.js.map +3 -3
  12. package/dist/streaming.d.ts +6 -0
  13. package/dist/streaming.js +32 -0
  14. package/dist/workers/framed-raw-opus.d.ts +13 -0
  15. package/dist/workers/framed-raw-opus.js +68 -0
  16. package/dist/workers/mp3-decode-worker.d.ts +1 -0
  17. package/dist/workers/mp3-decode-worker.js +254 -0
  18. package/dist/workers/mp3-decode-worker.min.js +1 -0
  19. package/dist/workers/ogg-opus-decode-worker.d.ts +1 -0
  20. package/dist/workers/ogg-opus-decode-worker.js +398 -0
  21. package/dist/workers/ogg-opus-decode-worker.min.js +1 -0
  22. package/dist/workers/opus-worker-common.d.ts +45 -0
  23. package/dist/workers/opus-worker-common.js +226 -0
  24. package/dist/workers/raw-opus-framed-decode-worker.d.ts +1 -0
  25. package/dist/workers/raw-opus-framed-decode-worker.js +119 -0
  26. package/dist/workers/raw-opus-framed-decode-worker.min.js +1 -0
  27. package/dist/workers/webm-opus-decode-worker.d.ts +1 -0
  28. package/dist/workers/webm-opus-decode-worker.js +97 -0
  29. package/dist/workers/webm-opus-decode-worker.min.js +1 -0
  30. package/dist/workers/webm-opus-parser.d.ts +49 -0
  31. package/dist/workers/webm-opus-parser.js +369 -0
  32. package/dist/workers/worker-utils.d.ts +11 -0
  33. package/dist/workers/worker-utils.js +55 -0
  34. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/LICENSE +21 -0
  35. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/README.md +197 -0
  36. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/App.d.ts +6 -0
  37. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/App.js +179 -0
  38. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.d.ts +88 -0
  39. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.js +317 -0
  40. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.d.ts +1 -0
  41. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.js +2 -0
  42. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.d.ts +43 -0
  43. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.js +892 -0
  44. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.d.ts +1 -0
  45. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.js +103 -0
  46. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.d.ts +192 -0
  47. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.js +9 -0
  48. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.d.ts +22 -0
  49. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.js +128 -0
  50. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.d.ts +1 -0
  51. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.js +2 -0
  52. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.d.ts +6 -0
  53. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.js +17 -0
  54. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.d.ts +28 -0
  55. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.js +99 -0
  56. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.d.ts +17 -0
  57. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.js +73 -0
  58. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.d.ts +26 -0
  59. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.js +74 -0
  60. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.d.ts +10 -0
  61. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.js +44 -0
  62. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.d.ts +14 -0
  63. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.js +6 -0
  64. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.d.ts +12 -0
  65. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.js +48 -0
  66. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.d.ts +10 -0
  67. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.js +44 -0
  68. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.d.ts +10 -0
  69. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.js +50 -0
  70. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.d.ts +10 -0
  71. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.js +44 -0
  72. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.d.ts +13 -0
  73. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.js +20 -0
  74. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.d.ts +18 -0
  75. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.js +174 -0
  76. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.d.ts +14 -0
  77. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.js +9 -0
  78. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.d.ts +31 -0
  79. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.js +214 -0
  80. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.d.ts +2 -0
  81. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.js +80 -0
  82. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.d.ts +20 -0
  83. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.js +51 -0
  84. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.d.ts +1 -0
  85. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.js +17 -0
  86. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.d.ts +6 -0
  87. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.js +39 -0
  88. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.d.ts +31 -0
  89. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.js +338 -0
  90. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.d.ts +15 -0
  91. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.js +17 -0
  92. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib.bundle.js +6 -0
  93. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib.bundle.js.map +7 -0
  94. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib.d.ts +16 -0
  95. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib.js +16 -0
  96. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js +4 -0
  97. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js.map +12 -0
  98. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.d.ts +63 -0
  99. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.js +71 -0
  100. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/streaming.d.ts +6 -0
  101. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/streaming.js +32 -0
  102. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css +739 -0
  103. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css.d.ts +3 -0
  104. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/framed-raw-opus.d.ts +13 -0
  105. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/framed-raw-opus.js +68 -0
  106. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.d.ts +1 -0
  107. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.js +254 -0
  108. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.min.js +1 -0
  109. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.d.ts +1 -0
  110. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.js +398 -0
  111. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.min.js +1 -0
  112. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/opus-worker-common.d.ts +45 -0
  113. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/opus-worker-common.js +226 -0
  114. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.d.ts +1 -0
  115. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.js +119 -0
  116. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.min.js +1 -0
  117. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.d.ts +1 -0
  118. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.js +97 -0
  119. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.min.js +1 -0
  120. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-parser.d.ts +49 -0
  121. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-parser.js +369 -0
  122. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/worker-utils.d.ts +11 -0
  123. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/workers/worker-utils.js +55 -0
  124. package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/package.json +104 -0
  125. package/examples/index.html +253 -8
  126. package/examples/playground/README.md +9 -0
  127. package/examples/playground/index.html +14 -0
  128. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/LICENSE +21 -0
  129. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/README.md +197 -0
  130. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/App.d.ts +6 -0
  131. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/App.js +179 -0
  132. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.d.ts +88 -0
  133. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.js +317 -0
  134. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.d.ts +1 -0
  135. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.js +2 -0
  136. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.d.ts +43 -0
  137. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.js +892 -0
  138. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.d.ts +1 -0
  139. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.js +103 -0
  140. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.d.ts +192 -0
  141. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.js +9 -0
  142. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.d.ts +22 -0
  143. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.js +128 -0
  144. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.d.ts +1 -0
  145. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.js +2 -0
  146. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.d.ts +6 -0
  147. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.js +17 -0
  148. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.d.ts +28 -0
  149. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.js +99 -0
  150. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.d.ts +17 -0
  151. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.js +73 -0
  152. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.d.ts +26 -0
  153. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.js +74 -0
  154. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.d.ts +10 -0
  155. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.js +44 -0
  156. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.d.ts +14 -0
  157. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.js +6 -0
  158. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.d.ts +12 -0
  159. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.js +48 -0
  160. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.d.ts +10 -0
  161. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.js +44 -0
  162. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.d.ts +10 -0
  163. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.js +50 -0
  164. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.d.ts +10 -0
  165. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.js +44 -0
  166. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.d.ts +13 -0
  167. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.js +20 -0
  168. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.d.ts +18 -0
  169. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.js +174 -0
  170. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.d.ts +14 -0
  171. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.js +9 -0
  172. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.d.ts +31 -0
  173. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.js +214 -0
  174. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.d.ts +2 -0
  175. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.js +80 -0
  176. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.d.ts +20 -0
  177. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.js +51 -0
  178. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.d.ts +1 -0
  179. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.js +17 -0
  180. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.d.ts +6 -0
  181. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.js +39 -0
  182. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.d.ts +31 -0
  183. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.js +338 -0
  184. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.d.ts +15 -0
  185. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.js +17 -0
  186. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/lib.bundle.js +6 -0
  187. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/lib.bundle.js.map +7 -0
  188. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/lib.d.ts +16 -0
  189. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/lib.js +16 -0
  190. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js +4 -0
  191. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js.map +12 -0
  192. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.d.ts +63 -0
  193. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.js +71 -0
  194. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/streaming.d.ts +6 -0
  195. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/streaming.js +32 -0
  196. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css +739 -0
  197. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css.d.ts +3 -0
  198. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/framed-raw-opus.d.ts +13 -0
  199. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/framed-raw-opus.js +68 -0
  200. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.d.ts +1 -0
  201. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.js +254 -0
  202. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.min.js +1 -0
  203. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.d.ts +1 -0
  204. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.js +398 -0
  205. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.min.js +1 -0
  206. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/opus-worker-common.d.ts +45 -0
  207. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/opus-worker-common.js +226 -0
  208. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.d.ts +1 -0
  209. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.js +119 -0
  210. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.min.js +1 -0
  211. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.d.ts +1 -0
  212. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.js +97 -0
  213. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.min.js +1 -0
  214. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-parser.d.ts +49 -0
  215. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-parser.js +369 -0
  216. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/worker-utils.d.ts +11 -0
  217. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/dist/workers/worker-utils.js +55 -0
  218. package/examples/playground/node_modules/@jadujoel/web-audio-clip-node/package.json +104 -0
  219. package/examples/playground/package.json +19 -0
  220. package/examples/playground/src/App.tsx +442 -0
  221. package/examples/playground/src/main.tsx +9 -0
  222. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/LICENSE +21 -0
  223. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/README.md +197 -0
  224. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/App.d.ts +6 -0
  225. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/App.js +179 -0
  226. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.d.ts +88 -0
  227. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.js +317 -0
  228. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.d.ts +1 -0
  229. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.js +2 -0
  230. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.d.ts +43 -0
  231. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.js +892 -0
  232. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.d.ts +1 -0
  233. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.js +103 -0
  234. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.d.ts +192 -0
  235. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.js +9 -0
  236. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.d.ts +22 -0
  237. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.js +128 -0
  238. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.d.ts +1 -0
  239. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.js +2 -0
  240. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.d.ts +6 -0
  241. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.js +17 -0
  242. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.d.ts +28 -0
  243. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.js +99 -0
  244. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.d.ts +17 -0
  245. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.js +73 -0
  246. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.d.ts +26 -0
  247. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.js +74 -0
  248. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.d.ts +10 -0
  249. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.js +44 -0
  250. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.d.ts +14 -0
  251. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.js +6 -0
  252. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.d.ts +12 -0
  253. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.js +48 -0
  254. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.d.ts +10 -0
  255. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.js +44 -0
  256. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.d.ts +10 -0
  257. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.js +50 -0
  258. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.d.ts +10 -0
  259. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.js +44 -0
  260. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.d.ts +13 -0
  261. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.js +20 -0
  262. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.d.ts +18 -0
  263. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.js +174 -0
  264. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.d.ts +14 -0
  265. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.js +9 -0
  266. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.d.ts +31 -0
  267. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.js +214 -0
  268. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.d.ts +2 -0
  269. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.js +80 -0
  270. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.d.ts +20 -0
  271. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.js +51 -0
  272. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.d.ts +1 -0
  273. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.js +17 -0
  274. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.d.ts +6 -0
  275. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.js +39 -0
  276. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.d.ts +31 -0
  277. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.js +338 -0
  278. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.d.ts +15 -0
  279. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.js +17 -0
  280. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/lib.bundle.js +6 -0
  281. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/lib.bundle.js.map +7 -0
  282. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/lib.d.ts +16 -0
  283. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/lib.js +16 -0
  284. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js +4 -0
  285. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js.map +12 -0
  286. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.d.ts +63 -0
  287. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.js +71 -0
  288. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/streaming.d.ts +6 -0
  289. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/streaming.js +32 -0
  290. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css +739 -0
  291. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css.d.ts +3 -0
  292. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/framed-raw-opus.d.ts +13 -0
  293. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/framed-raw-opus.js +68 -0
  294. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.d.ts +1 -0
  295. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.js +254 -0
  296. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.min.js +1 -0
  297. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.d.ts +1 -0
  298. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.js +398 -0
  299. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.min.js +1 -0
  300. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/opus-worker-common.d.ts +45 -0
  301. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/opus-worker-common.js +226 -0
  302. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.d.ts +1 -0
  303. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.js +119 -0
  304. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.min.js +1 -0
  305. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.d.ts +1 -0
  306. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.js +97 -0
  307. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.min.js +1 -0
  308. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-parser.d.ts +49 -0
  309. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-parser.js +369 -0
  310. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/worker-utils.d.ts +11 -0
  311. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/dist/workers/worker-utils.js +55 -0
  312. package/examples/react/node_modules/@jadujoel/web-audio-clip-node/package.json +104 -0
  313. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/LICENSE +21 -0
  314. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/README.md +197 -0
  315. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/App.d.ts +6 -0
  316. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/App.js +179 -0
  317. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.d.ts +88 -0
  318. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.js +317 -0
  319. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.d.ts +1 -0
  320. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.js +2 -0
  321. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.d.ts +43 -0
  322. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.js +892 -0
  323. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.d.ts +1 -0
  324. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.js +103 -0
  325. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.d.ts +192 -0
  326. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.js +9 -0
  327. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.d.ts +22 -0
  328. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.js +128 -0
  329. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.d.ts +1 -0
  330. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.js +2 -0
  331. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.d.ts +6 -0
  332. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.js +17 -0
  333. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.d.ts +28 -0
  334. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.js +99 -0
  335. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.d.ts +17 -0
  336. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.js +73 -0
  337. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.d.ts +26 -0
  338. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.js +74 -0
  339. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.d.ts +10 -0
  340. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.js +44 -0
  341. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.d.ts +14 -0
  342. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.js +6 -0
  343. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.d.ts +12 -0
  344. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.js +48 -0
  345. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.d.ts +10 -0
  346. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.js +44 -0
  347. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.d.ts +10 -0
  348. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.js +50 -0
  349. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.d.ts +10 -0
  350. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.js +44 -0
  351. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.d.ts +13 -0
  352. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.js +20 -0
  353. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.d.ts +18 -0
  354. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.js +174 -0
  355. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.d.ts +14 -0
  356. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.js +9 -0
  357. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.d.ts +31 -0
  358. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.js +214 -0
  359. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.d.ts +2 -0
  360. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.js +80 -0
  361. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.d.ts +20 -0
  362. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.js +51 -0
  363. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.d.ts +1 -0
  364. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.js +17 -0
  365. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.d.ts +6 -0
  366. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.js +39 -0
  367. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.d.ts +31 -0
  368. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.js +338 -0
  369. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.d.ts +15 -0
  370. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.js +17 -0
  371. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/lib.bundle.js +6 -0
  372. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/lib.bundle.js.map +7 -0
  373. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/lib.d.ts +16 -0
  374. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/lib.js +16 -0
  375. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js +4 -0
  376. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js.map +12 -0
  377. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.d.ts +63 -0
  378. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.js +71 -0
  379. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/streaming.d.ts +6 -0
  380. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/streaming.js +32 -0
  381. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css +739 -0
  382. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css.d.ts +3 -0
  383. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/framed-raw-opus.d.ts +13 -0
  384. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/framed-raw-opus.js +68 -0
  385. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.d.ts +1 -0
  386. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.js +254 -0
  387. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/mp3-decode-worker.min.js +1 -0
  388. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.d.ts +1 -0
  389. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.js +398 -0
  390. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/ogg-opus-decode-worker.min.js +1 -0
  391. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/opus-worker-common.d.ts +45 -0
  392. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/opus-worker-common.js +226 -0
  393. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.d.ts +1 -0
  394. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.js +119 -0
  395. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/raw-opus-framed-decode-worker.min.js +1 -0
  396. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.d.ts +1 -0
  397. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.js +97 -0
  398. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-decode-worker.min.js +1 -0
  399. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-parser.d.ts +49 -0
  400. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/webm-opus-parser.js +369 -0
  401. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/worker-utils.d.ts +11 -0
  402. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/dist/workers/worker-utils.js +55 -0
  403. package/examples/self-hosted/node_modules/@jadujoel/web-audio-clip-node/package.json +104 -0
  404. package/examples/self-hosted/public/processor.js +2 -2
  405. package/examples/streaming/build-worker.ts +45 -17
  406. package/examples/streaming/framed-raw-opus.ts +95 -0
  407. package/examples/streaming/index.html +4 -199
  408. package/examples/streaming/{decode-worker.ts → mp3-decode-worker.ts} +62 -44
  409. package/examples/streaming/ogg-opus-decode-worker.ts +479 -0
  410. package/examples/streaming/opus-worker-common.ts +278 -0
  411. package/examples/streaming/package.json +9 -1
  412. package/examples/streaming/raw-opus-framed-decode-worker.ts +148 -0
  413. package/examples/streaming/src/App.tsx +726 -0
  414. package/examples/streaming/src/clip-node-lib.ts +33 -0
  415. package/examples/streaming/src/framedRawOpus.test.ts +74 -0
  416. package/examples/streaming/src/main.tsx +6 -0
  417. package/examples/streaming/src/react-dom-runtime.d.ts +1 -0
  418. package/examples/streaming/src/react-dom-runtime.js +1 -0
  419. package/examples/streaming/src/react-runtime.d.ts +2 -0
  420. package/examples/streaming/src/react-runtime.js +7 -0
  421. package/examples/streaming/src/streamFormat.test.ts +13 -0
  422. package/examples/streaming/src/streamFormat.ts +14 -0
  423. package/examples/streaming/src/streamTimeline.test.ts +74 -0
  424. package/examples/streaming/src/streamTimeline.ts +76 -0
  425. package/examples/streaming/src/useStreamingClipNode.ts +540 -0
  426. package/examples/streaming/src/webmOpusParser.test.ts +153 -0
  427. package/examples/streaming/tsconfig.json +19 -0
  428. package/examples/streaming/webm-opus-decode-worker.ts +123 -0
  429. package/examples/streaming/webm-opus-parser.ts +461 -0
  430. package/examples/streaming/worker-utils.ts +45 -0
  431. package/package.json +13 -2
  432. package/examples/streaming/main.ts +0 -276
@@ -0,0 +1,31 @@
1
+ import type { ClipNodeState } from "../audio/types";
2
+ import type { ControlKey } from "../controls/controlDefs";
3
+ interface UseClipNodeParams {
4
+ values: Record<ControlKey, number>;
5
+ enabled: Record<ControlKey, boolean>;
6
+ loop: boolean;
7
+ setValue: (key: ControlKey, val: number) => void;
8
+ }
9
+ export declare function useClipNode({ values, enabled, loop, setValue, }: UseClipNodeParams): {
10
+ nodeState: ClipNodeState;
11
+ statusMessage: string | null;
12
+ soundName: string | null;
13
+ audioDuration: number | null;
14
+ infoCurrentTime: string;
15
+ infoCurrentFrame: string;
16
+ infoTimesLooped: string;
17
+ infoLatency: string;
18
+ infoTimeTaken: string;
19
+ start: () => Promise<void>;
20
+ stop: () => void;
21
+ pause: () => void;
22
+ resume: () => void;
23
+ dispose: () => void;
24
+ logState: () => void;
25
+ loadSound: () => void;
26
+ applyValue: (key: ControlKey, val: number) => void;
27
+ applyValues: (valuesToApply: Partial<Record<ControlKey, number>>) => void;
28
+ applyToggle: (key: ControlKey, on: boolean) => void;
29
+ setLoopOnNode: (checked: boolean) => void;
30
+ };
31
+ export {};
@@ -0,0 +1,338 @@
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
+ import { ClipNode } from "../audio/ClipNode.js";
3
+ import { float32ArrayFromAudioBuffer, linFromDb } from "../audio/utils.js";
4
+ import { getProcessorBlobUrl } from "../audio/workletUrl.js";
5
+ import { SAMPLE_RATE } from "../controls/controlDefs.js";
6
+ import { loadFromCache } from "../data/cache.js";
7
+ import { loadUploadedFile, saveUploadedFile } from "../data/fileStore.js";
8
+ function applyValue(node, key, value) {
9
+ switch (key) {
10
+ case "playhead":
11
+ node.playhead = value;
12
+ break;
13
+ case "offset":
14
+ node.offset = value;
15
+ break;
16
+ case "duration":
17
+ node.duration = value;
18
+ break;
19
+ case "loopStart":
20
+ node.loopStart = value;
21
+ break;
22
+ case "loopEnd":
23
+ node.loopEnd = value;
24
+ break;
25
+ case "loopCrossfade":
26
+ node.loopCrossfade = value;
27
+ break;
28
+ case "fadeIn":
29
+ node.fadeIn = value;
30
+ break;
31
+ case "fadeOut":
32
+ node.fadeOut = value;
33
+ break;
34
+ case "playbackRate":
35
+ node.playbackRate.value = value;
36
+ break;
37
+ case "detune":
38
+ node.detune.value = value;
39
+ break;
40
+ case "gain":
41
+ node.gain.value = linFromDb(value);
42
+ break;
43
+ case "pan":
44
+ node.pan.value = value;
45
+ break;
46
+ case "lowpass":
47
+ node.lowpass.value = value;
48
+ break;
49
+ case "highpass":
50
+ node.highpass.value = value;
51
+ break;
52
+ case "startDelay":
53
+ case "stopDelay":
54
+ break;
55
+ }
56
+ }
57
+ function applyToggle(node, key, on) {
58
+ switch (key) {
59
+ case "fadeIn":
60
+ node.toggleFadeIn(on);
61
+ break;
62
+ case "fadeOut":
63
+ node.toggleFadeOut(on);
64
+ break;
65
+ case "loopCrossfade":
66
+ node.toggleLoopCrossfade(on);
67
+ break;
68
+ case "loopStart":
69
+ node.toggleLoopStart(on);
70
+ break;
71
+ case "loopEnd":
72
+ node.toggleLoopEnd(on);
73
+ break;
74
+ case "playbackRate":
75
+ node.togglePlaybackRate(on);
76
+ break;
77
+ case "detune":
78
+ node.toggleDetune(on);
79
+ break;
80
+ case "gain":
81
+ node.toggleGain(on);
82
+ break;
83
+ case "pan":
84
+ node.togglePan(on);
85
+ break;
86
+ case "lowpass":
87
+ node.toggleLowpass(on);
88
+ break;
89
+ case "highpass":
90
+ node.toggleHighpass(on);
91
+ break;
92
+ case "offset":
93
+ node.offset = on ? node.offset : 0;
94
+ break;
95
+ case "duration":
96
+ node.duration = on ? node.duration : -1;
97
+ break;
98
+ case "startDelay":
99
+ case "stopDelay":
100
+ // These are applied at start/stop time; toggle state is handled in the hook
101
+ break;
102
+ }
103
+ }
104
+ export function useClipNode({ values, enabled, loop, setValue, }) {
105
+ const [nodeState, setNodeState] = useState("initial");
106
+ const [statusMessage, setStatusMessage] = useState(null);
107
+ const [soundName, setSoundName] = useState(null);
108
+ const [audioDuration, setAudioDuration] = useState(null);
109
+ const [infoCurrentTime, setInfoCurrentTime] = useState("0");
110
+ const [infoCurrentFrame, setInfoCurrentFrame] = useState("0");
111
+ const [infoTimesLooped, setInfoTimesLooped] = useState("0");
112
+ const [infoLatency, setInfoLatency] = useState("unknown");
113
+ const [infoTimeTaken, setInfoTimeTaken] = useState("unknown");
114
+ const ctxRef = useRef(null);
115
+ const nodeRef = useRef(null);
116
+ const bufferRef = useRef(null);
117
+ const frameRef = useRef(null);
118
+ // RAF loop for display info
119
+ useEffect(() => {
120
+ let id;
121
+ const tick = () => {
122
+ const f = frameRef.current;
123
+ if (f) {
124
+ const [ct, cf, ph, tt] = f;
125
+ setInfoCurrentTime(ct.toPrecision(4));
126
+ setInfoCurrentFrame(cf.toString());
127
+ setInfoTimeTaken(tt.toFixed(4));
128
+ setValue("playhead", ph);
129
+ }
130
+ id = requestAnimationFrame(tick);
131
+ };
132
+ id = requestAnimationFrame(tick);
133
+ return () => cancelAnimationFrame(id);
134
+ }, [setValue]);
135
+ const ensureContext = useCallback(async () => {
136
+ if (ctxRef.current)
137
+ return ctxRef.current;
138
+ const ctx = new AudioContext({ sampleRate: SAMPLE_RATE });
139
+ await ctx.audioWorklet.addModule(getProcessorBlobUrl());
140
+ ctxRef.current = ctx;
141
+ return ctx;
142
+ }, []);
143
+ const decodeAudio = useCallback(async (source) => {
144
+ const ctx = await ensureContext();
145
+ let arrayBuffer;
146
+ if (typeof source === "string") {
147
+ arrayBuffer = await loadFromCache(source);
148
+ }
149
+ else {
150
+ arrayBuffer = source;
151
+ }
152
+ if (!arrayBuffer)
153
+ throw new Error("Could not load audio data");
154
+ const decoded = await ctx.decodeAudioData(arrayBuffer);
155
+ bufferRef.current = decoded;
156
+ setAudioDuration(decoded.duration);
157
+ return decoded;
158
+ }, [ensureContext]);
159
+ const createNode = useCallback((ctx, buffer) => {
160
+ const node = new ClipNode(ctx, {
161
+ processorOptions: {
162
+ buffer: float32ArrayFromAudioBuffer(buffer),
163
+ loopStart: values.loopStart,
164
+ loopEnd: values.loopEnd,
165
+ duration: values.duration,
166
+ offset: values.offset,
167
+ fadeInDuration: values.fadeIn,
168
+ fadeOutDuration: values.fadeOut,
169
+ loop,
170
+ enableDetune: enabled.detune,
171
+ enableFadeIn: enabled.fadeIn,
172
+ enableFadeOut: enabled.fadeOut,
173
+ enableGain: enabled.gain,
174
+ enableHighpass: enabled.highpass,
175
+ enableLowpass: enabled.lowpass,
176
+ enablePan: enabled.pan,
177
+ enablePlaybackRate: enabled.playbackRate,
178
+ enableLoopStart: enabled.loopStart,
179
+ enableLoopEnd: enabled.loopEnd,
180
+ enableLoopCrossfade: enabled.loopCrossfade,
181
+ },
182
+ });
183
+ node.connect(ctx.destination);
184
+ node.onstatechange = (s) => setNodeState(s);
185
+ node.onlooped = () => setInfoTimesLooped(node.timesLooped.toString());
186
+ node.onframe = (data) => {
187
+ frameRef.current = data;
188
+ };
189
+ node.addEventListener("processorerror", (e) => console.error("processor error", e));
190
+ node.loop = loop;
191
+ node.playbackRate.value = values.playbackRate;
192
+ node.detune.value = values.detune;
193
+ node.lowpass.value = values.lowpass;
194
+ node.highpass.value = values.highpass;
195
+ node.gain.value = linFromDb(values.gain);
196
+ node.pan.value = values.pan;
197
+ setInfoLatency(ctx.outputLatency != null
198
+ ? `base: ${Math.round(ctx.baseLatency * ctx.sampleRate)} | output: ${Math.round(ctx.outputLatency * ctx.sampleRate)}`
199
+ : "unknown");
200
+ return node;
201
+ }, [loop, values, enabled]);
202
+ const start = useCallback(async () => {
203
+ const ctx = await ensureContext();
204
+ const buffer = bufferRef.current;
205
+ if (!buffer) {
206
+ setStatusMessage("Load a sound file first.");
207
+ return;
208
+ }
209
+ setStatusMessage(null);
210
+ if (!nodeRef.current) {
211
+ nodeRef.current = createNode(ctx, buffer);
212
+ }
213
+ ctx.resume();
214
+ const node = nodeRef.current;
215
+ const delay = enabled.startDelay ? values.startDelay : 0;
216
+ const offset = enabled.offset ? values.offset : 0;
217
+ const duration = enabled.duration ? values.duration : -1;
218
+ node.start(ctx.currentTime + delay, offset, duration);
219
+ }, [
220
+ ensureContext,
221
+ createNode,
222
+ values.startDelay,
223
+ values.offset,
224
+ values.duration,
225
+ enabled.startDelay,
226
+ enabled.offset,
227
+ enabled.duration,
228
+ ]);
229
+ const stop = useCallback(() => {
230
+ const ctx = ctxRef.current;
231
+ const node = nodeRef.current;
232
+ if (!ctx || !node)
233
+ return;
234
+ const delay = enabled.stopDelay ? values.stopDelay : 0;
235
+ node.stop(ctx.currentTime + delay);
236
+ }, [values.stopDelay, enabled.stopDelay]);
237
+ const pause = useCallback(() => {
238
+ const ctx = ctxRef.current;
239
+ const node = nodeRef.current;
240
+ if (!ctx || !node)
241
+ return;
242
+ const delay = enabled.stopDelay ? values.stopDelay : 0;
243
+ node.pause(ctx.currentTime + delay);
244
+ }, [values.stopDelay, enabled.stopDelay]);
245
+ const resume = useCallback(() => {
246
+ const ctx = ctxRef.current;
247
+ const node = nodeRef.current;
248
+ if (!ctx || !node)
249
+ return;
250
+ const delay = enabled.startDelay ? values.startDelay : 0;
251
+ node.resume(ctx.currentTime + delay);
252
+ }, [values.startDelay, enabled.startDelay]);
253
+ const dispose = useCallback(() => {
254
+ nodeRef.current?.dispose();
255
+ nodeRef.current = null;
256
+ setNodeState("disposed");
257
+ }, []);
258
+ const logState = useCallback(() => {
259
+ nodeRef.current?.logState();
260
+ }, []);
261
+ const loadFromArrayBuffer = useCallback(async (ab, name) => {
262
+ const buf = await decodeAudio(ab);
263
+ bufferRef.current = buf;
264
+ setSoundName(name);
265
+ setValue("playhead", 0);
266
+ }, [decodeAudio, setValue]);
267
+ // Auto-load last uploaded file from IndexedDB on mount
268
+ useEffect(() => {
269
+ loadUploadedFile()
270
+ .then((stored) => {
271
+ if (stored) {
272
+ loadFromArrayBuffer(stored.arrayBuffer, stored.name).catch((err) => console.error("[fileStore] Failed to restore file:", err));
273
+ }
274
+ })
275
+ .catch((err) => console.error("[fileStore] Failed to load from IndexedDB:", err));
276
+ }, [loadFromArrayBuffer]);
277
+ const loadSound = useCallback(() => {
278
+ const input = document.createElement("input");
279
+ input.type = "file";
280
+ input.accept = "audio/*";
281
+ input.onchange = async () => {
282
+ const file = input.files?.[0];
283
+ if (!file)
284
+ return;
285
+ const ab = await file.arrayBuffer();
286
+ const copy = ab.slice(0);
287
+ await loadFromArrayBuffer(ab, file.name);
288
+ saveUploadedFile(file.name, copy).catch((err) => console.error("[fileStore] Failed to save to IndexedDB:", err));
289
+ };
290
+ input.click();
291
+ }, [loadFromArrayBuffer]);
292
+ const applyValueToNode = useCallback((key, val) => {
293
+ setValue(key, val);
294
+ const node = nodeRef.current;
295
+ if (node)
296
+ applyValue(node, key, val);
297
+ }, [setValue]);
298
+ const applyToggleToNode = useCallback((key, on) => {
299
+ const node = nodeRef.current;
300
+ if (node)
301
+ applyToggle(node, key, on);
302
+ }, []);
303
+ const applyValuesToNode = useCallback((valuesToApply) => {
304
+ const node = nodeRef.current;
305
+ if (!node)
306
+ return;
307
+ for (const [key, value] of Object.entries(valuesToApply)) {
308
+ applyValue(node, key, value);
309
+ }
310
+ }, []);
311
+ const setLoopOnNode = useCallback((checked) => {
312
+ const node = nodeRef.current;
313
+ if (node)
314
+ node.loop = checked;
315
+ }, []);
316
+ return {
317
+ nodeState,
318
+ statusMessage,
319
+ soundName,
320
+ audioDuration,
321
+ infoCurrentTime,
322
+ infoCurrentFrame,
323
+ infoTimesLooped,
324
+ infoLatency,
325
+ infoTimeTaken,
326
+ start,
327
+ stop,
328
+ pause,
329
+ resume,
330
+ dispose,
331
+ logState,
332
+ loadSound,
333
+ applyValue: applyValueToNode,
334
+ applyValues: applyValuesToNode,
335
+ applyToggle: applyToggleToNode,
336
+ setLoopOnNode,
337
+ };
338
+ }
@@ -0,0 +1,15 @@
1
+ export { AudioControl } from "./components/AudioControl";
2
+ export { ContextMenu } from "./components/ContextMenu";
3
+ export { ControlSection } from "./components/ControlSection";
4
+ export { DetuneControl } from "./components/DetuneControl";
5
+ export { DisplayPanel } from "./components/DisplayPanel";
6
+ export { FilterControl } from "./components/FilterControl";
7
+ export { GainControl } from "./components/GainControl";
8
+ export { PanControl } from "./components/PanControl";
9
+ export { PlaybackRateControl } from "./components/PlaybackRateControl";
10
+ export { PlayheadSlider } from "./components/PlayheadSlider";
11
+ export { SnappableSlider } from "./components/SnappableSlider";
12
+ export { TransportButtons } from "./components/TransportButtons";
13
+ export { useClipNode } from "./hooks/useClipNode";
14
+ export type { ClipControlsState } from "./store/clipStore";
15
+ export { useClipControls } from "./store/clipStore";
@@ -0,0 +1,17 @@
1
+ // Store
2
+ // Components
3
+ export { AudioControl } from "./components/AudioControl.js";
4
+ export { ContextMenu } from "./components/ContextMenu.js";
5
+ export { ControlSection } from "./components/ControlSection.js";
6
+ export { DetuneControl } from "./components/DetuneControl.js";
7
+ export { DisplayPanel } from "./components/DisplayPanel.js";
8
+ export { FilterControl } from "./components/FilterControl.js";
9
+ export { GainControl } from "./components/GainControl.js";
10
+ export { PanControl } from "./components/PanControl.js";
11
+ export { PlaybackRateControl } from "./components/PlaybackRateControl.js";
12
+ export { PlayheadSlider } from "./components/PlayheadSlider.js";
13
+ export { SnappableSlider } from "./components/SnappableSlider.js";
14
+ export { TransportButtons } from "./components/TransportButtons.js";
15
+ // Hooks
16
+ export { useClipNode } from "./hooks/useClipNode.js";
17
+ export { useClipControls } from "./store/clipStore.js";
@@ -0,0 +1,6 @@
1
+ function Ne(e){return Math.max(20*Math.log10(e),-1e3)}function $e(e){return 10**(e/20)}var Je=["beat","bar","8th","16th"];function z(e,t,a){return Math.min(Math.max(e,t),a)}function Se(e){return Je.includes(e)}function K(e,t){if(!Number.isFinite(t)||t<=0)return null;let a=60/t;switch(e){case"beat":return a;case"bar":return a*4;case"8th":return a/2;case"16th":return a/4;default:return null}}function Qe(e,t,a,o,r,n){if(!Se(t)||e<0)return z(e,r,n);let s=K(t,a),l=K(t,o);if(s==null||l==null)return z(e,r,n);let i=Math.round(e/s);return z(i*l,r,n)}function Ge(e,t,a){let o=K(t,a);return o!=null?Math.round(e/o)*o:t==="int"?Math.round(e):e}var Ke={hertz:{snaps:[32,64,128,256,512,1024,2048,4096,8192,16384],ticks:[64,128,256,512,1024,2048,4096,8192,16384],min:32,max:16384,logarithmic:!0},decibel:{ticks:[-48,-24,-12,-6,-3,0],min:-60,max:0,skew:1},cents:{snaps:Array.from({length:49},(e,t)=>(t-24)*100),ticks:[-2400,-1200,0,1200,2400],min:-2400,max:2400,skew:1,step:1},playbackRate:{snaps:[-2,-1,-.5,0,.5,1,1.5,2],ticks:[-2,-1,0,1,2],min:-2,max:2,skew:1},gain:{snaps:[-60,-48,-36,-24,-18,-12,-9,-6,-3,-1,0],ticks:[-48,-24,-12,-6,-3,0],min:-100,max:0,skew:6},pan:{snaps:[-1,-.75,-.5,-.25,0,.25,.5,.75,1],ticks:[-1,-.5,0,.5,1],min:-1,max:1,skew:1}};function Xe(e){return e.numberOfChannels===1?[e.getChannelData(0)]:[e.getChannelData(0),e.getChannelData(1)]}function ne(e,t){if(!t||t.length===0)return;let a=e.createBuffer(t.length,t[0].length,e.sampleRate);for(let o=0;o<t.length;o++)a.copyToChannel(new Float32Array(t[o]),o);return a}function Ye(e,t,a,o){let r=K(e,t)??(e==="int"?1:null);if(r==null)return[];if(r<=0)return[];let n=[],s=Math.ceil(a/r)*r;for(let l=s;l<=o;l+=r)n.push(Math.round(l*1e10)/1e10);return n}var re=class extends AudioWorkletNode{onscheduled;onstarted;onpaused;onresumed;onended;onlooped;onstopped;onframe;ondisposed;onstatechange;_buffer;_loopStart=0;_loopEnd=0;_loop=!1;_offset=0;_playhead=0;_fadeIn=0;_fadeOut=0;_loopCrossfade=0;_duration=-1;_previousState="initial";_bufferWriteCursor=0;_hasStreamingPort=!1;timesLooped=0;state="initial";cpu=0;constructor(t,a={}){super(t,"ClipProcessor",{numberOfInputs:a.numberOfInputs??0,outputChannelCount:a.outputChannelCount??[2],processorOptions:a.processorOptions,channelCount:a.channelCount,channelCountMode:a.channelCountMode,channelInterpretation:a.channelInterpretation,numberOfOutputs:a.numberOfOutputs,parameterData:a.parameterData}),this._buffer=ne(this.context,a.processorOptions?.buffer),this.port.onmessage=this.handleMessage}handleMessage=t=>{let{type:a,data:o}=t.data;switch(a){case"frame":{let[r,n,s,l]=o;this._playhead=s,this.cpu=l,this.onframe?.(o);break}case"scheduled":this.setState("scheduled"),this.onscheduled?.();break;case"started":this.setState("started"),this.onstarted?.();break;case"stopped":this.setState("stopped"),this.onstopped?.();break;case"paused":this.setState("paused"),this.onpaused?.();break;case"resume":this.setState("resumed"),this.onresumed?.();break;case"ended":this.setState("ended"),this.onended?.();break;case"looped":this.timesLooped++,this.onlooped?.();break;case"disposed":this.setState("disposed");break}};setState(t){this._previousState=this.state,this.state=t,this.state!==this._previousState&&this.onstatechange?.(this.state)}toggleGain(t=!0){this.port.postMessage({type:"toggleGain",data:t})}togglePlaybackRate(t=!0){this.port.postMessage({type:"togglePlaybackRate",data:t})}toggleDetune(t=!0){this.port.postMessage({type:"toggleDetune",data:t})}togglePan(t=!0){this.port.postMessage({type:"togglePan",data:t})}toggleHighpass(t=!0){this.port.postMessage({type:"toggleHighpass",data:t})}toggleLowpass(t=!0){this.port.postMessage({type:"toggleLowpass",data:t})}toggleFadeIn(t=!0){this.port.postMessage({type:"toggleFadeIn",data:t})}toggleFadeOut(t=!0){this.port.postMessage({type:"toggleFadeOut",data:t})}toggleLoopCrossfade(t=!0){this.port.postMessage({type:"toggleLoopCrossfade",data:t})}toggleLoopStart(t=!0){this.port.postMessage({type:"toggleLoopStart",data:t})}toggleLoopEnd(t=!0){this.port.postMessage({type:"toggleLoopEnd",data:t})}logState(){this.port.postMessage({type:"logState"})}get buffer(){return this._buffer}set buffer(t){this._buffer=t,this._bufferWriteCursor=t.length,this._loopStart>=t.duration&&(this._loopStart=0),(this._loopEnd<=this._loopStart||this._loopEnd>t.duration)&&(this._loopEnd=t.duration);let a=t.numberOfChannels===1?[t.getChannelData(0)]:[t.getChannelData(0),t.getChannelData(1)];this.port.postMessage({type:"buffer",data:a}),this.port.postMessage({type:"loopStart",data:this._loopStart}),this.port.postMessage({type:"loopEnd",data:this._loopEnd})}transferPort(t){this._hasStreamingPort=!0,this.port.postMessage({type:"transferPort",data:t},[t])}initializeBuffer(t,a,o={}){this._buffer=this.context.createBuffer(a,t,this.context.sampleRate),this._bufferWriteCursor=0;let r=t/this.context.sampleRate;this._loopStart>=r&&(this._loopStart=0),(this._loopEnd<=this._loopStart||this._loopEnd>r)&&(this._loopEnd=r),this.port.postMessage({type:"bufferInit",data:{channels:a,totalLength:t,streaming:o.streaming??!0}}),this.port.postMessage({type:"loopStart",data:this._loopStart}),this.port.postMessage({type:"loopEnd",data:this._loopEnd})}replaceBufferRange(t,a,o={}){this.port.postMessage({type:"bufferRange",data:{startSample:t,channelData:a,totalLength:o.totalLength,streamEnded:o.streamEnded}}),this._bufferWriteCursor=Math.max(this._bufferWriteCursor,t+(a[0]?.length??0))}appendBufferRange(t,a={}){this.replaceBufferRange(this._bufferWriteCursor,t,a)}finalizeBuffer(t){this.port.postMessage({type:"bufferEnd",data:{totalLength:t}})}start(t,a,o){if(!this._buffer&&!this._hasStreamingPort){console.error("Buffer not set.");return}this.port.postMessage({type:"start",data:{when:t,offset:a,duration:o}})}stop(t=this.context.currentTime,a=0){this.port.postMessage({type:"stop",data:t+a+this._fadeOut+.2})}pause(t=this.context.currentTime){this.port.postMessage({type:"pause",data:t})}resume(t=this.context.currentTime){this.port.postMessage({type:"resume",data:t})}get loop(){return this._loop}set loop(t){this._loop!==t&&(this._loop=t,this.port.postMessage({type:"loop",data:t}))}get loopStart(){return this._loopStart}set loopStart(t){t!==this._loopStart&&(this._loopStart=t,this.port.postMessage({type:"loopStart",data:t}))}get loopEnd(){return this._loopEnd}set loopEnd(t){t!==this._loopEnd&&(this._loopEnd=t,this.port.postMessage({type:"loopEnd",data:t}))}get duration(){return this._duration??this._buffer?.duration??-1}set duration(t){this._duration=t}get offset(){return this._offset}set offset(t){this._offset=t}get playhead(){return this._playhead}set playhead(t){this.port.postMessage({type:"playhead",data:t})}get playbackRate(){return this.parameters.get("playbackRate")}get detune(){return this.parameters.get("detune")}get highpass(){return this.parameters.get("highpass")}get lowpass(){return this.parameters.get("lowpass")}get gain(){return this.parameters.get("gain")}get pan(){return this.parameters.get("pan")}get fadeIn(){return this._fadeIn}set fadeIn(t){this._fadeIn=t,this.port.postMessage({type:"fadeIn",data:t})}get fadeOut(){return this._fadeOut}set fadeOut(t){this._fadeOut=t,this.port.postMessage({type:"fadeOut",data:t})}get loopCrossfade(){return this._loopCrossfade}set loopCrossfade(t){this._loopCrossfade=t,this.port.postMessage({type:"loopCrossfade",data:t})}dispose(){this.port.postMessage({type:"dispose"}),this.port.close(),this.ondisposed?.(),this._buffer=void 0,this.onended=void 0,this.onframe=void 0,this.onlooped=void 0,this.onpaused=void 0,this.onresumed=void 0,this.onstarted=void 0,this.onstopped=void 0,this.onscheduled=void 0,this.onstatechange=void 0,this.ondisposed=void 0,this.state="disposed"}};var se=`var z={Initial:0,Started:1,Stopped:2,Paused:3,Scheduled:4,Ended:5,Disposed:6};var y=128;function o(V=[]){let F=V[0]?.length??0,A=F>0;return{totalLength:A?F:null,committedLength:A?F:0,streamEnded:A,streaming:!1,writtenSpans:A?[{startSample:0,endSample:F}]:[],pendingWrites:[],lowWaterThreshold:y*4,lowWaterNotified:!1,lastUnderrunSample:null}}function z0(V){return V[0]?.length??0}function a(V){return V.streamBuffer.totalLength??z0(V.buffer)}function P0(V,F){return Array.from({length:V},()=>new Float32Array(F))}function w0(V,F){let A=[...V,F].sort((J,k)=>J.startSample-k.startSample),T=[];for(let J of A){let k=T[T.length-1];if(!k||J.startSample>k.endSample){T.push({...J});continue}k.endSample=Math.max(k.endSample,J.endSample)}return T}function R0(V){let F=0;for(let A of V){if(A.startSample>F)break;F=Math.max(F,A.endSample)}return F}function B0(V,F){if(V.committedLength-Math.floor(F)>=V.lowWaterThreshold)V.lowWaterNotified=!1}function y0(V,F,A){let T=z0(V.buffer),J=V.buffer.length;if(T>=A&&J>=F)return;let k=Math.max(T,A),Q=Math.max(J,F),U=P0(Q,k);for(let X=0;X<J;X++)U[X].set(V.buffer[X].subarray(0,T));if(V.buffer=U,V.streamBuffer.totalLength==null||V.streamBuffer.totalLength<k)V.streamBuffer.totalLength=k}function _0(V,F){let A=Math.max(Math.floor(F.startSample),0),T=F.channelData[0]?.length??0,J=F.totalLength??null,k=Math.max(A+T,J??0);y0(V,Math.max(F.channelData.length,V.buffer.length,1),k);for(let Q=0;Q<F.channelData.length;Q++)V.buffer[Q].set(F.channelData[Q],A);if(J!=null)V.streamBuffer.totalLength=J;if(T>0)V.streamBuffer.writtenSpans=w0(V.streamBuffer.writtenSpans,{startSample:A,endSample:A+T}),V.streamBuffer.committedLength=R0(V.streamBuffer.writtenSpans);if(F.streamEnded===!0)V.streamBuffer.streamEnded=!0;B0(V.streamBuffer,V.playhead)}function b0(V){if(V.streamBuffer.pendingWrites.length===0)return;for(let F of V.streamBuffer.pendingWrites)_0(V,F);V.streamBuffer.pendingWrites=[]}function L0(V,F){V.buffer=F,V.streamBuffer=o(F)}function K0(V={},F){let{buffer:A=[],streamBuffer:T=o(A),duration:J=-1,loop:k=!1,loopStart:Q=0,loopEnd:U=(A[0]?.length??0)/F,loopCrossfade:X=0,playhead:$=0,offset:G=0,startWhen:Y=0,stopWhen:P=0,pauseWhen:K=0,resumeWhen:O=0,playedSamples:v=0,state:W=z.Initial,timesLooped:w=0,fadeInDuration:j=0,fadeOutDuration:Z=0,enableFadeIn:C=j>0,enableFadeOut:D=Z>0,enableLoopStart:R=!0,enableLoopEnd:l=!0,enableLoopCrossfade:b=X>0,enableHighpass:h=!0,enableLowpass:d=!0,enableGain:r=!0,enablePan:p=!0,enableDetune:e=!0,enablePlaybackRate:V0=!0}=V;return{buffer:A,streamBuffer:T,loop:k,loopStart:Q,loopEnd:U,loopCrossfade:X,duration:J,playhead:$,offset:G,startWhen:Y,stopWhen:P,pauseWhen:K,resumeWhen:O,playedSamples:v,state:W,timesLooped:w,fadeInDuration:j,fadeOutDuration:Z,enableFadeIn:C,enableFadeOut:D,enableLoopStart:R,enableLoopEnd:l,enableHighpass:h,enableLowpass:d,enableGain:r,enablePan:p,enableDetune:e,enablePlaybackRate:V0,enableLoopCrossfade:b}}function x0(V,F){return a(V)/F}function i(V,F){let A=x0(V,F);if(A<=0){V.loopStart=0,V.loopEnd=0;return}if(!Number.isFinite(V.loopStart)||V.loopStart<0)V.loopStart=0;if(V.loopStart>=A)V.loopStart=0;if(!Number.isFinite(V.loopEnd)||V.loopEnd<=V.loopStart||V.loopEnd>A)V.loopEnd=A}function A0(V,F,A){if(F===void 0)return V.offset=0,0;if(F<0)return A0(V,a(V)+F,A);if(F>(a(V)||1)-1)return A0(V,a(V)%F,A);let T=Math.floor(F*A);return V.offset=T,T}function m0(V){let{playhead:F,bufferLength:A,loop:T,loopStartSamples:J,loopEndSamples:k}=V,Q=128;if(!T&&F+128>A)Q=Math.max(A-F,0);let U=Array(Q);if(!T){for(let Y=0,P=F;Y<Q;Y++,P++)U[Y]=P;let G=F+Q;return{playhead:G,indexes:U,looped:!1,ended:G>=A}}let X=F,$=!1;for(let G=0;G<Q;G++,X++){if(X>=k)X=J+(X-k),$=!0;U[G]=X}return{indexes:U,looped:$,ended:!1,playhead:X}}function S0(V){let{playhead:F,bufferLength:A,loop:T,loopStartSamples:J,loopEndSamples:k,playbackRates:Q}=V,U=128;if(!T&&F+128>A)U=Math.max(A-F,0);let X=Array(U),$=F,G=!1;if(T){for(let Y=0;Y<U;Y++){X[Y]=Math.min(Math.max(Math.floor($),0),A-1);let P=Q[Y]??Q[0]??1;if($+=P,P>=0&&($>k||$>A))$=J,G=!0;else if(P<0&&($<J||$<0))$=k,G=!0}return{playhead:$,indexes:X,looped:G,ended:!1}}for(let Y=0;Y<U;Y++)X[Y]=Math.min(Math.max(Math.floor($),0),A-1),$+=Q[Y]??Q[0]??1;return{playhead:$,indexes:X,looped:!1,ended:$>=A||$<0}}function g0(V,F,A){let T=Math.min(V.length,F.length);for(let J=0;J<A.length;J++)for(let k=0;k<T;k++)V[k][J]=F[k][A[J]];for(let J=T;J<V.length;J++)for(let k=0;k<V[J].length;k++)V[J][k]=0;for(let J=A.length;J<V[0].length;J++)for(let k=0;k<T;k++)V[k][J]=0}function c(V){for(let F=0;F<V.length;F++)for(let A=0;A<V[F].length;A++)V[F][A]=0}function c0(V){if(V.length>=2)for(let F=0;F<V[0].length;F++)V[1][F]=V[0][F];else{let F=new Float32Array(V[0].length);for(let A=0;A<V[0].length;A++)F[A]=V[0][A];V.push(F)}}function F0(V,F){for(let A=F.length;A<V.length;A++)F[A]=new Float32Array(V[A].length);for(let A=0;A<V.length;A++)for(let T=0;T<V[A].length;T++)F[A][T]=V[A][T]}function h0(V){let F=0;for(let A=0;A<V.length;A++)for(let T=0;T<V[A].length;T++)if(Number.isNaN(V[A][T]))F++,V[A][T]=0;return F}function k0(){return[{x_1:0,x_2:0,y_1:0,y_2:0},{x_1:0,x_2:0,y_1:0,y_2:0}]}function d0(V,F){if(F.length===1){let T=F[0];if(T===1)return;for(let J of V)for(let k=0;k<J.length;k++)J[k]*=T;return}let A=F[0];for(let T of V)for(let J=0;J<T.length;J++)A=F[J]??A,T[J]*=A}function l0(V,F){let A=F[0];for(let T=0;T<V[0].length;T++){A=F[T]??A;let J=A<=0?1:1-A,k=A>=0?1:1+A;V[0][T]*=J,V[1][T]*=k}}function u0(V,F,A,T){for(let J=0;J<V.length;J++){let k=V[J],{x_1:Q,x_2:U,y_1:X,y_2:$}=T[J]??{x_1:0,x_2:0,y_1:0,y_2:0};if(F.length===1){let G=F[0];if(G>=20000)return;let Y=2*Math.PI*G/A,P=Math.sin(Y)/2,K=(1-Math.cos(Y))/2,O=1-Math.cos(Y),v=(1-Math.cos(Y))/2,W=1+P,w=-2*Math.cos(Y),j=1-P,Z=K/W,C=O/W,D=v/W,R=w/W,l=j/W;for(let b=0;b<k.length;b++){let h=k[b],d=Z*h+C*Q+D*U-R*X-l*$;U=Q,Q=h,$=X,X=d,k[b]=d}}else{let G=F[0];for(let Y=0;Y<k.length;Y++){let P=F[Y]??G,K=2*Math.PI*P/A,O=Math.sin(K)/2,v=(1-Math.cos(K))/2,W=1-Math.cos(K),w=(1-Math.cos(K))/2,j=1+O,Z=-2*Math.cos(K),C=1-O,D=k[Y],R=v/j*D+W/j*Q+w/j*U-Z/j*X-C/j*$;U=Q,Q=D,$=X,X=R,k[Y]=R}}T[J]={x_1:Q,x_2:U,y_1:X,y_2:$}}}function f0(V,F,A,T){for(let J=0;J<V.length;J++){let k=V[J],{x_1:Q,x_2:U,y_1:X,y_2:$}=T[J]??{x_1:0,x_2:0,y_1:0,y_2:0};if(F.length===1){let G=F[0];if(G<=20)return;let Y=2*Math.PI*G/A,P=Math.sin(Y)/2,K=(1+Math.cos(Y))/2,O=-(1+Math.cos(Y)),v=(1+Math.cos(Y))/2,W=1+P,w=-2*Math.cos(Y),j=1-P;for(let Z=0;Z<k.length;Z++){let C=k[Z],D=K/W*C+O/W*Q+v/W*U-w/W*X-j/W*$;U=Q,Q=C,$=X,X=D,k[Z]=D}}else{let G=F[0];for(let Y=0;Y<k.length;Y++){let P=F[Y]??G,K=2*Math.PI*P/A,O=Math.sin(K)/2,v=(1+Math.cos(K))/2,W=-(1+Math.cos(K)),w=(1+Math.cos(K))/2,j=1+O,Z=-2*Math.cos(K),C=1-O,D=k[Y],R=v/j*D+W/j*Q+w/j*U-Z/j*X-C/j*$;U=Q,Q=D,$=X,X=R,k[Y]=R}}T[J]={x_1:Q,x_2:U,y_1:X,y_2:$}}}function T0(V,F,A,T){let{type:J,data:k}=F;switch(J){case"buffer":return L0(V,k),i(V,T),[];case"bufferInit":{let Q=k;return V.buffer=P0(Q.channels,Q.totalLength),V.streamBuffer={...o(),totalLength:Q.totalLength,streamEnded:!1,streaming:Q.streaming??!0},i(V,T),[]}case"bufferRange":return V.streamBuffer.pendingWrites.push(k),[];case"bufferEnd":{let Q=k;if(Q?.totalLength!=null)V.streamBuffer.totalLength=Q.totalLength;return V.streamBuffer.streamEnded=!0,[]}case"bufferReset":return V.buffer=[],V.streamBuffer=o(),i(V,T),[];case"start":V.timesLooped=0;{let Q=k;if(V.duration=Q?.duration??-1,V.duration===-1)V.duration=V.loop?Number.MAX_SAFE_INTEGER:(V.buffer[0]?.length??0)/T;A0(V,Q?.offset,T),i(V,T),V.playhead=V.offset,V.startWhen=Q?.when??A,V.stopWhen=V.startWhen+V.duration,V.playedSamples=0,V.state=z.Scheduled}return[{type:"scheduled"}];case"stop":if(V.state===z.Ended||V.state===z.Initial)return[];return V.stopWhen=k??V.stopWhen,V.state=z.Stopped,[{type:"stopped"}];case"pause":return V.state=z.Paused,V.pauseWhen=k??A,[{type:"paused"}];case"resume":return V.state=z.Started,V.startWhen=k??A,[{type:"resume"}];case"dispose":return V.state=z.Disposed,V.buffer=[],V.streamBuffer=o(),[{type:"disposed"}];case"loop":{let Q=k,U=V.state;if(Q&&(U===z.Scheduled||U===z.Started))V.stopWhen=Number.MAX_SAFE_INTEGER,V.duration=Number.MAX_SAFE_INTEGER;if(V.loop=Q,Q)i(V,T);return[]}case"loopStart":return V.loopStart=k,[];case"loopEnd":return V.loopEnd=k,[];case"loopCrossfade":return V.loopCrossfade=k,V.enableLoopCrossfade=V.loopCrossfade>0,[];case"playhead":return V.playhead=Math.floor(k),[];case"fadeIn":return V.fadeInDuration=k,V.enableFadeIn=V.fadeInDuration>0,[];case"fadeOut":return V.fadeOutDuration=k,V.enableFadeOut=V.fadeOutDuration>0,[];case"toggleGain":return V.enableGain=k??!V.enableGain,[];case"togglePan":return V.enablePan=k??!V.enablePan,[];case"toggleLowpass":return V.enableLowpass=k??!V.enableLowpass,[];case"toggleHighpass":return V.enableHighpass=k??!V.enableHighpass,[];case"toggleDetune":return V.enableDetune=k??!V.enableDetune,[];case"togglePlaybackRate":return V.enablePlaybackRate=k??!V.enablePlaybackRate,[];case"toggleFadeIn":return V.enableFadeIn=k??!V.enableFadeIn,[];case"toggleFadeOut":return V.enableFadeOut=k??!V.enableFadeOut,[];case"toggleLoopStart":return V.enableLoopStart=k??!V.enableLoopStart,[];case"toggleLoopEnd":return V.enableLoopEnd=k??!V.enableLoopEnd,[];case"toggleLoopCrossfade":return V.enableLoopCrossfade=k??!V.enableLoopCrossfade,[];case"logState":return[]}return[]}function W0(V,F,A,T,J){let k=[],Q=V.state;if(Q===z.Disposed)return{keepAlive:!1,messages:k};if(b0(V),Q===z.Initial)return{keepAlive:!0,messages:k};if(Q===z.Ended)return c(F[0]),{keepAlive:!0,messages:k};if(Q===z.Scheduled)if(T.currentTime>=V.startWhen)Q=V.state=z.Started,k.push({type:"started"});else return c(F[0]),{keepAlive:!0,messages:k};else if(Q===z.Paused){if(T.currentTime>V.pauseWhen)return c(F[0]),{keepAlive:!0,messages:k}}if(T.currentTime>V.stopWhen)return c(F[0]),V.state=z.Ended,k.push({type:"ended"}),V.playedSamples=0,{keepAlive:!0,messages:k};let U=F[0],X=a(V);if(X===0)return c(U),{keepAlive:!0,messages:k};let{playbackRate:$,detune:G,lowpass:Y,highpass:P,gain:K,pan:O}=A,{buffer:v,loopStart:W,loopEnd:w,loopCrossfade:j,stopWhen:Z,playedSamples:C,enableLowpass:D,enableHighpass:R,enableGain:l,enablePan:b,enableDetune:h,enableFadeOut:d,enableFadeIn:r,enableLoopStart:p,enableLoopEnd:e,enableLoopCrossfade:V0,playhead:E,fadeInDuration:J0,fadeOutDuration:Q0}=V,U0=V.streamBuffer.streaming&&V.streamBuffer.committedLength<X,s=V.loop,L=U0&&s?Math.max(V.streamBuffer.committedLength,0):X,Z0=y*2;if(U0&&s&&L<Z0){c(U);for(let M=1;M<F.length;M++)F0(U,F[M]);return{keepAlive:!0,messages:k}}let u=Math.min(v.length,U.length),N0=V.duration*T.sampleRate,v0=Math.floor(T.sampleRate*j),D0=Math.max(L-y,0),x=p?Math.min(Math.floor(W*T.sampleRate),D0):0,m=e?Math.min(Math.floor(w*T.sampleRate),L):L,O0=m-x,X0=h&&G.length>0&&G[0]!==0,f=$;if(X0){let M=Math.max($.length,G.length,y);f=new Float32Array(M);for(let q=0;q<M;q++){let I=$[q]??$[$.length-1],H=G[q]??G[G.length-1];f[q]=I*2**(H/1200)}}let Y0=V.enablePlaybackRate||X0,C0=Y0&&f.length>0&&f.every((M)=>M===0);if(V.streamBuffer.streaming&&!V.streamBuffer.streamEnded&&!V.streamBuffer.lowWaterNotified&&V.streamBuffer.committedLength-Math.floor(E)<V.streamBuffer.lowWaterThreshold)k.push({type:"bufferLowWater",data:{playhead:Math.floor(E),committedLength:V.streamBuffer.committedLength}}),V.streamBuffer.lowWaterNotified=!0;if(C0){c(U);for(let M=1;M<F.length;M++)F0(U,F[M]);return{keepAlive:!0,messages:k}}let $0={bufferLength:L,loop:s,playhead:V.playhead,loopStartSamples:x,loopEndSamples:m,durationSamples:N0,playbackRates:f},{indexes:t,ended:M0,looped:G0,playhead:H0}=Y0?S0($0):m0($0),n=t.find((M)=>M>=V.streamBuffer.committedLength&&M<X);if(n!==void 0&&!V.streamBuffer.streamEnded&&V.streamBuffer.lastUnderrunSample!==n)k.push({type:"bufferUnderrun",data:{playhead:Math.floor(E),committedLength:V.streamBuffer.committedLength,requestedSample:n}}),V.streamBuffer.lastUnderrunSample=n;else if(n===void 0)V.streamBuffer.lastUnderrunSample=null;g0(U,v,t);let S=Math.min(Math.floor(j*T.sampleRate),O0),E0=s&&E>x&&E<m,I0=V0&&v0>0&&L>y;if(E0&&I0){{let M=x+S;if(S>0&&E>x&&E<M){let q=E-x,I=Math.min(Math.floor(M-E),y);for(let H=0;H<I;H++){let B=(q+H)/S,g=Math.cos(Math.PI*B/2),N=Math.floor(m-S+q+H);if(N>=0&&N<L)for(let _=0;_<u;_++)U[_][H]+=v[_][N]*g}}}{let M=m-S;if(S>0&&E>M&&E<m){let q=E-M,I=Math.min(Math.floor(m-E),y);for(let H=0;H<I;H++){let B=(q+H)/S,g=Math.sin(Math.PI*B/2),N=Math.floor(x+q+H);if(N>=0&&N<L)for(let _=0;_<u;_++)U[_][H]+=v[_][N]*g}}}}if(r&&J0>0){let M=Math.floor(J0*T.sampleRate),q=M-C;if(q>0){let I=Math.min(q,y);for(let H=0;H<I;H++){let B=(C+H)/M,g=B*B*B;for(let N=0;N<u;N++)U[N][H]*=g}}}if(d&&Q0>0){let M=Math.floor(Q0*T.sampleRate),q=Math.floor(T.sampleRate*(Z-T.currentTime));if(q<M+y)for(let I=0;I<y;I++){let H=q-I;if(H>=M)continue;let B=H<=0?0:H/M,g=B*B*B;for(let N=0;N<u;N++)U[N][I]*=g}}if(D)u0(U,Y,T.sampleRate,J.lowpass);if(R)f0(U,P,T.sampleRate,J.highpass);if(l)d0(U,K);if(u===1)c0(U);if(b)l0(U,O);if(G0)V.timesLooped++,k.push({type:"looped",data:V.timesLooped});if(M0)V.state=z.Ended,k.push({type:"ended"});V.playedSamples+=t.length,V.playhead=H0;let j0=h0(U);if(j0>0)return console.log({numNans:j0,indexes:t,playhead:H0,ended:M0,looped:G0,sourceLength:X}),{keepAlive:!0,messages:k};for(let M=1;M<F.length;M++)F0(U,F[M]);return{keepAlive:!0,messages:k}}class q0 extends AudioWorkletProcessor{static get parameterDescriptors(){return[{name:"playbackRate",automationRate:"a-rate",defaultValue:1},{name:"detune",automationRate:"a-rate",defaultValue:0},{name:"gain",automationRate:"a-rate",defaultValue:1,minValue:0},{name:"pan",automationRate:"a-rate",defaultValue:0},{name:"highpass",automationRate:"a-rate",defaultValue:20,minValue:20,maxValue:20000},{name:"lowpass",automationRate:"a-rate",defaultValue:20000,minValue:20,maxValue:20000}]}properties;filterState={lowpass:k0(),highpass:k0()};lastFrameTime=0;constructor(V){super(V);this.properties=K0(V?.processorOptions,sampleRate),this.port.onmessage=(F)=>{if(F.data.type==="transferPort"){let T=F.data.data;T.onmessage=(J)=>{let k=T0(this.properties,J.data,currentTime,sampleRate);for(let Q of k)this.port.postMessage(Q)};return}let A=T0(this.properties,F.data,currentTime,sampleRate);for(let T of A)this.port.postMessage(T);if(this.properties.state===z.Disposed)this.port.close()}}process(V,F,A){try{let T=W0(this.properties,F,A,{currentTime,currentFrame,sampleRate},this.filterState);for(let k of T.messages)this.port.postMessage(k);let J=currentTime-this.lastFrameTime;return this.lastFrameTime=currentTime,this.port.postMessage({type:"frame",data:[currentTime,currentFrame,Math.floor(this.properties.playhead),J*1000]}),T.keepAlive}catch(T){return this.port.postMessage({type:"processorError",data:{error:String(T),state:this.properties.state,bufferChannels:this.properties.buffer?.length,bufferLength:this.properties.buffer?.[0]?.length,paramKeys:Object.keys(A),hasPlaybackRate:!!A.playbackRate,hasDetune:!!A.detune,hasGain:!!A.gain,hasPan:!!A.pan,outputChannels:F[0]?.length}}),!0}}}registerProcessor("ClipProcessor",q0);
2
+
3
+ //# debugId=CA160104FA867FAC64756E2164756E21
4
+ //# sourceMappingURL=processor.js.map
5
+ `;var b={Initial:0,Started:1,Stopped:2,Paused:3,Scheduled:4,Ended:5,Disposed:6};var T=128;function Y(e=[]){let t=e[0]?.length??0,a=t>0;return{totalLength:a?t:null,committedLength:a?t:0,streamEnded:a,streaming:!1,writtenSpans:a?[{startSample:0,endSample:t}]:[],pendingWrites:[],lowWaterThreshold:T*4,lowWaterNotified:!1,lastUnderrunSample:null}}function Me(e){return e[0]?.length??0}function q(e){return e.streamBuffer.totalLength??Me(e.buffer)}function xe(e,t){return Array.from({length:e},()=>new Float32Array(t))}function qe(e,t){let a=[...e,t].sort((r,n)=>r.startSample-n.startSample),o=[];for(let r of a){let n=o[o.length-1];if(!n||r.startSample>n.endSample){o.push({...r});continue}n.endSample=Math.max(n.endSample,r.endSample)}return o}function He(e){let t=0;for(let a of e){if(a.startSample>t)break;t=Math.max(t,a.endSample)}return t}function je(e,t){e.committedLength-Math.floor(t)>=e.lowWaterThreshold&&(e.lowWaterNotified=!1)}function ze(e,t,a){let o=Me(e.buffer),r=e.buffer.length;if(o>=a&&r>=t)return;let n=Math.max(o,a),s=Math.max(r,t),l=xe(s,n);for(let i=0;i<r;i++)l[i].set(e.buffer[i].subarray(0,o));e.buffer=l,(e.streamBuffer.totalLength==null||e.streamBuffer.totalLength<n)&&(e.streamBuffer.totalLength=n)}function Ze(e,t){let a=Math.max(Math.floor(t.startSample),0),o=t.channelData[0]?.length??0,r=t.totalLength??null,n=Math.max(a+o,r??0);ze(e,Math.max(t.channelData.length,e.buffer.length,1),n);for(let s=0;s<t.channelData.length;s++)e.buffer[s].set(t.channelData[s],a);r!=null&&(e.streamBuffer.totalLength=r),o>0&&(e.streamBuffer.writtenSpans=qe(e.streamBuffer.writtenSpans,{startSample:a,endSample:a+o}),e.streamBuffer.committedLength=He(e.streamBuffer.writtenSpans)),t.streamEnded===!0&&(e.streamBuffer.streamEnded=!0),je(e.streamBuffer,e.playhead)}function et(e){if(e.streamBuffer.pendingWrites.length!==0){for(let t of e.streamBuffer.pendingWrites)Ze(e,t);e.streamBuffer.pendingWrites=[]}}function tt(e,t){e.buffer=t,e.streamBuffer=Y(t)}function at(e={},t){let{buffer:a=[],streamBuffer:o=Y(a),duration:r=-1,loop:n=!1,loopStart:s=0,loopEnd:l=(a[0]?.length??0)/t,loopCrossfade:i=0,playhead:f=0,offset:d=0,startWhen:u=0,stopWhen:h=0,pauseWhen:m=0,resumeWhen:M=0,playedSamples:V=0,state:y=b.Initial,timesLooped:A=0,fadeInDuration:g=0,fadeOutDuration:x=0,enableFadeIn:C=g>0,enableFadeOut:F=x>0,enableLoopStart:R=!0,enableLoopEnd:$=!0,enableLoopCrossfade:_=i>0,enableHighpass:U=!0,enableLowpass:N=!0,enableGain:ee=!0,enablePan:te=!0,enableDetune:ae=!0,enablePlaybackRate:oe=!0}=e;return{buffer:a,streamBuffer:o,loop:n,loopStart:s,loopEnd:l,loopCrossfade:i,duration:r,playhead:f,offset:d,startWhen:u,stopWhen:h,pauseWhen:m,resumeWhen:M,playedSamples:V,state:y,timesLooped:A,fadeInDuration:g,fadeOutDuration:x,enableFadeIn:C,enableFadeOut:F,enableLoopStart:R,enableLoopEnd:$,enableHighpass:U,enableLowpass:N,enableGain:ee,enablePan:te,enableDetune:ae,enablePlaybackRate:oe,enableLoopCrossfade:_}}function ot(e,t){return q(e)/t}function X(e,t){let a=ot(e,t);if(a<=0){e.loopStart=0,e.loopEnd=0;return}(!Number.isFinite(e.loopStart)||e.loopStart<0)&&(e.loopStart=0),e.loopStart>=a&&(e.loopStart=0),(!Number.isFinite(e.loopEnd)||e.loopEnd<=e.loopStart||e.loopEnd>a)&&(e.loopEnd=a)}function ie(e,t,a){if(t===void 0)return e.offset=0,0;if(t<0)return ie(e,q(e)+t,a);if(t>(q(e)||1)-1)return ie(e,q(e)%t,a);let o=Math.floor(t*a);return e.offset=o,o}function nt(e){let{playhead:t,bufferLength:a,loop:o,loopStartSamples:r,loopEndSamples:n}=e,s=128;!o&&t+128>a&&(s=Math.max(a-t,0));let l=new Array(s);if(!o){for(let u=0,h=t;u<s;u++,h++)l[u]=h;let d=t+s;return{playhead:d,indexes:l,looped:!1,ended:d>=a}}let i=t,f=!1;for(let d=0;d<s;d++,i++)i>=n&&(i=r+(i-n),f=!0),l[d]=i;return{indexes:l,looped:f,ended:!1,playhead:i}}function rt(e){let{playhead:t,bufferLength:a,loop:o,loopStartSamples:r,loopEndSamples:n,playbackRates:s}=e,l=128;!o&&t+128>a&&(l=Math.max(a-t,0));let i=new Array(l),f=t,d=!1;if(o){for(let u=0;u<l;u++){i[u]=Math.min(Math.max(Math.floor(f),0),a-1);let h=s[u]??s[0]??1;f+=h,h>=0&&(f>n||f>a)?(f=r,d=!0):h<0&&(f<r||f<0)&&(f=n,d=!0)}return{playhead:f,indexes:i,looped:d,ended:!1}}for(let u=0;u<l;u++)i[u]=Math.min(Math.max(Math.floor(f),0),a-1),f+=s[u]??s[0]??1;return{playhead:f,indexes:i,looped:!1,ended:f>=a||f<0}}function st(e,t,a){let o=Math.min(e.length,t.length);for(let r=0;r<a.length;r++)for(let n=0;n<o;n++)e[n][r]=t[n][a[r]];for(let r=o;r<e.length;r++)for(let n=0;n<e[r].length;n++)e[r][n]=0;for(let r=a.length;r<e[0].length;r++)for(let n=0;n<o;n++)e[n][r]=0}function v(e){for(let t=0;t<e.length;t++)for(let a=0;a<e[t].length;a++)e[t][a]=0}function lt(e){if(e.length>=2)for(let t=0;t<e[0].length;t++)e[1][t]=e[0][t];else{let t=new Float32Array(e[0].length);for(let a=0;a<e[0].length;a++)t[a]=e[0][a];e.push(t)}}function le(e,t){for(let a=t.length;a<e.length;a++)t[a]=new Float32Array(e[a].length);for(let a=0;a<e.length;a++)for(let o=0;o<e[a].length;o++)t[a][o]=e[a][o]}function it(e){let t=0;for(let a=0;a<e.length;a++)for(let o=0;o<e[a].length;o++)Number.isNaN(e[a][o])&&(t++,e[a][o]=0);return t}function ut(){return[{x_1:0,x_2:0,y_1:0,y_2:0},{x_1:0,x_2:0,y_1:0,y_2:0}]}function ft(e,t){if(t.length===1){let o=t[0];if(o===1)return;for(let r of e)for(let n=0;n<r.length;n++)r[n]*=o;return}let a=t[0];for(let o of e)for(let r=0;r<o.length;r++)a=t[r]??a,o[r]*=a}function dt(e,t){let a=t[0];for(let o=0;o<e[0].length;o++){a=t[o]??a;let r=a<=0?1:1-a,n=a>=0?1:1+a;e[0][o]*=r,e[1][o]*=n}}function pt(e,t,a,o){for(let r=0;r<e.length;r++){let n=e[r],{x_1:s,x_2:l,y_1:i,y_2:f}=o[r]??{x_1:0,x_2:0,y_1:0,y_2:0};if(t.length===1){let d=t[0];if(d>=2e4)return;let u=2*Math.PI*d/a,h=Math.sin(u)/2,m=(1-Math.cos(u))/2,M=1-Math.cos(u),V=(1-Math.cos(u))/2,y=1+h,A=-2*Math.cos(u),g=1-h,x=m/y,C=M/y,F=V/y,R=A/y,$=g/y;for(let _=0;_<n.length;_++){let U=n[_],N=x*U+C*s+F*l-R*i-$*f;l=s,s=U,f=i,i=N,n[_]=N}}else{let d=t[0];for(let u=0;u<n.length;u++){let h=t[u]??d,m=2*Math.PI*h/a,M=Math.sin(m)/2,V=(1-Math.cos(m))/2,y=1-Math.cos(m),A=(1-Math.cos(m))/2,g=1+M,x=-2*Math.cos(m),C=1-M,F=n[u],R=V/g*F+y/g*s+A/g*l-x/g*i-C/g*f;l=s,s=F,f=i,i=R,n[u]=R}}o[r]={x_1:s,x_2:l,y_1:i,y_2:f}}}function ht(e,t,a,o){for(let r=0;r<e.length;r++){let n=e[r],{x_1:s,x_2:l,y_1:i,y_2:f}=o[r]??{x_1:0,x_2:0,y_1:0,y_2:0};if(t.length===1){let d=t[0];if(d<=20)return;let u=2*Math.PI*d/a,h=Math.sin(u)/2,m=(1+Math.cos(u))/2,M=-(1+Math.cos(u)),V=(1+Math.cos(u))/2,y=1+h,A=-2*Math.cos(u),g=1-h;for(let x=0;x<n.length;x++){let C=n[x],F=m/y*C+M/y*s+V/y*l-A/y*i-g/y*f;l=s,s=C,f=i,i=F,n[x]=F}}else{let d=t[0];for(let u=0;u<n.length;u++){let h=t[u]??d,m=2*Math.PI*h/a,M=Math.sin(m)/2,V=(1+Math.cos(m))/2,y=-(1+Math.cos(m)),A=(1+Math.cos(m))/2,g=1+M,x=-2*Math.cos(m),C=1-M,F=n[u],R=V/g*F+y/g*s+A/g*l-x/g*i-C/g*f;l=s,s=F,f=i,i=R,n[u]=R}}o[r]={x_1:s,x_2:l,y_1:i,y_2:f}}}function ct(e,t,a,o){let{type:r,data:n}=t;switch(r){case"buffer":return tt(e,n),X(e,o),[];case"bufferInit":{let s=n;return e.buffer=xe(s.channels,s.totalLength),e.streamBuffer={...Y(),totalLength:s.totalLength,streamEnded:!1,streaming:s.streaming??!0},X(e,o),[]}case"bufferRange":return e.streamBuffer.pendingWrites.push(n),[];case"bufferEnd":{let s=n;return s?.totalLength!=null&&(e.streamBuffer.totalLength=s.totalLength),e.streamBuffer.streamEnded=!0,[]}case"bufferReset":return e.buffer=[],e.streamBuffer=Y(),X(e,o),[];case"start":e.timesLooped=0;{let s=n;e.duration=s?.duration??-1,e.duration===-1&&(e.duration=e.loop?Number.MAX_SAFE_INTEGER:(e.buffer[0]?.length??0)/o),ie(e,s?.offset,o),X(e,o),e.playhead=e.offset,e.startWhen=s?.when??a,e.stopWhen=e.startWhen+e.duration,e.playedSamples=0,e.state=b.Scheduled}return[{type:"scheduled"}];case"stop":return e.state===b.Ended||e.state===b.Initial?[]:(e.stopWhen=n??e.stopWhen,e.state=b.Stopped,[{type:"stopped"}]);case"pause":return e.state=b.Paused,e.pauseWhen=n??a,[{type:"paused"}];case"resume":return e.state=b.Started,e.startWhen=n??a,[{type:"resume"}];case"dispose":return e.state=b.Disposed,e.buffer=[],e.streamBuffer=Y(),[{type:"disposed"}];case"loop":{let s=n,l=e.state;return s&&(l===b.Scheduled||l===b.Started)&&(e.stopWhen=Number.MAX_SAFE_INTEGER,e.duration=Number.MAX_SAFE_INTEGER),e.loop=s,s&&X(e,o),[]}case"loopStart":return e.loopStart=n,[];case"loopEnd":return e.loopEnd=n,[];case"loopCrossfade":return e.loopCrossfade=n,e.enableLoopCrossfade=e.loopCrossfade>0,[];case"playhead":return e.playhead=Math.floor(n),[];case"fadeIn":return e.fadeInDuration=n,e.enableFadeIn=e.fadeInDuration>0,[];case"fadeOut":return e.fadeOutDuration=n,e.enableFadeOut=e.fadeOutDuration>0,[];case"toggleGain":return e.enableGain=n??!e.enableGain,[];case"togglePan":return e.enablePan=n??!e.enablePan,[];case"toggleLowpass":return e.enableLowpass=n??!e.enableLowpass,[];case"toggleHighpass":return e.enableHighpass=n??!e.enableHighpass,[];case"toggleDetune":return e.enableDetune=n??!e.enableDetune,[];case"togglePlaybackRate":return e.enablePlaybackRate=n??!e.enablePlaybackRate,[];case"toggleFadeIn":return e.enableFadeIn=n??!e.enableFadeIn,[];case"toggleFadeOut":return e.enableFadeOut=n??!e.enableFadeOut,[];case"toggleLoopStart":return e.enableLoopStart=n??!e.enableLoopStart,[];case"toggleLoopEnd":return e.enableLoopEnd=n??!e.enableLoopEnd,[];case"toggleLoopCrossfade":return e.enableLoopCrossfade=n??!e.enableLoopCrossfade,[];case"logState":return[]}return[]}function mt(e,t,a,o,r){let n=[],s=e.state;if(s===b.Disposed)return{keepAlive:!1,messages:n};if(et(e),s===b.Initial)return{keepAlive:!0,messages:n};if(s===b.Ended)return v(t[0]),{keepAlive:!0,messages:n};if(s===b.Scheduled)if(o.currentTime>=e.startWhen)s=e.state=b.Started,n.push({type:"started"});else return v(t[0]),{keepAlive:!0,messages:n};else if(s===b.Paused&&o.currentTime>e.pauseWhen)return v(t[0]),{keepAlive:!0,messages:n};if(o.currentTime>e.stopWhen)return v(t[0]),e.state=b.Ended,n.push({type:"ended"}),e.playedSamples=0,{keepAlive:!0,messages:n};let l=t[0],i=q(e);if(i===0)return v(l),{keepAlive:!0,messages:n};let{playbackRate:f,detune:d,lowpass:u,highpass:h,gain:m,pan:M}=a,{buffer:V,loopStart:y,loopEnd:A,loopCrossfade:g,stopWhen:x,playedSamples:C,enableLowpass:F,enableHighpass:R,enableGain:$,enablePan:_,enableDetune:U,enableFadeOut:N,enableFadeIn:ee,enableLoopStart:te,enableLoopEnd:ae,enableLoopCrossfade:oe,playhead:L,fadeInDuration:ue,fadeOutDuration:fe}=e,de=e.streamBuffer.streaming&&e.streamBuffer.committedLength<i,H=e.loop,D=de&&H?Math.max(e.streamBuffer.committedLength,0):i,_e=T*2;if(de&&H&&D<_e){v(l);for(let p=1;p<t.length;p++)le(l,t[p]);return{keepAlive:!0,messages:n}}let J=Math.min(V.length,l.length),De=e.duration*o.sampleRate,Oe=Math.floor(o.sampleRate*g),Ie=Math.max(D-T,0),O=te?Math.min(Math.floor(y*o.sampleRate),Ie):0,I=ae?Math.min(Math.floor(A*o.sampleRate),D):D,we=I-O,pe=U&&d.length>0&&d[0]!==0,Q=f;if(pe){let p=Math.max(f.length,d.length,T);Q=new Float32Array(p);for(let S=0;S<p;S++){let P=f[S]??f[f.length-1],c=d[S]??d[d.length-1];Q[S]=P*2**(c/1200)}}let he=e.enablePlaybackRate||pe,We=he&&Q.length>0&&Q.every(p=>p===0);if(e.streamBuffer.streaming&&!e.streamBuffer.streamEnded&&!e.streamBuffer.lowWaterNotified&&e.streamBuffer.committedLength-Math.floor(L)<e.streamBuffer.lowWaterThreshold&&(n.push({type:"bufferLowWater",data:{playhead:Math.floor(L),committedLength:e.streamBuffer.committedLength}}),e.streamBuffer.lowWaterNotified=!0),We){v(l);for(let p=1;p<t.length;p++)le(l,t[p]);return{keepAlive:!0,messages:n}}let ce={bufferLength:D,loop:H,playhead:e.playhead,loopStartSamples:O,loopEndSamples:I,durationSamples:De,playbackRates:Q},{indexes:j,ended:me,looped:ge,playhead:be}=he?rt(ce):nt(ce),G=j.find(p=>p>=e.streamBuffer.committedLength&&p<i);G!==void 0&&!e.streamBuffer.streamEnded&&e.streamBuffer.lastUnderrunSample!==G?(n.push({type:"bufferUnderrun",data:{playhead:Math.floor(L),committedLength:e.streamBuffer.committedLength,requestedSample:G}}),e.streamBuffer.lastUnderrunSample=G):G===void 0&&(e.streamBuffer.lastUnderrunSample=null),st(l,V,j);let w=Math.min(Math.floor(g*o.sampleRate),we),ve=H&&L>O&&L<I,Ue=oe&&Oe>0&&D>T;if(ve&&Ue){{let p=O+w;if(w>0&&L>O&&L<p){let S=L-O,P=Math.min(Math.floor(p-L),T);for(let c=0;c<P;c++){let B=(S+c)/w,W=Math.cos(Math.PI*B/2),k=Math.floor(I-w+S+c);if(k>=0&&k<D)for(let E=0;E<J;E++)l[E][c]+=V[E][k]*W}}}{let p=I-w;if(w>0&&L>p&&L<I){let S=L-p,P=Math.min(Math.floor(I-L),T);for(let c=0;c<P;c++){let B=(S+c)/w,W=Math.sin(Math.PI*B/2),k=Math.floor(O+S+c);if(k>=0&&k<D)for(let E=0;E<J;E++)l[E][c]+=V[E][k]*W}}}}if(ee&&ue>0){let p=Math.floor(ue*o.sampleRate),S=p-C;if(S>0){let P=Math.min(S,T);for(let c=0;c<P;c++){let B=(C+c)/p,W=B*B*B;for(let k=0;k<J;k++)l[k][c]*=W}}}if(N&&fe>0){let p=Math.floor(fe*o.sampleRate),S=Math.floor(o.sampleRate*(x-o.currentTime));if(S<p+T)for(let P=0;P<T;P++){let c=S-P;if(c>=p)continue;let B=c<=0?0:c/p,W=B*B*B;for(let k=0;k<J;k++)l[k][P]*=W}}F&&pt(l,u,o.sampleRate,r.lowpass),R&&ht(l,h,o.sampleRate,r.highpass),$&&ft(l,m),J===1&&lt(l),_&&dt(l,M),ge&&(e.timesLooped++,n.push({type:"looped",data:e.timesLooped})),me&&(e.state=b.Ended,n.push({type:"ended"})),e.playedSamples+=j.length,e.playhead=be;let ye=it(l);if(ye>0)return console.log({numNans:ye,indexes:j,playhead:be,ended:me,looped:ge,sourceLength:i}),{keepAlive:!0,messages:n};for(let p=1;p<t.length;p++)le(l,t[p]);return{keepAlive:!0,messages:n}}var ke="0.1.8";var gt="@jadujoel/web-audio-clip-node",bt=ke;function yt(){let e=new Blob([se],{type:"text/javascript"});return URL.createObjectURL(e)}function St(e=bt){return`https://cdn.jsdelivr.net/npm/${gt}@${e}/dist/processor.js`}function Mt(e=document.baseURI){return new URL("./processor.js",e).toString()}var xt=120,kt=48e3,Ve=[{key:"offset",label:"Offset",min:0,max:60,defaultValue:0,snap:"bar",hasSnap:!0,hasToggle:!0,hasMaxLock:!0,maxLockedByDefault:!0,title:"Start position in the buffer (seconds)."},{key:"duration",label:"Duration",min:-1,max:60,defaultValue:-1,hasSnap:!0,hasToggle:!0,hasMaxLock:!0,maxLockedByDefault:!0,title:"How long to play before auto-stopping (seconds). -1 for full length."},{key:"startDelay",label:"StartDelay",min:0,max:4,defaultValue:0,snap:"beat",hasSnap:!0,hasToggle:!0,title:"Delay before starting (seconds)."},{key:"stopDelay",label:"StopDelay",min:0,max:4,defaultValue:0,snap:"beat",hasSnap:!0,hasToggle:!0,hasMaxLock:!0,title:"Delay before stopping (seconds)."},{key:"fadeIn",label:"FadeIn",min:0,max:60,defaultValue:0,snap:"beat",hasSnap:!0,hasToggle:!0,hasMaxLock:!0,title:"Fade-in duration (seconds)."},{key:"fadeOut",label:"FadeOut",min:0,max:60,defaultValue:0,snap:"beat",hasSnap:!0,hasToggle:!0,hasMaxLock:!0,title:"Fade-out duration (seconds)."}],Fe=[{key:"loopStart",label:"Start",min:0,max:60,defaultValue:0,snap:"bar",hasSnap:!0,hasToggle:!0,hasMaxLock:!0,maxLockedByDefault:!0},{key:"loopEnd",label:"End",min:0,max:60,defaultValue:0,snap:"bar",hasSnap:!0,hasToggle:!0,hasMaxLock:!0,maxLockedByDefault:!0},{key:"loopCrossfade",label:"Crossfade",min:0,max:1,defaultValue:0,snap:"beat",hasSnap:!0,hasToggle:!0}],Ce=[{key:"playbackRate",label:"PlaybackRate",min:-2,max:2,defaultValue:1,precision:2,preset:"playbackRate",hasToggle:!0,title:"Playback speed. Negative for reverse."},{key:"detune",label:"Detune",min:-2400,max:2400,defaultValue:0,precision:4,preset:"cents",hasToggle:!0,title:"Pitch shift in cents."},{key:"gain",label:"Gain",min:-100,max:0,defaultValue:0,precision:3,preset:"gain",hasToggle:!0,title:"Amplitude in dB."},{key:"pan",label:"Pan",min:-1,max:1,defaultValue:0,preset:"pan",hasToggle:!0,title:"-1 full left, 1 full right."},{key:"lowpass",label:"Lowpass",min:32,max:16384,defaultValue:16384,preset:"hertz",hasToggle:!0,title:"Lowpass cutoff frequency."},{key:"highpass",label:"Highpass",min:32,max:16384,defaultValue:32,preset:"hertz",hasToggle:!0,title:"Highpass cutoff frequency."}],Vt={key:"playhead",label:"Playhead",min:0,max:48e4,defaultValue:0,precision:1,snap:"int",title:"Current sample position of buffer playback."},Le=[Vt,...Ve,...Fe,...Ce];function Ft(){let e={},t={},a={},o={},r={},n={};for(let s of Le)e[s.key]=s.defaultValue,t[s.key]=s.snap??"none",a[s.key]=!0,o[s.key]=s.min,r[s.key]=s.max,n[s.key]=s.maxLockedByDefault??!1;return{values:e,snaps:t,enabled:a,mins:o,maxs:r,maxLocked:n}}function Ct(e,t,a,o){switch(t){case"gain":return`${e.toFixed(1)} dB`;case"lowpass":case"highpass":return`${Math.round(e)} Hz`;case"detune":return`${Math.round(e)} cents`;case"pan":return e===0?"center":e<0?`${Math.abs(e).toFixed(2)} left`:`${e.toFixed(2)} right`;case"playbackRate":return`${e.toFixed(2)}x`;case"playhead":return`sample ${Math.round(e)}`;default:break}if(a==="beat"||a==="bar"||a==="8th"||a==="16th"){let r=60/o;if(a==="bar"){let s=e/(r*4);return`${Math.round(s)} bars`}if(a==="8th"){let s=e/(r/2);return`${Math.round(s)} 8ths`}if(a==="16th"){let s=e/(r/4);return`${Math.round(s)} 16ths`}let n=e/r;return`${Math.round(n)} beats`}return a==="integer"?`${Math.round(e)} s`:`${e.toPrecision(4)} s`}function Lt(e,t,a,o){switch(t){case"gain":return e.toFixed(1);case"lowpass":case"highpass":return`${Math.round(e)}`;case"detune":return`${Math.round(e)}`;case"pan":return e===0?"C":e<0?`${Math.abs(e).toFixed(2)}L`:`${e.toFixed(2)}R`;case"playbackRate":return`${e.toFixed(2)}x`;case"playhead":return`${Math.round(e)}`;default:break}if(a==="beat"||a==="bar"||a==="8th"||a==="16th"){let r=60/o;return a==="bar"?`${Math.round(e/(r*4))}`:a==="8th"?`${Math.round(e/(r/2))}`:a==="16th"?`${Math.round(e/(r/4))}`:`${Math.round(e/r)}`}return a==="integer"?`${Math.round(e)}`:e.toPrecision(4)}var Pe=[{key:"fadeOutStopDelay",label:"Link StopDelay and FadeOut",controls:["stopDelay","fadeOut"]}],Ae=[{key:"loopStartEnd",label:"Link Start and End",controls:["loopStart","loopEnd"]}],Pt=[...Pe,...Ae];function At(){return{fadeOutStopDelay:!1,loopStartEnd:!1}}function Re(e){return Pt.find(t=>t.controls[0]===e||t.controls[1]===e)}function Rt(e,t){let a=Re(e);return a&&t[a.key]?a.controls:[e]}function Bt({pair:e,changedKey:t,nextValue:a,values:o,mins:r,maxs:n}){let[s,l]=e.controls;if(t!==s&&t!==l)return{[t]:a};let i=t===s?l:s,f=o[t],d=o[i],u=a-f,h=Math.max(r[t]-f,r[i]-d),m=Math.min(n[t]-f,n[i]-d),M=Math.min(Math.max(u,h),m);return{[t]:f+M,[i]:d+M}}var Tt=caches.open("sound-files");async function Et(e){let t=performance.now(),a=await Tt,o=await a.match(e);if(o)return console.log(`[cache] Loaded ${e} from CacheStorage in ${(performance.now()-t).toFixed(0)}ms`),o.arrayBuffer();let r=await fetch(e);if(r.ok)return a.put(e,r.clone()).catch(()=>{}),console.log(`[cache] Loaded ${e} from network in ${(performance.now()-t).toFixed(0)}ms`),r.arrayBuffer()}var _t="clip-audio-store";var Z="files",Be="last-uploaded";function Te(){return new Promise((e,t)=>{let a=indexedDB.open(_t,1);a.onupgradeneeded=()=>{let o=a.result;o.objectStoreNames.contains(Z)||o.createObjectStore(Z)},a.onsuccess=()=>e(a.result),a.onerror=()=>t(a.error)})}function Ee(e,t){return e.transaction(Z,t).objectStore(Z)}async function Dt(e,t){let a=await Te(),o=Ee(a,"readwrite"),r={name:e,arrayBuffer:t};await new Promise((n,s)=>{let l=o.put(r,Be);l.onsuccess=()=>n(),l.onerror=()=>s(l.error)})}async function Ot(){let e=await Te(),t=Ee(e,"readonly");return new Promise((a,o)=>{let r=t.get(Be);r.onsuccess=()=>a(r.result??null),r.onerror=()=>o(r.error)})}export{re as ClipNode,xt as DEFAULT_TEMPO,T as SAMPLE_BLOCK_SIZE,kt as SAMPLE_RATE,b as State,Le as allDefs,ne as audioBufferFromFloat32Array,Ft as buildDefaults,At as buildLinkedControlPairDefaults,Ve as controlDefs,ut as createFilterState,Ne as dbFromLin,Xe as float32ArrayFromAudioBuffer,Lt as formatTickLabel,Ct as formatValueText,Ye as generateSnapPoints,Rt as getActiveLinkedControls,Re as getLinkedControlPairForControl,Bt as getLinkedControlUpdates,yt as getProcessorBlobUrl,St as getProcessorCdnUrl,Mt as getProcessorModuleUrl,at as getProperties,Ge as getSnappedValue,K as getTempoSnapInterval,ct as handleProcessorMessage,Se as isTempoRelativeSnap,$e as linFromDb,Et as loadFromCache,Ot as loadUploadedFile,Fe as loopControlDefs,Ae as loopLinkedControlPairs,Ce as paramDefs,Ke as presets,mt as processBlock,se as processorCode,Qe as remapTempoRelativeValue,Dt as saveUploadedFile,Pe as transportLinkedControlPairs};
6
+ //# sourceMappingURL=lib.bundle.js.map