@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
@@ -1,6 +1,6 @@
1
- function ve(e){return Math.max(20*Math.log10(e),-1e3)}function Ue(e){return 10**(e/20)}var Ne=["beat","bar","8th","16th"];function Y(e,t,a){return Math.min(Math.max(e,t),a)}function ge(e){return Ne.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 Je(e,t,a,o,r,n){if(!ge(t)||e<0)return Y(e,r,n);let s=K(t,a),l=K(t,o);if(s==null||l==null)return Y(e,r,n);let i=Math.round(e/s);return Y(i*l,r,n)}function $e(e,t,a){let o=K(t,a);return o!=null?Math.round(e/o)*o:t==="int"?Math.round(e):e}var Ge={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 Ke(e){return e.numberOfChannels===1?[e.getChannelData(0)]:[e.getChannelData(0),e.getChannelData(1)]}function ae(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 Qe(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 oe=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=ae(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 ne=`var j={Initial:0,Started:1,Stopped:2,Paused:3,Scheduled:4,Ended:5,Disposed:6};var _=128;function i(V=[]){let A=V[0]?.length??0,F=A>0;return{totalLength:F?A:null,committedLength:F?A:0,streamEnded:F,streaming:!1,writtenSpans:F?[{startSample:0,endSample:A}]:[],pendingWrites:[],lowWaterThreshold:_*4,lowWaterNotified:!1,lastUnderrunSample:null}}function H0(V){return V[0]?.length??0}function o(V){return V.streamBuffer.totalLength??H0(V.buffer)}function P0(V,A){return Array.from({length:V},()=>new Float32Array(A))}function E0(V,A){let F=[...V,A].sort((T,k)=>T.startSample-k.startSample),M=[];for(let T of F){let k=M[M.length-1];if(!k||T.startSample>k.endSample){M.push({...T});continue}k.endSample=Math.max(k.endSample,T.endSample)}return M}function I0(V){let A=0;for(let F of V){if(F.startSample>A)break;A=Math.max(A,F.endSample)}return A}function w0(V,A){if(V.committedLength-Math.floor(A)>=V.lowWaterThreshold)V.lowWaterNotified=!1}function R0(V,A,F){let M=H0(V.buffer),T=V.buffer.length;if(M>=F&&T>=A)return;let k=Math.max(M,F),J=Math.max(T,A),U=P0(J,k);for(let Q=0;Q<T;Q++)U[Q].set(V.buffer[Q].subarray(0,M));if(V.buffer=U,V.streamBuffer.totalLength==null||V.streamBuffer.totalLength<k)V.streamBuffer.totalLength=k}function B0(V,A){let F=Math.max(Math.floor(A.startSample),0),M=A.channelData[0]?.length??0,T=A.totalLength??null,k=Math.max(F+M,T??0);R0(V,Math.max(A.channelData.length,V.buffer.length,1),k);for(let J=0;J<A.channelData.length;J++)V.buffer[J].set(A.channelData[J],F);if(T!=null)V.streamBuffer.totalLength=T;if(M>0)V.streamBuffer.writtenSpans=E0(V.streamBuffer.writtenSpans,{startSample:F,endSample:F+M}),V.streamBuffer.committedLength=I0(V.streamBuffer.writtenSpans);if(A.streamEnded===!0)V.streamBuffer.streamEnded=!0;w0(V.streamBuffer,V.playhead)}function y0(V){if(V.streamBuffer.pendingWrites.length===0)return;for(let A of V.streamBuffer.pendingWrites)B0(V,A);V.streamBuffer.pendingWrites=[]}function _0(V,A){V.buffer=A,V.streamBuffer=i(A)}function j0(V={},A){let{buffer:F=[],streamBuffer:M=i(F),duration:T=-1,loop:k=!1,loopStart:J=0,loopEnd:U=(F[0]?.length??0)/A,loopCrossfade:Q=0,playhead:Y=0,offset:$=0,startWhen:X=0,stopWhen:v=0,pauseWhen:z=0,resumeWhen:C=0,playedSamples:N=0,state:K=j.Initial,timesLooped:w=0,fadeInDuration:P=0,fadeOutDuration:Z=0,enableFadeIn:E=P>0,enableFadeOut:O=Z>0,enableLoopStart:R=!0,enableLoopEnd:d=!0,enableLoopCrossfade:b=Q>0,enableHighpass:c=!0,enableLowpass:g=!0,enableGain:s=!0,enablePan:t=!0,enableDetune:r=!0,enablePlaybackRate:p=!0}=V;return{buffer:F,streamBuffer:M,loop:k,loopStart:J,loopEnd:U,loopCrossfade:Q,duration:T,playhead:Y,offset:$,startWhen:X,stopWhen:v,pauseWhen:z,resumeWhen:C,playedSamples:N,state:K,timesLooped:w,fadeInDuration:P,fadeOutDuration:Z,enableFadeIn:E,enableFadeOut:O,enableLoopStart:R,enableLoopEnd:d,enableHighpass:c,enableLowpass:g,enableGain:s,enablePan:t,enableDetune:r,enablePlaybackRate:p,enableLoopCrossfade:b}}function b0(V,A){return o(V)/A}function n(V,A){let F=b0(V,A);if(F<=0){V.loopStart=0,V.loopEnd=0;return}if(!Number.isFinite(V.loopStart)||V.loopStart<0)V.loopStart=0;if(V.loopStart>=F)V.loopStart=0;if(!Number.isFinite(V.loopEnd)||V.loopEnd<=V.loopStart||V.loopEnd>F)V.loopEnd=F}function e(V,A,F){if(A===void 0)return V.offset=0,0;if(A<0)return e(V,o(V)+A,F);if(A>(o(V)||1)-1)return e(V,o(V)%A,F);let M=Math.floor(A*F);return V.offset=M,M}function L0(V){let{playhead:A,bufferLength:F,loop:M,loopStartSamples:T,loopEndSamples:k}=V,J=128;if(!M&&A+128>F)J=Math.max(F-A,0);let U=Array(J);if(!M){for(let X=0,v=A;X<J;X++,v++)U[X]=v;let $=A+J;return{playhead:$,indexes:U,looped:!1,ended:$>=F}}let Q=A,Y=!1;for(let $=0;$<J;$++,Q++){if(Q>=k)Q=T+(Q-k),Y=!0;U[$]=Q}return{indexes:U,looped:Y,ended:!1,playhead:Q}}function x0(V){let{playhead:A,bufferLength:F,loop:M,loopStartSamples:T,loopEndSamples:k,playbackRates:J}=V,U=128;if(!M&&A+128>F)U=Math.max(F-A,0);let Q=Array(U),Y=A,$=!1;if(M){for(let X=0;X<U;X++){Q[X]=Math.min(Math.max(Math.floor(Y),0),F-1);let v=J[X]??J[0]??1;if(Y+=v,v>=0&&(Y>k||Y>F))Y=T,$=!0;else if(v<0&&(Y<T||Y<0))Y=k,$=!0}return{playhead:Y,indexes:Q,looped:$,ended:!1}}for(let X=0;X<U;X++)Q[X]=Math.min(Math.max(Math.floor(Y),0),F-1),Y+=J[X]??J[0]??1;return{playhead:Y,indexes:Q,looped:!1,ended:Y>=F||Y<0}}function m0(V,A,F){let M=Math.min(V.length,A.length);for(let T=0;T<F.length;T++)for(let k=0;k<M;k++)V[k][T]=A[k][F[T]];for(let T=M;T<V.length;T++)for(let k=0;k<V[T].length;k++)V[T][k]=0;for(let T=F.length;T<V[0].length;T++)for(let k=0;k<M;k++)V[k][T]=0}function h(V){for(let A=0;A<V.length;A++)for(let F=0;F<V[A].length;F++)V[A][F]=0}function S0(V){if(V.length>=2)for(let A=0;A<V[0].length;A++)V[1][A]=V[0][A];else{let A=new Float32Array(V[0].length);for(let F=0;F<V[0].length;F++)A[F]=V[0][F];V.push(A)}}function G0(V,A){for(let F=A.length;F<V.length;F++)A[F]=new Float32Array(V[F].length);for(let F=0;F<V.length;F++)for(let M=0;M<V[F].length;M++)A[F][M]=V[F][M]}function c0(V){let A=0;for(let F=0;F<V.length;F++)for(let M=0;M<V[F].length;M++)if(Number.isNaN(V[F][M]))A++,V[F][M]=0;return A}function V0(){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 g0(V,A){if(A.length===1){let M=A[0];if(M===1)return;for(let T of V)for(let k=0;k<T.length;k++)T[k]*=M;return}let F=A[0];for(let M of V)for(let T=0;T<M.length;T++)F=A[T]??F,M[T]*=F}function h0(V,A){let F=A[0];for(let M=0;M<V[0].length;M++){F=A[M]??F;let T=F<=0?1:1-F,k=F>=0?1:1+F;V[0][M]*=T,V[1][M]*=k}}function d0(V,A,F,M){for(let T=0;T<V.length;T++){let k=V[T],{x_1:J,x_2:U,y_1:Q,y_2:Y}=M[T]??{x_1:0,x_2:0,y_1:0,y_2:0};if(A.length===1){let $=A[0];if($>=20000)return;let X=2*Math.PI*$/F,v=Math.sin(X)/2,z=(1-Math.cos(X))/2,C=1-Math.cos(X),N=(1-Math.cos(X))/2,K=1+v,w=-2*Math.cos(X),P=1-v,Z=z/K,E=C/K,O=N/K,R=w/K,d=P/K;for(let b=0;b<k.length;b++){let c=k[b],g=Z*c+E*J+O*U-R*Q-d*Y;U=J,J=c,Y=Q,Q=g,k[b]=g}}else{let $=A[0];for(let X=0;X<k.length;X++){let v=A[X]??$,z=2*Math.PI*v/F,C=Math.sin(z)/2,N=(1-Math.cos(z))/2,K=1-Math.cos(z),w=(1-Math.cos(z))/2,P=1+C,Z=-2*Math.cos(z),E=1-C,O=k[X],R=N/P*O+K/P*J+w/P*U-Z/P*Q-E/P*Y;U=J,J=O,Y=Q,Q=R,k[X]=R}}M[T]={x_1:J,x_2:U,y_1:Q,y_2:Y}}}function u0(V,A,F,M){for(let T=0;T<V.length;T++){let k=V[T],{x_1:J,x_2:U,y_1:Q,y_2:Y}=M[T]??{x_1:0,x_2:0,y_1:0,y_2:0};if(A.length===1){let $=A[0];if($<=20)return;let X=2*Math.PI*$/F,v=Math.sin(X)/2,z=(1+Math.cos(X))/2,C=-(1+Math.cos(X)),N=(1+Math.cos(X))/2,K=1+v,w=-2*Math.cos(X),P=1-v;for(let Z=0;Z<k.length;Z++){let E=k[Z],O=z/K*E+C/K*J+N/K*U-w/K*Q-P/K*Y;U=J,J=E,Y=Q,Q=O,k[Z]=O}}else{let $=A[0];for(let X=0;X<k.length;X++){let v=A[X]??$,z=2*Math.PI*v/F,C=Math.sin(z)/2,N=(1+Math.cos(z))/2,K=-(1+Math.cos(z)),w=(1+Math.cos(z))/2,P=1+C,Z=-2*Math.cos(z),E=1-C,O=k[X],R=N/P*O+K/P*J+w/P*U-Z/P*Q-E/P*Y;U=J,J=O,Y=Q,Q=R,k[X]=R}}M[T]={x_1:J,x_2:U,y_1:Q,y_2:Y}}}function A0(V,A,F,M){let{type:T,data:k}=A;switch(T){case"buffer":return _0(V,k),n(V,M),[];case"bufferInit":{let J=k;return V.buffer=P0(J.channels,J.totalLength),V.streamBuffer={...i(),totalLength:J.totalLength,streamEnded:!1,streaming:J.streaming??!0},n(V,M),[]}case"bufferRange":return V.streamBuffer.pendingWrites.push(k),[];case"bufferEnd":{let J=k;if(J?.totalLength!=null)V.streamBuffer.totalLength=J.totalLength;return V.streamBuffer.streamEnded=!0,[]}case"bufferReset":return V.buffer=[],V.streamBuffer=i(),n(V,M),[];case"start":V.timesLooped=0;{let J=k;if(V.duration=J?.duration??-1,V.duration===-1)V.duration=V.loop?Number.MAX_SAFE_INTEGER:(V.buffer[0]?.length??0)/M;e(V,J?.offset,M),n(V,M),V.playhead=V.offset,V.startWhen=J?.when??F,V.stopWhen=V.startWhen+V.duration,V.playedSamples=0,V.state=j.Scheduled}return[{type:"scheduled"}];case"stop":if(V.state===j.Ended||V.state===j.Initial)return[];return V.stopWhen=k??V.stopWhen,V.state=j.Stopped,[{type:"stopped"}];case"pause":return V.state=j.Paused,V.pauseWhen=k??F,[{type:"paused"}];case"resume":return V.state=j.Started,V.startWhen=k??F,[{type:"resume"}];case"dispose":return V.state=j.Disposed,V.buffer=[],V.streamBuffer=i(),[{type:"disposed"}];case"loop":{let J=k,U=V.state;if(J&&(U===j.Scheduled||U===j.Started))V.stopWhen=Number.MAX_SAFE_INTEGER,V.duration=Number.MAX_SAFE_INTEGER;if(V.loop=J,J)n(V,M);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 v0(V,A,F,M,T){let k=[],J=V.state;if(J===j.Disposed)return{keepAlive:!1,messages:k};if(y0(V),J===j.Initial)return{keepAlive:!0,messages:k};if(J===j.Ended)return h(A[0]),{keepAlive:!0,messages:k};if(J===j.Scheduled)if(M.currentTime>=V.startWhen)J=V.state=j.Started,k.push({type:"started"});else return h(A[0]),{keepAlive:!0,messages:k};else if(J===j.Paused){if(M.currentTime>V.pauseWhen)return h(A[0]),{keepAlive:!0,messages:k}}if(M.currentTime>V.stopWhen)return h(A[0]),V.state=j.Ended,k.push({type:"ended"}),V.playedSamples=0,{keepAlive:!0,messages:k};let U=A[0],Q=o(V);if(Q===0)return h(U),{keepAlive:!0,messages:k};let{playbackRate:Y,detune:$,lowpass:X,highpass:v,gain:z,pan:C}=F,{buffer:N,loopStart:K,loopEnd:w,loopCrossfade:P,stopWhen:Z,playedSamples:E,enableLowpass:O,enableHighpass:R,enableGain:d,enablePan:b,enableDetune:c,enableFadeOut:g,enableFadeIn:s,enableLoopStart:t,enableLoopEnd:r,enableLoopCrossfade:p,playhead:D,fadeInDuration:F0,fadeOutDuration:k0}=V,K0=V.streamBuffer.streaming&&V.streamBuffer.committedLength<Q,M0=V.loop&&!K0,u=Math.min(N.length,U.length),W0=V.duration*M.sampleRate,Z0=Math.floor(M.sampleRate*P),q0=Math.max(Q-_,0),L=t?Math.min(Math.floor(K*M.sampleRate),q0):0,x=r?Math.min(Math.floor(w*M.sampleRate),Q):Q,N0=x-L,T0=c&&$.length>0&&$[0]!==0,l=Y;if(T0){let G=Math.max(Y.length,$.length,_);l=new Float32Array(G);for(let W=0;W<G;W++){let I=Y[W]??Y[Y.length-1],H=$[W]??$[$.length-1];l[W]=I*2**(H/1200)}}let J0=V.enablePlaybackRate||T0,O0=J0&&l.length>0&&l.every((G)=>G===0);if(V.streamBuffer.streaming&&!V.streamBuffer.streamEnded&&!V.streamBuffer.lowWaterNotified&&V.streamBuffer.committedLength-Math.floor(D)<V.streamBuffer.lowWaterThreshold)k.push({type:"bufferLowWater",data:{playhead:Math.floor(D),committedLength:V.streamBuffer.committedLength}}),V.streamBuffer.lowWaterNotified=!0;if(O0){h(U);for(let G=1;G<A.length;G++)G0(U,A[G]);return{keepAlive:!0,messages:k}}let Q0={bufferLength:Q,loop:M0,playhead:D,loopStartSamples:L,loopEndSamples:x,durationSamples:W0,playbackRates:l},{indexes:a,ended:U0,looped:X0,playhead:Y0}=J0?x0(Q0):L0(Q0),f=a.find((G)=>G>=V.streamBuffer.committedLength&&G<Q);if(f!==void 0&&!V.streamBuffer.streamEnded&&V.streamBuffer.lastUnderrunSample!==f)k.push({type:"bufferUnderrun",data:{playhead:Math.floor(D),committedLength:V.streamBuffer.committedLength,requestedSample:f}}),V.streamBuffer.lastUnderrunSample=f;else if(f===void 0)V.streamBuffer.lastUnderrunSample=null;m0(U,N,a);let m=Math.min(Math.floor(P*M.sampleRate),N0),D0=M0&&D>L&&D<x,C0=p&&Z0>0&&Q>_;if(D0&&C0){{let G=L+m;if(m>0&&D>L&&D<G){let W=D-L,I=Math.min(Math.floor(G-D),_);for(let H=0;H<I;H++){let B=(W+H)/m,S=Math.cos(Math.PI*B/2),q=Math.floor(x-m+W+H);if(q>=0&&q<Q)for(let y=0;y<u;y++)U[y][H]+=N[y][q]*S}}}{let G=x-m;if(m>0&&D>G&&D<x){let W=D-G,I=Math.min(Math.floor(x-D),_);for(let H=0;H<I;H++){let B=(W+H)/m,S=Math.sin(Math.PI*B/2),q=Math.floor(L+W+H);if(q>=0&&q<Q)for(let y=0;y<u;y++)U[y][H]+=N[y][q]*S}}}}if(s&&F0>0){let G=Math.floor(F0*M.sampleRate),W=G-E;if(W>0){let I=Math.min(W,_);for(let H=0;H<I;H++){let B=(E+H)/G,S=B*B*B;for(let q=0;q<u;q++)U[q][H]*=S}}}if(g&&k0>0){let G=Math.floor(k0*M.sampleRate),W=Math.floor(M.sampleRate*(Z-M.currentTime));if(W<G+_)for(let I=0;I<_;I++){let H=W-I;if(H>=G)continue;let B=H<=0?0:H/G,S=B*B*B;for(let q=0;q<u;q++)U[q][I]*=S}}if(O)d0(U,X,M.sampleRate,T.lowpass);if(R)u0(U,v,M.sampleRate,T.highpass);if(d)g0(U,z);if(u===1)S0(U);if(b)h0(U,C);if(X0)V.timesLooped++,k.push({type:"looped",data:V.timesLooped});if(U0)V.state=j.Ended,k.push({type:"ended"});V.playedSamples+=a.length,V.playhead=Y0;let $0=c0(U);if($0>0)return console.log({numNans:$0,indexes:a,playhead:Y0,ended:U0,looped:X0,sourceLength:Q}),{keepAlive:!0,messages:k};for(let G=1;G<A.length;G++)G0(U,A[G]);return{keepAlive:!0,messages:k}}class z0 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:V0(),highpass:V0()};lastFrameTime=0;constructor(V){super(V);this.properties=j0(V?.processorOptions,sampleRate),this.port.onmessage=(A)=>{if(A.data.type==="transferPort"){let M=A.data.data;M.onmessage=(T)=>{let k=A0(this.properties,T.data,currentTime,sampleRate);for(let J of k)this.port.postMessage(J)};return}let F=A0(this.properties,A.data,currentTime,sampleRate);for(let M of F)this.port.postMessage(M);if(this.properties.state===j.Disposed)this.port.close()}}process(V,A,F){try{let M=v0(this.properties,A,F,{currentTime,currentFrame,sampleRate},this.filterState);for(let k of M.messages)this.port.postMessage(k);let T=currentTime-this.lastFrameTime;return this.lastFrameTime=currentTime,this.port.postMessage({type:"frame",data:[currentTime,currentFrame,Math.floor(this.properties.playhead),T*1000]}),M.keepAlive}catch(M){return this.port.postMessage({type:"processorError",data:{error:String(M),state:this.properties.state,bufferChannels:this.properties.buffer?.length,bufferLength:this.properties.buffer?.[0]?.length,paramKeys:Object.keys(F),hasPlaybackRate:!!F.playbackRate,hasDetune:!!F.detune,hasGain:!!F.gain,hasPan:!!F.pan,outputChannels:A[0]?.length}}),!0}}}registerProcessor("ClipProcessor",z0);
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
2
 
3
- //# debugId=78F68534B0A72CAE64756E2164756E21
3
+ //# debugId=CA160104FA867FAC64756E2164756E21
4
4
  //# sourceMappingURL=processor.js.map
5
- `;var b={Initial:0,Started:1,Stopped:2,Paused:3,Scheduled:4,Ended:5,Disposed:6};var E=128;function X(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:E*4,lowWaterNotified:!1,lastUnderrunSample:null}}function ye(e){return e[0]?.length??0}function H(e){return e.streamBuffer.totalLength??ye(e.buffer)}function Me(e,t){return Array.from({length:e},()=>new Float32Array(t))}function Xe(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 qe(e,t){e.committedLength-Math.floor(t)>=e.lowWaterThreshold&&(e.lowWaterNotified=!1)}function Ye(e,t,a){let o=ye(e.buffer),r=e.buffer.length;if(o>=a&&r>=t)return;let n=Math.max(o,a),s=Math.max(r,t),l=Me(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 je(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);Ye(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=Xe(e.streamBuffer.writtenSpans,{startSample:a,endSample:a+o}),e.streamBuffer.committedLength=He(e.streamBuffer.writtenSpans)),t.streamEnded===!0&&(e.streamBuffer.streamEnded=!0),qe(e.streamBuffer,e.playhead)}function ze(e){if(e.streamBuffer.pendingWrites.length!==0){for(let t of e.streamBuffer.pendingWrites)je(e,t);e.streamBuffer.pendingWrites=[]}}function Ze(e,t){e.buffer=t,e.streamBuffer=X(t)}function et(e={},t){let{buffer:a=[],streamBuffer:o=X(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:S=0,playedSamples:V=0,state:y=b.Initial,timesLooped:L=0,fadeInDuration:g=0,fadeOutDuration:x=0,enableFadeIn:A=g>0,enableFadeOut:F=x>0,enableLoopStart:R=!0,enableLoopEnd:N=!0,enableLoopCrossfade:T=i>0,enableHighpass:W=!0,enableLowpass:v=!0,enableGain:z=!0,enablePan:Z=!0,enableDetune:ee=!0,enablePlaybackRate:te=!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:S,playedSamples:V,state:y,timesLooped:L,fadeInDuration:g,fadeOutDuration:x,enableFadeIn:A,enableFadeOut:F,enableLoopStart:R,enableLoopEnd:N,enableHighpass:W,enableLowpass:v,enableGain:z,enablePan:Z,enableDetune:ee,enablePlaybackRate:te,enableLoopCrossfade:T}}function tt(e,t){return H(e)/t}function Q(e,t){let a=tt(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 re(e,t,a){if(t===void 0)return e.offset=0,0;if(t<0)return re(e,H(e)+t,a);if(t>(H(e)||1)-1)return re(e,H(e)%t,a);let o=Math.floor(t*a);return e.offset=o,o}function at(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 ot(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 nt(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 U(e){for(let t=0;t<e.length;t++)for(let a=0;a<e[t].length;a++)e[t][a]=0}function rt(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 be(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 st(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 lt(){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 it(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 ut(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 ft(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,S=1-Math.cos(u),V=(1-Math.cos(u))/2,y=1+h,L=-2*Math.cos(u),g=1-h,x=m/y,A=S/y,F=V/y,R=L/y,N=g/y;for(let T=0;T<n.length;T++){let W=n[T],v=x*W+A*s+F*l-R*i-N*f;l=s,s=W,f=i,i=v,n[T]=v}}else{let d=t[0];for(let u=0;u<n.length;u++){let h=t[u]??d,m=2*Math.PI*h/a,S=Math.sin(m)/2,V=(1-Math.cos(m))/2,y=1-Math.cos(m),L=(1-Math.cos(m))/2,g=1+S,x=-2*Math.cos(m),A=1-S,F=n[u],R=V/g*F+y/g*s+L/g*l-x/g*i-A/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 dt(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,S=-(1+Math.cos(u)),V=(1+Math.cos(u))/2,y=1+h,L=-2*Math.cos(u),g=1-h;for(let x=0;x<n.length;x++){let A=n[x],F=m/y*A+S/y*s+V/y*l-L/y*i-g/y*f;l=s,s=A,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,S=Math.sin(m)/2,V=(1+Math.cos(m))/2,y=-(1+Math.cos(m)),L=(1+Math.cos(m))/2,g=1+S,x=-2*Math.cos(m),A=1-S,F=n[u],R=V/g*F+y/g*s+L/g*l-x/g*i-A/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 pt(e,t,a,o){let{type:r,data:n}=t;switch(r){case"buffer":return Ze(e,n),Q(e,o),[];case"bufferInit":{let s=n;return e.buffer=Me(s.channels,s.totalLength),e.streamBuffer={...X(),totalLength:s.totalLength,streamEnded:!1,streaming:s.streaming??!0},Q(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=X(),Q(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),re(e,s?.offset,o),Q(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=X(),[{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&&Q(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 ht(e,t,a,o,r){let n=[],s=e.state;if(s===b.Disposed)return{keepAlive:!1,messages:n};if(ze(e),s===b.Initial)return{keepAlive:!0,messages:n};if(s===b.Ended)return U(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 U(t[0]),{keepAlive:!0,messages:n};else if(s===b.Paused&&o.currentTime>e.pauseWhen)return U(t[0]),{keepAlive:!0,messages:n};if(o.currentTime>e.stopWhen)return U(t[0]),e.state=b.Ended,n.push({type:"ended"}),e.playedSamples=0,{keepAlive:!0,messages:n};let l=t[0],i=H(e);if(i===0)return U(l),{keepAlive:!0,messages:n};let{playbackRate:f,detune:d,lowpass:u,highpass:h,gain:m,pan:S}=a,{buffer:V,loopStart:y,loopEnd:L,loopCrossfade:g,stopWhen:x,playedSamples:A,enableLowpass:F,enableHighpass:R,enableGain:N,enablePan:T,enableDetune:W,enableFadeOut:v,enableFadeIn:z,enableLoopStart:Z,enableLoopEnd:ee,enableLoopCrossfade:te,playhead:C,fadeInDuration:se,fadeOutDuration:le}=e,Ee=e.streamBuffer.streaming&&e.streamBuffer.committedLength<i,ie=e.loop&&!Ee,J=Math.min(V.length,l.length),_e=e.duration*o.sampleRate,Te=Math.floor(o.sampleRate*g),De=Math.max(i-E,0),D=Z?Math.min(Math.floor(y*o.sampleRate),De):0,O=ee?Math.min(Math.floor(L*o.sampleRate),i):i,Oe=O-D,ue=W&&d.length>0&&d[0]!==0,$=f;if(ue){let p=Math.max(f.length,d.length,E);$=new Float32Array(p);for(let M=0;M<p;M++){let P=f[M]??f[f.length-1],c=d[M]??d[d.length-1];$[M]=P*2**(c/1200)}}let fe=e.enablePlaybackRate||ue,Ie=fe&&$.length>0&&$.every(p=>p===0);if(e.streamBuffer.streaming&&!e.streamBuffer.streamEnded&&!e.streamBuffer.lowWaterNotified&&e.streamBuffer.committedLength-Math.floor(C)<e.streamBuffer.lowWaterThreshold&&(n.push({type:"bufferLowWater",data:{playhead:Math.floor(C),committedLength:e.streamBuffer.committedLength}}),e.streamBuffer.lowWaterNotified=!0),Ie){U(l);for(let p=1;p<t.length;p++)be(l,t[p]);return{keepAlive:!0,messages:n}}let de={bufferLength:i,loop:ie,playhead:C,loopStartSamples:D,loopEndSamples:O,durationSamples:_e,playbackRates:$},{indexes:q,ended:pe,looped:he,playhead:ce}=fe?ot(de):at(de),G=q.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(C),committedLength:e.streamBuffer.committedLength,requestedSample:G}}),e.streamBuffer.lastUnderrunSample=G):G===void 0&&(e.streamBuffer.lastUnderrunSample=null),nt(l,V,q);let I=Math.min(Math.floor(g*o.sampleRate),Oe),we=ie&&C>D&&C<O,We=te&&Te>0&&i>E;if(we&&We){{let p=D+I;if(I>0&&C>D&&C<p){let M=C-D,P=Math.min(Math.floor(p-C),E);for(let c=0;c<P;c++){let B=(M+c)/I,w=Math.cos(Math.PI*B/2),k=Math.floor(O-I+M+c);if(k>=0&&k<i)for(let _=0;_<J;_++)l[_][c]+=V[_][k]*w}}}{let p=O-I;if(I>0&&C>p&&C<O){let M=C-p,P=Math.min(Math.floor(O-C),E);for(let c=0;c<P;c++){let B=(M+c)/I,w=Math.sin(Math.PI*B/2),k=Math.floor(D+M+c);if(k>=0&&k<i)for(let _=0;_<J;_++)l[_][c]+=V[_][k]*w}}}}if(z&&se>0){let p=Math.floor(se*o.sampleRate),M=p-A;if(M>0){let P=Math.min(M,E);for(let c=0;c<P;c++){let B=(A+c)/p,w=B*B*B;for(let k=0;k<J;k++)l[k][c]*=w}}}if(v&&le>0){let p=Math.floor(le*o.sampleRate),M=Math.floor(o.sampleRate*(x-o.currentTime));if(M<p+E)for(let P=0;P<E;P++){let c=M-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&&ft(l,u,o.sampleRate,r.lowpass),R&&dt(l,h,o.sampleRate,r.highpass),N&&it(l,m),J===1&&rt(l),T&&ut(l,S),he&&(e.timesLooped++,n.push({type:"looped",data:e.timesLooped})),pe&&(e.state=b.Ended,n.push({type:"ended"})),e.playedSamples+=q.length,e.playhead=ce;let me=st(l);if(me>0)return console.log({numNans:me,indexes:q,playhead:ce,ended:pe,looped:he,sourceLength:i}),{keepAlive:!0,messages:n};for(let p=1;p<t.length;p++)be(l,t[p]);return{keepAlive:!0,messages:n}}var Se="0.1.7";var ct="@jadujoel/web-audio-clip-node",mt=Se;function gt(){let e=new Blob([ne],{type:"text/javascript"});return URL.createObjectURL(e)}function bt(e=mt){return`https://cdn.jsdelivr.net/npm/${ct}@${e}/dist/processor.js`}function yt(e=document.baseURI){return new URL("./processor.js",e).toString()}var Mt=120,St=48e3,xe=[{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)."}],ke=[{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}],Ve=[{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."}],xt={key:"playhead",label:"Playhead",min:0,max:48e4,defaultValue:0,precision:1,snap:"int",title:"Current sample position of buffer playback."},Fe=[xt,...xe,...ke,...Ve];function kt(){let e={},t={},a={},o={},r={},n={};for(let s of Fe)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 Vt(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 Ft(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 Ce=[{key:"fadeOutStopDelay",label:"Link StopDelay and FadeOut",controls:["stopDelay","fadeOut"]}],Ae=[{key:"loopStartEnd",label:"Link Start and End",controls:["loopStart","loopEnd"]}],Ct=[...Ce,...Ae];function At(){return{fadeOutStopDelay:!1,loopStartEnd:!1}}function Pe(e){return Ct.find(t=>t.controls[0]===e||t.controls[1]===e)}function Pt(e,t){let a=Pe(e);return a&&t[a.key]?a.controls:[e]}function Lt({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),S=Math.min(Math.max(u,h),m);return{[t]:f+S,[i]:d+S}}var Rt=caches.open("sound-files");async function Bt(e){let t=performance.now(),a=await Rt,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 Et="clip-audio-store";var j="files",Le="last-uploaded";function Re(){return new Promise((e,t)=>{let a=indexedDB.open(Et,1);a.onupgradeneeded=()=>{let o=a.result;o.objectStoreNames.contains(j)||o.createObjectStore(j)},a.onsuccess=()=>e(a.result),a.onerror=()=>t(a.error)})}function Be(e,t){return e.transaction(j,t).objectStore(j)}async function _t(e,t){let a=await Re(),o=Be(a,"readwrite"),r={name:e,arrayBuffer:t};await new Promise((n,s)=>{let l=o.put(r,Le);l.onsuccess=()=>n(),l.onerror=()=>s(l.error)})}async function Tt(){let e=await Re(),t=Be(e,"readonly");return new Promise((a,o)=>{let r=t.get(Le);r.onsuccess=()=>a(r.result??null),r.onerror=()=>o(r.error)})}export{oe as ClipNode,Mt as DEFAULT_TEMPO,E as SAMPLE_BLOCK_SIZE,St as SAMPLE_RATE,b as State,Fe as allDefs,ae as audioBufferFromFloat32Array,kt as buildDefaults,At as buildLinkedControlPairDefaults,xe as controlDefs,lt as createFilterState,ve as dbFromLin,Ke as float32ArrayFromAudioBuffer,Ft as formatTickLabel,Vt as formatValueText,Qe as generateSnapPoints,Pt as getActiveLinkedControls,Pe as getLinkedControlPairForControl,Lt as getLinkedControlUpdates,gt as getProcessorBlobUrl,bt as getProcessorCdnUrl,yt as getProcessorModuleUrl,et as getProperties,$e as getSnappedValue,K as getTempoSnapInterval,pt as handleProcessorMessage,ge as isTempoRelativeSnap,Ue as linFromDb,Bt as loadFromCache,Tt as loadUploadedFile,ke as loopControlDefs,Ae as loopLinkedControlPairs,Ve as paramDefs,Ge as presets,ht as processBlock,ne as processorCode,Je as remapTempoRelativeValue,_t as saveUploadedFile,Ce as transportLinkedControlPairs};
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
6
  //# sourceMappingURL=lib.bundle.js.map