@jadujoel/web-audio-clip-node 0.1.0 → 0.1.2
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.
- package/README.md +9 -3
- package/dist/audio/ClipNode.js +312 -0
- package/dist/audio/processor-code.js +2 -0
- package/dist/audio/processor-kernel.js +861 -0
- package/dist/audio/processor.js +80 -0
- package/dist/audio/types.js +9 -0
- package/dist/audio/utils.js +128 -0
- package/dist/audio/version.d.ts +1 -0
- package/dist/audio/version.js +2 -0
- package/dist/audio/workletUrl.js +17 -0
- package/dist/components/AudioControl.js +99 -0
- package/dist/components/ContextMenu.js +73 -0
- package/dist/components/ControlSection.js +74 -0
- package/dist/components/DetuneControl.js +44 -0
- package/dist/components/DisplayPanel.js +6 -0
- package/dist/components/FilterControl.js +48 -0
- package/dist/components/GainControl.js +44 -0
- package/dist/components/PanControl.js +50 -0
- package/dist/components/PlaybackRateControl.js +44 -0
- package/dist/components/PlayheadSlider.js +20 -0
- package/dist/components/SnappableSlider.js +174 -0
- package/dist/components/TransportButtons.js +9 -0
- package/dist/controls/controlDefs.js +211 -0
- package/dist/controls/formatValueText.js +80 -0
- package/dist/controls/linkedControlPairs.js +51 -0
- package/dist/data/cache.js +17 -0
- package/dist/data/fileStore.js +39 -0
- package/dist/hooks/useClipNode.js +338 -0
- package/dist/lib-react.js +17 -19
- package/dist/lib.bundle.js +6 -0
- package/dist/lib.bundle.js.map +7 -0
- package/dist/lib.js +16 -44
- package/dist/store/clipStore.js +71 -0
- package/examples/README.md +10 -0
- package/examples/cdn-vanilla/README.md +13 -0
- package/examples/cdn-vanilla/index.html +69 -0
- package/examples/esm-bundler/README.md +8 -0
- package/examples/esm-bundler/index.html +12 -0
- package/examples/esm-bundler/node_modules/.package-lock.json +1168 -0
- package/examples/esm-bundler/node_modules/@esbuild/darwin-arm64/README.md +3 -0
- package/examples/esm-bundler/node_modules/@esbuild/darwin-arm64/bin/esbuild +0 -0
- package/examples/esm-bundler/node_modules/@esbuild/darwin-arm64/package.json +20 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/LICENSE +21 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/README.md +91 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.d.ts +86 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/ClipNode.js +312 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.d.ts +1 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-code.js +2 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.d.ts +43 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor-kernel.js +861 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.d.ts +1 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/processor.js +80 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.d.ts +192 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/types.js +9 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.d.ts +22 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/utils.js +128 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.d.ts +1 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/version.js +2 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.d.ts +6 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/audio/workletUrl.js +17 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.d.ts +28 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/AudioControl.js +99 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.d.ts +17 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/ContextMenu.js +73 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.d.ts +26 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/ControlSection.js +74 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.d.ts +10 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/DetuneControl.js +44 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.d.ts +14 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/DisplayPanel.js +6 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.d.ts +12 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/FilterControl.js +48 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.d.ts +10 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/GainControl.js +44 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.d.ts +10 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PanControl.js +50 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.d.ts +10 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlaybackRateControl.js +44 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.d.ts +13 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/PlayheadSlider.js +20 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.d.ts +18 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/SnappableSlider.js +174 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.d.ts +14 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/components/TransportButtons.js +9 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.d.ts +31 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/controlDefs.js +211 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.d.ts +2 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/formatValueText.js +80 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.d.ts +20 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/controls/linkedControlPairs.js +51 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.d.ts +1 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/data/cache.js +17 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.d.ts +6 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/data/fileStore.js +39 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.d.ts +31 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/hooks/useClipNode.js +338 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.d.ts +15 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib-react.js +17 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib.d.ts +16 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/lib.js +16 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js +4 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/processor.js.map +12 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.d.ts +63 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/store/clipStore.js +71 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/dist/styles.css +739 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/README.md +10 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/cdn-vanilla/README.md +13 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/cdn-vanilla/index.html +61 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/esm-bundler/README.md +8 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/esm-bundler/index.html +12 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/esm-bundler/package.json +15 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/esm-bundler/src/main.ts +43 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/react/README.md +10 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/react/index.html +12 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/react/package.json +21 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/react/src/App.tsx +20 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/react/src/main.tsx +9 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/react/vite.config.ts +6 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/self-hosted/README.md +11 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/self-hosted/index.html +12 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/self-hosted/package.json +16 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/self-hosted/public/.gitkeep +1 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/examples/self-hosted/src/main.ts +46 -0
- package/examples/esm-bundler/node_modules/@jadujoel/web-audio-clip-node/package.json +88 -0
- package/examples/esm-bundler/node_modules/@rollup/rollup-darwin-arm64/README.md +3 -0
- package/examples/esm-bundler/node_modules/@rollup/rollup-darwin-arm64/package.json +22 -0
- package/examples/esm-bundler/node_modules/@rollup/rollup-darwin-arm64/rollup.darwin-arm64.node +0 -0
- package/examples/esm-bundler/node_modules/@types/estree/LICENSE +21 -0
- package/examples/esm-bundler/node_modules/@types/estree/README.md +15 -0
- package/examples/esm-bundler/node_modules/@types/estree/flow.d.ts +167 -0
- package/examples/esm-bundler/node_modules/@types/estree/index.d.ts +694 -0
- package/examples/esm-bundler/node_modules/@types/estree/package.json +27 -0
- package/examples/esm-bundler/node_modules/esbuild/LICENSE.md +21 -0
- package/examples/esm-bundler/node_modules/esbuild/README.md +3 -0
- package/examples/esm-bundler/node_modules/esbuild/bin/esbuild +0 -0
- package/examples/esm-bundler/node_modules/esbuild/install.js +289 -0
- package/examples/esm-bundler/node_modules/esbuild/lib/main.d.ts +716 -0
- package/examples/esm-bundler/node_modules/esbuild/lib/main.js +2242 -0
- package/examples/esm-bundler/node_modules/esbuild/package.json +49 -0
- package/examples/esm-bundler/node_modules/fdir/LICENSE +7 -0
- package/examples/esm-bundler/node_modules/fdir/README.md +91 -0
- package/examples/esm-bundler/node_modules/fdir/dist/index.cjs +588 -0
- package/examples/esm-bundler/node_modules/fdir/dist/index.d.cts +155 -0
- package/examples/esm-bundler/node_modules/fdir/dist/index.d.mts +155 -0
- package/examples/esm-bundler/node_modules/fdir/dist/index.mjs +570 -0
- package/examples/esm-bundler/node_modules/fdir/package.json +103 -0
- package/examples/esm-bundler/node_modules/nanoid/LICENSE +20 -0
- package/examples/esm-bundler/node_modules/nanoid/README.md +39 -0
- package/examples/esm-bundler/node_modules/nanoid/async/index.browser.cjs +69 -0
- package/examples/esm-bundler/node_modules/nanoid/async/index.browser.js +34 -0
- package/examples/esm-bundler/node_modules/nanoid/async/index.cjs +71 -0
- package/examples/esm-bundler/node_modules/nanoid/async/index.d.ts +56 -0
- package/examples/esm-bundler/node_modules/nanoid/async/index.js +35 -0
- package/examples/esm-bundler/node_modules/nanoid/async/index.native.js +26 -0
- package/examples/esm-bundler/node_modules/nanoid/async/package.json +12 -0
- package/examples/esm-bundler/node_modules/nanoid/bin/nanoid.cjs +55 -0
- package/examples/esm-bundler/node_modules/nanoid/index.browser.cjs +72 -0
- package/examples/esm-bundler/node_modules/nanoid/index.browser.js +34 -0
- package/examples/esm-bundler/node_modules/nanoid/index.cjs +85 -0
- package/examples/esm-bundler/node_modules/nanoid/index.d.cts +91 -0
- package/examples/esm-bundler/node_modules/nanoid/index.d.ts +91 -0
- package/examples/esm-bundler/node_modules/nanoid/index.js +45 -0
- package/examples/esm-bundler/node_modules/nanoid/nanoid.js +1 -0
- package/examples/esm-bundler/node_modules/nanoid/non-secure/index.cjs +34 -0
- package/examples/esm-bundler/node_modules/nanoid/non-secure/index.d.ts +33 -0
- package/examples/esm-bundler/node_modules/nanoid/non-secure/index.js +21 -0
- package/examples/esm-bundler/node_modules/nanoid/non-secure/package.json +6 -0
- package/examples/esm-bundler/node_modules/nanoid/package.json +89 -0
- package/examples/esm-bundler/node_modules/nanoid/url-alphabet/index.cjs +7 -0
- package/examples/esm-bundler/node_modules/nanoid/url-alphabet/index.js +3 -0
- package/examples/esm-bundler/node_modules/nanoid/url-alphabet/package.json +6 -0
- package/examples/esm-bundler/node_modules/picocolors/LICENSE +15 -0
- package/examples/esm-bundler/node_modules/picocolors/README.md +21 -0
- package/examples/esm-bundler/node_modules/picocolors/package.json +25 -0
- package/examples/esm-bundler/node_modules/picocolors/picocolors.browser.js +4 -0
- package/examples/esm-bundler/node_modules/picocolors/picocolors.d.ts +5 -0
- package/examples/esm-bundler/node_modules/picocolors/picocolors.js +75 -0
- package/examples/esm-bundler/node_modules/picocolors/types.d.ts +51 -0
- package/examples/esm-bundler/node_modules/picomatch/LICENSE +21 -0
- package/examples/esm-bundler/node_modules/picomatch/README.md +749 -0
- package/examples/esm-bundler/node_modules/picomatch/index.js +17 -0
- package/examples/esm-bundler/node_modules/picomatch/lib/constants.js +184 -0
- package/examples/esm-bundler/node_modules/picomatch/lib/parse.js +1386 -0
- package/examples/esm-bundler/node_modules/picomatch/lib/picomatch.js +349 -0
- package/examples/esm-bundler/node_modules/picomatch/lib/scan.js +391 -0
- package/examples/esm-bundler/node_modules/picomatch/lib/utils.js +72 -0
- package/examples/esm-bundler/node_modules/picomatch/package.json +82 -0
- package/examples/esm-bundler/node_modules/picomatch/posix.js +3 -0
- package/examples/esm-bundler/node_modules/postcss/LICENSE +20 -0
- package/examples/esm-bundler/node_modules/postcss/README.md +28 -0
- package/examples/esm-bundler/node_modules/postcss/lib/at-rule.d.ts +139 -0
- package/examples/esm-bundler/node_modules/postcss/lib/at-rule.js +25 -0
- package/examples/esm-bundler/node_modules/postcss/lib/comment.d.ts +67 -0
- package/examples/esm-bundler/node_modules/postcss/lib/comment.js +13 -0
- package/examples/esm-bundler/node_modules/postcss/lib/container.d.ts +478 -0
- package/examples/esm-bundler/node_modules/postcss/lib/container.js +447 -0
- package/examples/esm-bundler/node_modules/postcss/lib/css-syntax-error.d.ts +247 -0
- package/examples/esm-bundler/node_modules/postcss/lib/css-syntax-error.js +133 -0
- package/examples/esm-bundler/node_modules/postcss/lib/declaration.d.ts +150 -0
- package/examples/esm-bundler/node_modules/postcss/lib/declaration.js +24 -0
- package/examples/esm-bundler/node_modules/postcss/lib/document.d.ts +68 -0
- package/examples/esm-bundler/node_modules/postcss/lib/document.js +33 -0
- package/examples/esm-bundler/node_modules/postcss/lib/fromJSON.d.ts +9 -0
- package/examples/esm-bundler/node_modules/postcss/lib/fromJSON.js +54 -0
- package/examples/esm-bundler/node_modules/postcss/lib/input.d.ts +226 -0
- package/examples/esm-bundler/node_modules/postcss/lib/input.js +273 -0
- package/examples/esm-bundler/node_modules/postcss/lib/lazy-result.d.ts +189 -0
- package/examples/esm-bundler/node_modules/postcss/lib/lazy-result.js +550 -0
- package/examples/esm-bundler/node_modules/postcss/lib/list.d.ts +60 -0
- package/examples/esm-bundler/node_modules/postcss/lib/list.js +58 -0
- package/examples/esm-bundler/node_modules/postcss/lib/map-generator.js +376 -0
- package/examples/esm-bundler/node_modules/postcss/lib/no-work-result.d.ts +45 -0
- package/examples/esm-bundler/node_modules/postcss/lib/no-work-result.js +137 -0
- package/examples/esm-bundler/node_modules/postcss/lib/node.d.ts +555 -0
- package/examples/esm-bundler/node_modules/postcss/lib/node.js +449 -0
- package/examples/esm-bundler/node_modules/postcss/lib/parse.d.ts +9 -0
- package/examples/esm-bundler/node_modules/postcss/lib/parse.js +42 -0
- package/examples/esm-bundler/node_modules/postcss/lib/parser.js +611 -0
- package/examples/esm-bundler/node_modules/postcss/lib/postcss.d.mts +66 -0
- package/examples/esm-bundler/node_modules/postcss/lib/postcss.d.ts +456 -0
- package/examples/esm-bundler/node_modules/postcss/lib/postcss.js +101 -0
- package/examples/esm-bundler/node_modules/postcss/lib/postcss.mjs +30 -0
- package/examples/esm-bundler/node_modules/postcss/lib/previous-map.d.ts +80 -0
- package/examples/esm-bundler/node_modules/postcss/lib/previous-map.js +145 -0
- package/examples/esm-bundler/node_modules/postcss/lib/processor.d.ts +114 -0
- package/examples/esm-bundler/node_modules/postcss/lib/processor.js +67 -0
- package/examples/esm-bundler/node_modules/postcss/lib/result.d.ts +204 -0
- package/examples/esm-bundler/node_modules/postcss/lib/result.js +42 -0
- package/examples/esm-bundler/node_modules/postcss/lib/root.d.ts +86 -0
- package/examples/esm-bundler/node_modules/postcss/lib/root.js +61 -0
- package/examples/esm-bundler/node_modules/postcss/lib/rule.d.ts +126 -0
- package/examples/esm-bundler/node_modules/postcss/lib/rule.js +27 -0
- package/examples/esm-bundler/node_modules/postcss/lib/stringifier.d.ts +45 -0
- package/examples/esm-bundler/node_modules/postcss/lib/stringifier.js +353 -0
- package/examples/esm-bundler/node_modules/postcss/lib/stringify.d.ts +9 -0
- package/examples/esm-bundler/node_modules/postcss/lib/stringify.js +11 -0
- package/examples/esm-bundler/node_modules/postcss/lib/symbols.js +5 -0
- package/examples/esm-bundler/node_modules/postcss/lib/terminal-highlight.js +70 -0
- package/examples/esm-bundler/node_modules/postcss/lib/tokenize.js +266 -0
- package/examples/esm-bundler/node_modules/postcss/lib/warn-once.js +13 -0
- package/examples/esm-bundler/node_modules/postcss/lib/warning.d.ts +146 -0
- package/examples/esm-bundler/node_modules/postcss/lib/warning.js +37 -0
- package/examples/esm-bundler/node_modules/postcss/package.json +88 -0
- package/examples/esm-bundler/node_modules/rollup/LICENSE.md +679 -0
- package/examples/esm-bundler/node_modules/rollup/README.md +134 -0
- package/examples/esm-bundler/node_modules/rollup/dist/bin/rollup +1912 -0
- package/examples/esm-bundler/node_modules/rollup/dist/es/getLogFilter.js +64 -0
- package/examples/esm-bundler/node_modules/rollup/dist/es/package.json +1 -0
- package/examples/esm-bundler/node_modules/rollup/dist/es/parseAst.js +12 -0
- package/examples/esm-bundler/node_modules/rollup/dist/es/rollup.js +17 -0
- package/examples/esm-bundler/node_modules/rollup/dist/es/shared/node-entry.js +24463 -0
- package/examples/esm-bundler/node_modules/rollup/dist/es/shared/parseAst.js +2124 -0
- package/examples/esm-bundler/node_modules/rollup/dist/es/shared/watch.js +9909 -0
- package/examples/esm-bundler/node_modules/rollup/dist/getLogFilter.d.ts +5 -0
- package/examples/esm-bundler/node_modules/rollup/dist/getLogFilter.js +69 -0
- package/examples/esm-bundler/node_modules/rollup/dist/loadConfigFile.d.ts +20 -0
- package/examples/esm-bundler/node_modules/rollup/dist/loadConfigFile.js +29 -0
- package/examples/esm-bundler/node_modules/rollup/dist/native.js +161 -0
- package/examples/esm-bundler/node_modules/rollup/dist/parseAst.d.ts +4 -0
- package/examples/esm-bundler/node_modules/rollup/dist/parseAst.js +22 -0
- package/examples/esm-bundler/node_modules/rollup/dist/rollup.d.ts +1225 -0
- package/examples/esm-bundler/node_modules/rollup/dist/rollup.js +127 -0
- package/examples/esm-bundler/node_modules/rollup/dist/shared/fsevents-importer.js +37 -0
- package/examples/esm-bundler/node_modules/rollup/dist/shared/index.js +9615 -0
- package/examples/esm-bundler/node_modules/rollup/dist/shared/loadConfigFile.js +572 -0
- package/examples/esm-bundler/node_modules/rollup/dist/shared/parseAst.js +2361 -0
- package/examples/esm-bundler/node_modules/rollup/dist/shared/rollup.js +24385 -0
- package/examples/esm-bundler/node_modules/rollup/dist/shared/watch-cli.js +542 -0
- package/examples/esm-bundler/node_modules/rollup/dist/shared/watch.js +324 -0
- package/examples/esm-bundler/node_modules/rollup/package.json +289 -0
- package/examples/esm-bundler/node_modules/source-map-js/LICENSE +28 -0
- package/examples/esm-bundler/node_modules/source-map-js/README.md +765 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/array-set.js +121 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/base64.js +67 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/source-node.d.ts +1 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/source-node.js +413 -0
- package/examples/esm-bundler/node_modules/source-map-js/lib/util.js +594 -0
- package/examples/esm-bundler/node_modules/source-map-js/package.json +71 -0
- package/examples/esm-bundler/node_modules/source-map-js/source-map.d.ts +104 -0
- package/examples/esm-bundler/node_modules/source-map-js/source-map.js +8 -0
- package/examples/esm-bundler/node_modules/tinyglobby/LICENSE +21 -0
- package/examples/esm-bundler/node_modules/tinyglobby/README.md +25 -0
- package/examples/esm-bundler/node_modules/tinyglobby/dist/index.cjs +334 -0
- package/examples/esm-bundler/node_modules/tinyglobby/dist/index.d.cts +148 -0
- package/examples/esm-bundler/node_modules/tinyglobby/dist/index.d.mts +148 -0
- package/examples/esm-bundler/node_modules/tinyglobby/dist/index.mjs +306 -0
- package/examples/esm-bundler/node_modules/tinyglobby/package.json +73 -0
- package/examples/esm-bundler/node_modules/vite/LICENSE.md +2406 -0
- package/examples/esm-bundler/node_modules/vite/README.md +20 -0
- package/examples/esm-bundler/node_modules/vite/bin/openChrome.applescript +95 -0
- package/examples/esm-bundler/node_modules/vite/bin/vite.js +79 -0
- package/examples/esm-bundler/node_modules/vite/client.d.ts +279 -0
- package/examples/esm-bundler/node_modules/vite/dist/client/client.mjs +1134 -0
- package/examples/esm-bundler/node_modules/vite/dist/client/env.mjs +24 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/chunks/dep-3RmXg9uo.js +553 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/chunks/dep-4-IQbZQm.js +822 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/chunks/dep-CvfTChi5.js +8218 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/chunks/dep-Dq2t6Dq0.js +49565 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/chunks/dep-lpEPC2f9.js +7113 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/cli.js +949 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/constants.js +149 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/index.d.ts +4227 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/index.js +194 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/module-runner.d.ts +290 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/module-runner.js +1311 -0
- package/examples/esm-bundler/node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf.d.ts +87 -0
- package/examples/esm-bundler/node_modules/vite/dist/node-cjs/publicUtils.cjs +3987 -0
- package/examples/esm-bundler/node_modules/vite/index.cjs +96 -0
- package/examples/esm-bundler/node_modules/vite/index.d.cts +6 -0
- package/examples/esm-bundler/node_modules/vite/misc/false.js +1 -0
- package/examples/esm-bundler/node_modules/vite/misc/true.js +1 -0
- package/examples/esm-bundler/node_modules/vite/package.json +204 -0
- package/examples/esm-bundler/node_modules/vite/types/customEvent.d.ts +45 -0
- package/examples/esm-bundler/node_modules/vite/types/hmrPayload.d.ts +74 -0
- package/examples/esm-bundler/node_modules/vite/types/hot.d.ts +39 -0
- package/examples/esm-bundler/node_modules/vite/types/import-meta.d.ts +5 -0
- package/examples/esm-bundler/node_modules/vite/types/importGlob.d.ts +75 -0
- package/examples/esm-bundler/node_modules/vite/types/importMeta.d.ts +31 -0
- package/examples/esm-bundler/node_modules/vite/types/internal/cssPreprocessorOptions.d.ts +63 -0
- package/examples/esm-bundler/node_modules/vite/types/internal/lightningcssOptions.d.ts +18 -0
- package/examples/esm-bundler/node_modules/vite/types/metadata.d.ts +35 -0
- package/examples/esm-bundler/node_modules/vite/types/package.json +4 -0
- package/examples/esm-bundler/package-lock.json +1127 -0
- package/examples/esm-bundler/package.json +15 -0
- package/examples/esm-bundler/src/main.ts +43 -0
- package/examples/react/README.md +10 -0
- package/examples/react/index.html +12 -0
- package/examples/react/package.json +19 -0
- package/examples/react/src/App.tsx +20 -0
- package/examples/react/src/main.tsx +9 -0
- package/examples/self-hosted/README.md +11 -0
- package/examples/self-hosted/index.html +12 -0
- package/examples/self-hosted/package.json +16 -0
- package/examples/self-hosted/public/.gitkeep +1 -0
- package/examples/self-hosted/src/main.ts +46 -0
- package/package.json +4 -2
- package/dist/lib-react.js.map +0 -9
- package/dist/lib.js.map +0 -9
package/README.md
CHANGED
|
@@ -62,10 +62,15 @@ function Player() {
|
|
|
62
62
|
|
|
63
63
|
```html
|
|
64
64
|
<script type="module">
|
|
65
|
+
import { ClipNode, getProcessorCdnUrl } from "https://cdn.jsdelivr.net/npm/@jadujoel/web-audio-clip-node@0.1.1/dist/lib.bundle.js";
|
|
66
|
+
|
|
65
67
|
const ctx = new AudioContext();
|
|
66
|
-
await ctx.audioWorklet.addModule(
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
await ctx.audioWorklet.addModule(getProcessorCdnUrl());
|
|
69
|
+
|
|
70
|
+
const clip = new ClipNode(ctx, {
|
|
71
|
+
processorOptions: { sampleRate: ctx.sampleRate },
|
|
72
|
+
});
|
|
73
|
+
clip.connect(ctx.destination);
|
|
69
74
|
</script>
|
|
70
75
|
```
|
|
71
76
|
|
|
@@ -82,6 +87,7 @@ function Player() {
|
|
|
82
87
|
| Entry point | Import path | Contents |
|
|
83
88
|
|-------------|-------------|----------|
|
|
84
89
|
| Core | `@jadujoel/web-audio-clip-node` | `ClipNode`, types, utils, controls, processor kernel |
|
|
90
|
+
| Bundle | `@jadujoel/web-audio-clip-node/bundle` | Single-file ESM bundle for CDN / `<script type="module">` |
|
|
85
91
|
| React | `@jadujoel/web-audio-clip-node/react` | Store, hooks, UI components |
|
|
86
92
|
| Processor | `@jadujoel/web-audio-clip-node/processor` | Standalone worklet script |
|
|
87
93
|
| Styles | `@jadujoel/web-audio-clip-node/styles.css` | CSS for React components |
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import { audioBufferFromFloat32Array } from "./utils";
|
|
2
|
+
export class ClipNode extends AudioWorkletNode {
|
|
3
|
+
onscheduled;
|
|
4
|
+
onstarted;
|
|
5
|
+
onpaused;
|
|
6
|
+
onresumed;
|
|
7
|
+
onended;
|
|
8
|
+
onlooped;
|
|
9
|
+
onstopped;
|
|
10
|
+
onframe;
|
|
11
|
+
ondisposed;
|
|
12
|
+
onstatechange;
|
|
13
|
+
_buffer;
|
|
14
|
+
_loopStart = 0;
|
|
15
|
+
_loopEnd = 0;
|
|
16
|
+
_loop = false;
|
|
17
|
+
_offset = 0;
|
|
18
|
+
_playhead = 0;
|
|
19
|
+
_fadeIn = 0;
|
|
20
|
+
_fadeOut = 0;
|
|
21
|
+
_loopCrossfade = 0;
|
|
22
|
+
_duration = -1;
|
|
23
|
+
_previousState = "initial";
|
|
24
|
+
_bufferWriteCursor = 0;
|
|
25
|
+
timesLooped = 0;
|
|
26
|
+
state = "initial";
|
|
27
|
+
cpu = 0;
|
|
28
|
+
constructor(context, options = {}) {
|
|
29
|
+
super(context, "ClipProcessor", {
|
|
30
|
+
numberOfInputs: options.numberOfInputs ?? 0,
|
|
31
|
+
outputChannelCount: options.outputChannelCount ?? [2],
|
|
32
|
+
processorOptions: options.processorOptions,
|
|
33
|
+
channelCount: options.channelCount,
|
|
34
|
+
channelCountMode: options.channelCountMode,
|
|
35
|
+
channelInterpretation: options.channelInterpretation,
|
|
36
|
+
numberOfOutputs: options.numberOfOutputs,
|
|
37
|
+
parameterData: options.parameterData,
|
|
38
|
+
});
|
|
39
|
+
this._buffer = audioBufferFromFloat32Array(this.context, options.processorOptions?.buffer);
|
|
40
|
+
this.port.onmessage = this.handleMessage;
|
|
41
|
+
}
|
|
42
|
+
handleMessage = (message) => {
|
|
43
|
+
const { type, data } = message.data;
|
|
44
|
+
switch (type) {
|
|
45
|
+
case "frame": {
|
|
46
|
+
const [_ct, _cf, ph, tt] = data;
|
|
47
|
+
this._playhead = ph;
|
|
48
|
+
this.cpu = tt;
|
|
49
|
+
this.onframe?.(data);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case "scheduled":
|
|
53
|
+
this.setState("scheduled");
|
|
54
|
+
this.onscheduled?.();
|
|
55
|
+
break;
|
|
56
|
+
case "started":
|
|
57
|
+
this.setState("started");
|
|
58
|
+
this.onstarted?.();
|
|
59
|
+
break;
|
|
60
|
+
case "stopped":
|
|
61
|
+
this.setState("stopped");
|
|
62
|
+
this.onstopped?.();
|
|
63
|
+
break;
|
|
64
|
+
case "paused":
|
|
65
|
+
this.setState("paused");
|
|
66
|
+
this.onpaused?.();
|
|
67
|
+
break;
|
|
68
|
+
case "resume":
|
|
69
|
+
this.setState("resumed");
|
|
70
|
+
this.onresumed?.();
|
|
71
|
+
break;
|
|
72
|
+
case "ended":
|
|
73
|
+
this.setState("ended");
|
|
74
|
+
this.onended?.();
|
|
75
|
+
break;
|
|
76
|
+
case "looped":
|
|
77
|
+
this.timesLooped++;
|
|
78
|
+
this.onlooped?.();
|
|
79
|
+
break;
|
|
80
|
+
case "disposed":
|
|
81
|
+
this.setState("disposed");
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
setState(newState) {
|
|
86
|
+
this._previousState = this.state;
|
|
87
|
+
this.state = newState;
|
|
88
|
+
if (this.state !== this._previousState) {
|
|
89
|
+
this.onstatechange?.(this.state);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
toggleGain(value = true) {
|
|
93
|
+
this.port.postMessage({ type: "toggleGain", data: value });
|
|
94
|
+
}
|
|
95
|
+
togglePlaybackRate(value = true) {
|
|
96
|
+
this.port.postMessage({ type: "togglePlaybackRate", data: value });
|
|
97
|
+
}
|
|
98
|
+
toggleDetune(value = true) {
|
|
99
|
+
this.port.postMessage({ type: "toggleDetune", data: value });
|
|
100
|
+
}
|
|
101
|
+
togglePan(value = true) {
|
|
102
|
+
this.port.postMessage({ type: "togglePan", data: value });
|
|
103
|
+
}
|
|
104
|
+
toggleHighpass(value = true) {
|
|
105
|
+
this.port.postMessage({ type: "toggleHighpass", data: value });
|
|
106
|
+
}
|
|
107
|
+
toggleLowpass(value = true) {
|
|
108
|
+
this.port.postMessage({ type: "toggleLowpass", data: value });
|
|
109
|
+
}
|
|
110
|
+
toggleFadeIn(value = true) {
|
|
111
|
+
this.port.postMessage({ type: "toggleFadeIn", data: value });
|
|
112
|
+
}
|
|
113
|
+
toggleFadeOut(value = true) {
|
|
114
|
+
this.port.postMessage({ type: "toggleFadeOut", data: value });
|
|
115
|
+
}
|
|
116
|
+
toggleLoopCrossfade(value = true) {
|
|
117
|
+
this.port.postMessage({ type: "toggleLoopCrossfade", data: value });
|
|
118
|
+
}
|
|
119
|
+
toggleLoopStart(value = true) {
|
|
120
|
+
this.port.postMessage({ type: "toggleLoopStart", data: value });
|
|
121
|
+
}
|
|
122
|
+
toggleLoopEnd(value = true) {
|
|
123
|
+
this.port.postMessage({ type: "toggleLoopEnd", data: value });
|
|
124
|
+
}
|
|
125
|
+
logState() {
|
|
126
|
+
this.port.postMessage({ type: "logState" });
|
|
127
|
+
}
|
|
128
|
+
get buffer() {
|
|
129
|
+
return this._buffer;
|
|
130
|
+
}
|
|
131
|
+
set buffer(ab) {
|
|
132
|
+
this._buffer = ab;
|
|
133
|
+
this._bufferWriteCursor = ab.length;
|
|
134
|
+
if (this._loopStart >= ab.duration) {
|
|
135
|
+
this._loopStart = 0;
|
|
136
|
+
}
|
|
137
|
+
if (this._loopEnd <= this._loopStart || this._loopEnd > ab.duration) {
|
|
138
|
+
this._loopEnd = ab.duration;
|
|
139
|
+
}
|
|
140
|
+
const data = ab.numberOfChannels === 1
|
|
141
|
+
? [ab.getChannelData(0)]
|
|
142
|
+
: [ab.getChannelData(0), ab.getChannelData(1)];
|
|
143
|
+
this.port.postMessage({ type: "buffer", data });
|
|
144
|
+
this.port.postMessage({ type: "loopStart", data: this._loopStart });
|
|
145
|
+
this.port.postMessage({ type: "loopEnd", data: this._loopEnd });
|
|
146
|
+
}
|
|
147
|
+
initializeBuffer(totalLength, channels, options = {}) {
|
|
148
|
+
this._buffer = this.context.createBuffer(channels, totalLength, this.context.sampleRate);
|
|
149
|
+
this._bufferWriteCursor = 0;
|
|
150
|
+
const duration = totalLength / this.context.sampleRate;
|
|
151
|
+
if (this._loopStart >= duration) {
|
|
152
|
+
this._loopStart = 0;
|
|
153
|
+
}
|
|
154
|
+
if (this._loopEnd <= this._loopStart || this._loopEnd > duration) {
|
|
155
|
+
this._loopEnd = duration;
|
|
156
|
+
}
|
|
157
|
+
this.port.postMessage({
|
|
158
|
+
type: "bufferInit",
|
|
159
|
+
data: {
|
|
160
|
+
channels,
|
|
161
|
+
totalLength,
|
|
162
|
+
streaming: options.streaming ?? true,
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
this.port.postMessage({ type: "loopStart", data: this._loopStart });
|
|
166
|
+
this.port.postMessage({ type: "loopEnd", data: this._loopEnd });
|
|
167
|
+
}
|
|
168
|
+
replaceBufferRange(startSample, channelData, options = {}) {
|
|
169
|
+
this.port.postMessage({
|
|
170
|
+
type: "bufferRange",
|
|
171
|
+
data: {
|
|
172
|
+
startSample,
|
|
173
|
+
channelData,
|
|
174
|
+
totalLength: options.totalLength,
|
|
175
|
+
streamEnded: options.streamEnded,
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
this._bufferWriteCursor = Math.max(this._bufferWriteCursor, startSample + (channelData[0]?.length ?? 0));
|
|
179
|
+
}
|
|
180
|
+
appendBufferRange(channelData, options = {}) {
|
|
181
|
+
this.replaceBufferRange(this._bufferWriteCursor, channelData, options);
|
|
182
|
+
}
|
|
183
|
+
finalizeBuffer(totalLength) {
|
|
184
|
+
this.port.postMessage({ type: "bufferEnd", data: { totalLength } });
|
|
185
|
+
}
|
|
186
|
+
start(when, offset, duration) {
|
|
187
|
+
if (!this._buffer) {
|
|
188
|
+
console.error("Buffer not set.");
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
this.port.postMessage({ type: "start", data: { when, offset, duration } });
|
|
192
|
+
}
|
|
193
|
+
stop(when = this.context.currentTime, initialDelay = 0) {
|
|
194
|
+
this.port.postMessage({
|
|
195
|
+
type: "stop",
|
|
196
|
+
data: when + initialDelay + this._fadeOut + 0.2,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
pause(when = this.context.currentTime) {
|
|
200
|
+
this.port.postMessage({ type: "pause", data: when });
|
|
201
|
+
}
|
|
202
|
+
resume(when = this.context.currentTime) {
|
|
203
|
+
this.port.postMessage({ type: "resume", data: when });
|
|
204
|
+
}
|
|
205
|
+
get loop() {
|
|
206
|
+
return this._loop;
|
|
207
|
+
}
|
|
208
|
+
set loop(value) {
|
|
209
|
+
if (this._loop !== value) {
|
|
210
|
+
this._loop = value;
|
|
211
|
+
this.port.postMessage({ type: "loop", data: value });
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
get loopStart() {
|
|
215
|
+
return this._loopStart;
|
|
216
|
+
}
|
|
217
|
+
set loopStart(value) {
|
|
218
|
+
if (value !== this._loopStart) {
|
|
219
|
+
this._loopStart = value;
|
|
220
|
+
this.port.postMessage({ type: "loopStart", data: value });
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
get loopEnd() {
|
|
224
|
+
return this._loopEnd;
|
|
225
|
+
}
|
|
226
|
+
set loopEnd(value) {
|
|
227
|
+
if (value !== this._loopEnd) {
|
|
228
|
+
this._loopEnd = value;
|
|
229
|
+
this.port.postMessage({ type: "loopEnd", data: value });
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
get duration() {
|
|
233
|
+
return this._duration ?? this._buffer?.duration ?? -1;
|
|
234
|
+
}
|
|
235
|
+
set duration(value) {
|
|
236
|
+
this._duration = value;
|
|
237
|
+
}
|
|
238
|
+
get offset() {
|
|
239
|
+
return this._offset;
|
|
240
|
+
}
|
|
241
|
+
set offset(value) {
|
|
242
|
+
this._offset = value;
|
|
243
|
+
}
|
|
244
|
+
get playhead() {
|
|
245
|
+
return this._playhead;
|
|
246
|
+
}
|
|
247
|
+
set playhead(value) {
|
|
248
|
+
this.port.postMessage({ type: "playhead", data: value });
|
|
249
|
+
}
|
|
250
|
+
get playbackRate() {
|
|
251
|
+
// biome-ignore lint/style/noNonNullAssertion: it is definitely set in the processor
|
|
252
|
+
return this.parameters.get("playbackRate");
|
|
253
|
+
}
|
|
254
|
+
get detune() {
|
|
255
|
+
// biome-ignore lint/style/noNonNullAssertion: it is definitely set in the processor
|
|
256
|
+
return this.parameters.get("detune");
|
|
257
|
+
}
|
|
258
|
+
get highpass() {
|
|
259
|
+
// biome-ignore lint/style/noNonNullAssertion: it is definitely set in the processor
|
|
260
|
+
return this.parameters.get("highpass");
|
|
261
|
+
}
|
|
262
|
+
get lowpass() {
|
|
263
|
+
// biome-ignore lint/style/noNonNullAssertion: it is definitely set in the processor
|
|
264
|
+
return this.parameters.get("lowpass");
|
|
265
|
+
}
|
|
266
|
+
get gain() {
|
|
267
|
+
// biome-ignore lint/style/noNonNullAssertion: it is definitely set in the processor
|
|
268
|
+
return this.parameters.get("gain");
|
|
269
|
+
}
|
|
270
|
+
get pan() {
|
|
271
|
+
// biome-ignore lint/style/noNonNullAssertion: it is definitely set in the processor
|
|
272
|
+
return this.parameters.get("pan");
|
|
273
|
+
}
|
|
274
|
+
get fadeIn() {
|
|
275
|
+
return this._fadeIn;
|
|
276
|
+
}
|
|
277
|
+
set fadeIn(value) {
|
|
278
|
+
this._fadeIn = value;
|
|
279
|
+
this.port.postMessage({ type: "fadeIn", data: value });
|
|
280
|
+
}
|
|
281
|
+
get fadeOut() {
|
|
282
|
+
return this._fadeOut;
|
|
283
|
+
}
|
|
284
|
+
set fadeOut(value) {
|
|
285
|
+
this._fadeOut = value;
|
|
286
|
+
this.port.postMessage({ type: "fadeOut", data: value });
|
|
287
|
+
}
|
|
288
|
+
get loopCrossfade() {
|
|
289
|
+
return this._loopCrossfade;
|
|
290
|
+
}
|
|
291
|
+
set loopCrossfade(value) {
|
|
292
|
+
this._loopCrossfade = value;
|
|
293
|
+
this.port.postMessage({ type: "loopCrossfade", data: value });
|
|
294
|
+
}
|
|
295
|
+
dispose() {
|
|
296
|
+
this.port.postMessage({ type: "dispose" });
|
|
297
|
+
this.port.close();
|
|
298
|
+
this.ondisposed?.();
|
|
299
|
+
this._buffer = undefined;
|
|
300
|
+
this.onended = undefined;
|
|
301
|
+
this.onframe = undefined;
|
|
302
|
+
this.onlooped = undefined;
|
|
303
|
+
this.onpaused = undefined;
|
|
304
|
+
this.onresumed = undefined;
|
|
305
|
+
this.onstarted = undefined;
|
|
306
|
+
this.onstopped = undefined;
|
|
307
|
+
this.onscheduled = undefined;
|
|
308
|
+
this.onstatechange = undefined;
|
|
309
|
+
this.ondisposed = undefined;
|
|
310
|
+
this.state = "disposed";
|
|
311
|
+
}
|
|
312
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// AUTO-GENERATED — do not edit. Run 'bun run build:lib' to regenerate.
|
|
2
|
+
export const processorCode = "var z={Initial:0,Started:1,Stopped:2,Paused:3,Scheduled:4,Ended:5,Disposed:6};var y=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:y*4,lowWaterNotified:!1,lastUnderrunSample:null}}function M0(V){return V[0]?.length??0}function o(V){return V.streamBuffer.totalLength??M0(V.buffer)}function G0(V,A){return Array.from({length:V},()=>new Float32Array(A))}function E0(V,A){let F=[...V,A].sort((Q,J)=>Q.startSample-J.startSample),T=[];for(let Q of F){let J=T[T.length-1];if(!J||Q.startSample>J.endSample){T.push({...Q});continue}J.endSample=Math.max(J.endSample,Q.endSample)}return T}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 T=M0(V.buffer),Q=V.buffer.length;if(T>=F&&Q>=A)return;let J=Math.max(T,F),U=Math.max(Q,A),Y=G0(U,J);for(let X=0;X<Q;X++)Y[X].set(V.buffer[X].subarray(0,T));if(V.buffer=Y,V.streamBuffer.totalLength==null||V.streamBuffer.totalLength<J)V.streamBuffer.totalLength=J}function B0(V,A){let F=Math.max(Math.floor(A.startSample),0),T=A.channelData[0]?.length??0,Q=A.totalLength??null,J=Math.max(F+T,Q??0);R0(V,Math.max(A.channelData.length,V.buffer.length,1),J);for(let U=0;U<A.channelData.length;U++)V.buffer[U].set(A.channelData[U],F);if(Q!=null)V.streamBuffer.totalLength=Q;if(T>0)V.streamBuffer.writtenSpans=E0(V.streamBuffer.writtenSpans,{startSample:F,endSample:F+T}),V.streamBuffer.committedLength=I0(V.streamBuffer.writtenSpans);if(A.streamEnded===!0)V.streamBuffer.streamEnded=!0;w0(V.streamBuffer,V.playhead)}function _0(V){if(V.streamBuffer.pendingWrites.length===0)return;for(let A of V.streamBuffer.pendingWrites)B0(V,A);V.streamBuffer.pendingWrites=[]}function y0(V,A){V.buffer=A,V.streamBuffer=i(A)}function v0(V={},A){let{buffer:F=[],streamBuffer:T=i(F),duration:Q=-1,loop:J=!1,loopStart:U=0,loopEnd:Y=(F[0]?.length??0)/A,loopCrossfade:X=0,playhead:k=0,offset:H=0,startWhen:$=0,stopWhen:j=0,pauseWhen:P=0,resumeWhen:C=0,playedSamples:N=0,state:K=z.Initial,timesLooped:w=0,fadeInDuration:v=0,fadeOutDuration:Z=0,enableFadeIn:E=v>0,enableFadeOut:O=Z>0,enableLoopStart:R=!0,enableLoopEnd:h=!0,enableLoopCrossfade:b=X>0,enableHighpass:c=!0,enableLowpass:g=!0,enableGain:s=!0,enablePan:r=!0,enableDetune:t=!0,enablePlaybackRate:p=!0}=V;return{buffer:F,streamBuffer:T,loop:J,loopStart:U,loopEnd:Y,loopCrossfade:X,duration:Q,playhead:k,offset:H,startWhen:$,stopWhen:j,pauseWhen:P,resumeWhen:C,playedSamples:N,state:K,timesLooped:w,fadeInDuration:v,fadeOutDuration:Z,enableFadeIn:E,enableFadeOut:O,enableLoopStart:R,enableLoopEnd:h,enableHighpass:c,enableLowpass:g,enableGain:s,enablePan:r,enableDetune:t,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 T=Math.floor(A*F);return V.offset=T,T}function L0(V){let{playhead:A,bufferLength:F,loop:T,loopStartSamples:Q,loopEndSamples:J}=V,U=128;if(!T&&A+128>F)U=Math.max(F-A,0);let Y=Array(U);if(!T){for(let $=0,j=A;$<U;$++,j++)Y[$]=j;let H=A+U;return{playhead:H,indexes:Y,looped:!1,ended:H>=F}}let X=A,k=!1;for(let H=0;H<U;H++,X++){if(X>=J)X=Q+(X-J),k=!0;Y[H]=X}return{indexes:Y,looped:k,ended:!1,playhead:X}}function x0(V){let{playhead:A,bufferLength:F,loop:T,loopStartSamples:Q,loopEndSamples:J,playbackRates:U}=V,Y=128;if(!T&&A+128>F)Y=Math.max(F-A,0);let X=Array(Y),k=A,H=!1;if(T){for(let $=0;$<Y;$++){X[$]=Math.min(Math.max(Math.floor(k),0),F-1);let j=U[$]??U[0]??1;if(k+=j,j>=0&&(k>J||k>F))k=Q,H=!0;else if(j<0&&(k<Q||k<0))k=J,H=!0}return{playhead:k,indexes:X,looped:H,ended:!1}}for(let $=0;$<Y;$++)X[$]=Math.min(Math.max(Math.floor(k),0),F-1),k+=U[$]??U[0]??1;return{playhead:k,indexes:X,looped:!1,ended:k>=F||k<0}}function m0(V,A,F){for(let T=0;T<F.length;T++)for(let Q=0;Q<V.length;Q++)V[Q][T]=A[Q][F[T]];for(let T=F.length;T<V[0].length;T++)for(let Q=0;Q<V.length;Q++)V[Q][T]=0}function d(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){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 H0(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 T=0;T<V[F].length;T++)A[F][T]=V[F][T]}function c0(V){let A=0;for(let F=0;F<V.length;F++)for(let T=0;T<V[F].length;T++)if(Number.isNaN(V[F][T]))A++,V[F][T]=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 T=A[0];if(T===1)return;for(let Q of V)for(let J=0;J<Q.length;J++)Q[J]*=T;return}let F=A[0];for(let T of V)for(let Q=0;Q<T.length;Q++)F=A[Q]??F,T[Q]*=F}function d0(V,A){let F=A[0];for(let T=0;T<V[0].length;T++){F=A[T]??F;let Q=F<=0?1:1-F,J=F>=0?1:1+F;V[0][T]*=Q,V[1][T]*=J}}function h0(V,A,F,T){for(let Q=0;Q<V.length;Q++){let J=V[Q],{x_1:U,x_2:Y,y_1:X,y_2:k}=T[Q]??{x_1:0,x_2:0,y_1:0,y_2:0};if(A.length===1){let H=A[0];if(H>=20000)return;let $=2*Math.PI*H/F,j=Math.sin($)/2,P=(1-Math.cos($))/2,C=1-Math.cos($),N=(1-Math.cos($))/2,K=1+j,w=-2*Math.cos($),v=1-j,Z=P/K,E=C/K,O=N/K,R=w/K,h=v/K;for(let b=0;b<J.length;b++){let c=J[b],g=Z*c+E*U+O*Y-R*X-h*k;Y=U,U=c,k=X,X=g,J[b]=g}}else{let H=A[0];for(let $=0;$<J.length;$++){let j=A[$]??H,P=2*Math.PI*j/F,C=Math.sin(P)/2,N=(1-Math.cos(P))/2,K=1-Math.cos(P),w=(1-Math.cos(P))/2,v=1+C,Z=-2*Math.cos(P),E=1-C,O=J[$],R=N/v*O+K/v*U+w/v*Y-Z/v*X-E/v*k;Y=U,U=O,k=X,X=R,J[$]=R}}T[Q]={x_1:U,x_2:Y,y_1:X,y_2:k}}}function l0(V,A,F,T){for(let Q=0;Q<V.length;Q++){let J=V[Q],{x_1:U,x_2:Y,y_1:X,y_2:k}=T[Q]??{x_1:0,x_2:0,y_1:0,y_2:0};if(A.length===1){let H=A[0];if(H<=20)return;let $=2*Math.PI*H/F,j=Math.sin($)/2,P=(1+Math.cos($))/2,C=-(1+Math.cos($)),N=(1+Math.cos($))/2,K=1+j,w=-2*Math.cos($),v=1-j;for(let Z=0;Z<J.length;Z++){let E=J[Z],O=P/K*E+C/K*U+N/K*Y-w/K*X-v/K*k;Y=U,U=E,k=X,X=O,J[Z]=O}}else{let H=A[0];for(let $=0;$<J.length;$++){let j=A[$]??H,P=2*Math.PI*j/F,C=Math.sin(P)/2,N=(1+Math.cos(P))/2,K=-(1+Math.cos(P)),w=(1+Math.cos(P))/2,v=1+C,Z=-2*Math.cos(P),E=1-C,O=J[$],R=N/v*O+K/v*U+w/v*Y-Z/v*X-E/v*k;Y=U,U=O,k=X,X=R,J[$]=R}}T[Q]={x_1:U,x_2:Y,y_1:X,y_2:k}}}function z0(V,A,F,T){let{type:Q,data:J}=A;switch(Q){case\"buffer\":return y0(V,J),n(V,T),[];case\"bufferInit\":{let U=J;return V.buffer=G0(U.channels,U.totalLength),V.streamBuffer={...i(),totalLength:U.totalLength,streamEnded:!1,streaming:U.streaming??!0},n(V,T),[]}case\"bufferRange\":return V.streamBuffer.pendingWrites.push(J),[];case\"bufferEnd\":{let U=J;if(U?.totalLength!=null)V.streamBuffer.totalLength=U.totalLength;return V.streamBuffer.streamEnded=!0,[]}case\"bufferReset\":return V.buffer=[],V.streamBuffer=i(),n(V,T),[];case\"start\":V.timesLooped=0;{let U=J;if(V.duration=U?.duration??-1,V.duration===-1)V.duration=V.loop?Number.MAX_SAFE_INTEGER:(V.buffer[0]?.length??0)/T;e(V,U?.offset,T),n(V,T),V.playhead=V.offset,V.startWhen=U?.when??F,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=J??V.stopWhen,V.state=z.Stopped,[{type:\"stopped\"}];case\"pause\":return V.state=z.Paused,V.pauseWhen=J??F,[{type:\"paused\"}];case\"resume\":return V.state=z.Started,V.startWhen=J??F,[{type:\"resume\"}];case\"dispose\":return V.state=z.Disposed,V.buffer=[],V.streamBuffer=i(),[{type:\"disposed\"}];case\"loop\":{let U=J,Y=V.state;if(U&&(Y===z.Scheduled||Y===z.Started))V.stopWhen=Number.MAX_SAFE_INTEGER,V.duration=Number.MAX_SAFE_INTEGER;if(V.loop=U,U)n(V,T);return[]}case\"loopStart\":return V.loopStart=J,[];case\"loopEnd\":return V.loopEnd=J,[];case\"loopCrossfade\":return V.loopCrossfade=J,[];case\"playhead\":return V.playhead=Math.floor(J),[];case\"fadeIn\":return V.fadeInDuration=J,[];case\"fadeOut\":return V.fadeOutDuration=J,[];case\"toggleGain\":return V.enableGain=J??!V.enableGain,[];case\"togglePan\":return V.enablePan=J??!V.enablePan,[];case\"toggleLowpass\":return V.enableLowpass=J??!V.enableLowpass,[];case\"toggleHighpass\":return V.enableHighpass=J??!V.enableHighpass,[];case\"toggleDetune\":return V.enableDetune=J??!V.enableDetune,[];case\"togglePlaybackRate\":return V.enablePlaybackRate=J??!V.enablePlaybackRate,[];case\"toggleFadeIn\":return V.enableFadeIn=J??!V.enableFadeIn,[];case\"toggleFadeOut\":return V.enableFadeOut=J??!V.enableFadeOut,[];case\"toggleLoopStart\":return V.enableLoopStart=J??!V.enableLoopStart,[];case\"toggleLoopEnd\":return V.enableLoopEnd=J??!V.enableLoopEnd,[];case\"toggleLoopCrossfade\":return V.enableLoopCrossfade=J??!V.enableLoopCrossfade,[];case\"logState\":return[]}return[]}function j0(V,A,F,T,Q){let J=[],U=V.state;if(U===z.Disposed)return{keepAlive:!1,messages:J};if(_0(V),U===z.Initial)return{keepAlive:!0,messages:J};if(U===z.Ended)return d(A[0]),{keepAlive:!0,messages:J};if(U===z.Scheduled)if(T.currentTime>=V.startWhen)U=V.state=z.Started,J.push({type:\"started\"});else return d(A[0]),{keepAlive:!0,messages:J};else if(U===z.Paused){if(T.currentTime>V.pauseWhen)return d(A[0]),{keepAlive:!0,messages:J}}if(T.currentTime>V.stopWhen)return d(A[0]),V.state=z.Ended,J.push({type:\"ended\"}),V.playedSamples=0,{keepAlive:!0,messages:J};let Y=A[0],X=o(V);if(X===0)return d(Y),{keepAlive:!0,messages:J};let{playbackRate:k,detune:H,lowpass:$,highpass:j,gain:P,pan:C}=F,{buffer:N,loopStart:K,loopEnd:w,loopCrossfade:v,stopWhen:Z,playedSamples:E,enableLowpass:O,enableHighpass:R,enableGain:h,enablePan:b,enableDetune:c,enableFadeOut:g,enableFadeIn:s,enableLoopStart:r,enableLoopEnd:t,enableLoopCrossfade:p,playhead:D,fadeInDuration:A0,fadeOutDuration:F0}=V,K0=V.streamBuffer.streaming&&V.streamBuffer.committedLength<X,T0=V.loop&&!K0,l=Math.min(N.length,Y.length),W0=V.duration*T.sampleRate,Z0=Math.floor(T.sampleRate*v),q0=Math.max(X-y,0),L=r?Math.min(Math.floor(K*T.sampleRate),q0):0,x=t?Math.min(Math.floor(w*T.sampleRate),X):X,N0=x-L,J0=c&&H.length>0&&H[0]!==0,u=k;if(J0){let M=Math.max(k.length,H.length,y);u=new Float32Array(M);for(let W=0;W<M;W++){let I=k[W]??k[k.length-1],G=H[W]??H[H.length-1];u[W]=I*2**(G/1200)}}let Q0=V.enablePlaybackRate||J0,O0=Q0&&u.length>0&&u.every((M)=>M===0);if(V.streamBuffer.streaming&&!V.streamBuffer.streamEnded&&!V.streamBuffer.lowWaterNotified&&V.streamBuffer.committedLength-Math.floor(D)<V.streamBuffer.lowWaterThreshold)J.push({type:\"bufferLowWater\",data:{playhead:Math.floor(D),committedLength:V.streamBuffer.committedLength}}),V.streamBuffer.lowWaterNotified=!0;if(O0){d(Y);for(let M=1;M<A.length;M++)H0(Y,A[M]);return{keepAlive:!0,messages:J}}let U0={bufferLength:X,loop:T0,playhead:D,loopStartSamples:L,loopEndSamples:x,durationSamples:W0,playbackRates:u},{indexes:a,ended:X0,looped:Y0,playhead:$0}=Q0?x0(U0):L0(U0),f=a.find((M)=>M>=V.streamBuffer.committedLength&&M<X);if(f!==void 0&&!V.streamBuffer.streamEnded&&V.streamBuffer.lastUnderrunSample!==f)J.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(Y,N,a);let m=Math.min(Math.floor(v*T.sampleRate),N0),D0=T0&&D>L&&D<x,C0=p&&Z0>0&&X>y;if(D0&&C0){{let M=L+m;if(m>0&&D>L&&D<M){let W=D-L,I=Math.min(Math.floor(M-D),y);for(let G=0;G<I;G++){let B=(W+G)/m,S=Math.cos(Math.PI*B/2),q=Math.floor(x-m+W+G);if(q>=0&&q<X)for(let _=0;_<l;_++)Y[_][G]+=N[_][q]*S}}}{let M=x-m;if(m>0&&D>M&&D<x){let W=D-M,I=Math.min(Math.floor(x-D),y);for(let G=0;G<I;G++){let B=(W+G)/m,S=Math.sin(Math.PI*B/2),q=Math.floor(L+W+G);if(q>=0&&q<X)for(let _=0;_<l;_++)Y[_][G]+=N[_][q]*S}}}}if(s&&A0>0){let M=Math.floor(A0*T.sampleRate),W=M-E;if(W>0){let I=Math.min(W,y);for(let G=0;G<I;G++){let B=(E+G)/M,S=B*B*B;for(let q=0;q<l;q++)Y[q][G]*=S}}}if(g&&F0>0){let M=Math.floor(F0*T.sampleRate),W=Math.floor(T.sampleRate*(Z-T.currentTime));if(W<M+y)for(let I=0;I<y;I++){let G=W-I;if(G>=M)continue;let B=G<=0?0:G/M,S=B*B*B;for(let q=0;q<l;q++)Y[q][I]*=S}}if(O)h0(Y,$,T.sampleRate,Q.lowpass);if(R)l0(Y,j,T.sampleRate,Q.highpass);if(h)g0(Y,P);if(l===1)S0(Y);if(b)d0(Y,C);if(Y0)V.timesLooped++,J.push({type:\"looped\",data:V.timesLooped});if(X0)V.state=z.Ended,J.push({type:\"ended\"});V.playedSamples+=a.length,V.playhead=$0;let k0=c0(Y);if(k0>0)return console.log({numNans:k0,indexes:a,playhead:$0,ended:X0,looped:Y0,sourceLength:X}),{keepAlive:!0,messages:J};for(let M=1;M<A.length;M++)H0(Y,A[M]);return{keepAlive:!0,messages:J}}class P0 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=v0(V?.processorOptions,sampleRate),this.port.onmessage=(A)=>{let F=z0(this.properties,A.data,currentTime,sampleRate);for(let T of F)this.port.postMessage(T);if(this.properties.state===z.Disposed)this.port.close()}}process(V,A,F){try{let T=j0(this.properties,A,F,{currentTime,currentFrame,sampleRate},this.filterState);for(let J of T.messages)this.port.postMessage(J);let Q=currentTime-this.lastFrameTime;return this.lastFrameTime=currentTime,this.port.postMessage({type:\"frame\",data:[currentTime,currentFrame,Math.floor(this.properties.playhead),Q*1000]}),T.keepAlive}catch(T){return console.log(T),!0}}}registerProcessor(\"ClipProcessor\",P0);\n\n//# debugId=5101232AAE128B1064756E2164756E21\n//# sourceMappingURL=processor.js.map\n";
|