waa-play 0.2.1 → 0.2.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/package.json +3 -2
- package/dist/adapters.cjs.map +0 -1
- package/dist/adapters.js.map +0 -1
- package/dist/buffer.cjs.map +0 -1
- package/dist/buffer.js.map +0 -1
- package/dist/chunk-2FGUFHZM.js.map +0 -1
- package/dist/chunk-37CPPRLV.js.map +0 -1
- package/dist/chunk-3VTU5OX5.cjs.map +0 -1
- package/dist/chunk-6UTN73HG.cjs.map +0 -1
- package/dist/chunk-7JUVBZ6B.js.map +0 -1
- package/dist/chunk-BRS7LZVH.cjs.map +0 -1
- package/dist/chunk-F6WXD3XW.cjs.map +0 -1
- package/dist/chunk-FESPIMZM.js.map +0 -1
- package/dist/chunk-FY273Z3I.js.map +0 -1
- package/dist/chunk-G37HMZEX.cjs.map +0 -1
- package/dist/chunk-GDBOHOGF.js.map +0 -1
- package/dist/chunk-HIF3UAF3.cjs.map +0 -1
- package/dist/chunk-HTN52U23.js.map +0 -1
- package/dist/chunk-HYRDCTBO.js.map +0 -1
- package/dist/chunk-JIHPQAEA.js.map +0 -1
- package/dist/chunk-KVKW7W66.cjs.map +0 -1
- package/dist/chunk-OIY6I4TU.cjs.map +0 -1
- package/dist/chunk-OZN5X4N6.cjs.map +0 -1
- package/dist/chunk-PL4J3NR7.js.map +0 -1
- package/dist/chunk-QFJQU7TQ.js.map +0 -1
- package/dist/chunk-QGZGERGK.cjs.map +0 -1
- package/dist/chunk-VOSIA3GF.cjs.map +0 -1
- package/dist/chunk-VY4UMZMJ.cjs.map +0 -1
- package/dist/chunk-YFK7ETCF.js.map +0 -1
- package/dist/context.cjs.map +0 -1
- package/dist/context.js.map +0 -1
- package/dist/emitter.cjs.map +0 -1
- package/dist/emitter.js.map +0 -1
- package/dist/engine-7DCOERRN.js.map +0 -1
- package/dist/engine-ALWPAIX6.cjs.map +0 -1
- package/dist/fade.cjs.map +0 -1
- package/dist/fade.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/nodes.cjs.map +0 -1
- package/dist/nodes.js.map +0 -1
- package/dist/play.cjs.map +0 -1
- package/dist/play.js.map +0 -1
- package/dist/player.cjs.map +0 -1
- package/dist/player.js.map +0 -1
- package/dist/scheduler.cjs.map +0 -1
- package/dist/scheduler.js.map +0 -1
- package/dist/stretcher.cjs.map +0 -1
- package/dist/stretcher.js.map +0 -1
- package/dist/synth.cjs.map +0 -1
- package/dist/synth.js.map +0 -1
- package/dist/waveform.cjs.map +0 -1
- package/dist/waveform.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/playback-position.ts","../src/playback-state.ts","../src/play.ts"],"names":["createEmitter"],"mappings":"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","file":"chunk-VY4UMZMJ.cjs","sourcesContent":["// ---------------------------------------------------------------------------\n// Pure functions for playback position calculation\n// ---------------------------------------------------------------------------\n\n/**\n * Calculate the current position within a loop region.\n *\n * Uses a true modulo (always non-negative) to avoid the JS `%` sign-preservation\n * issue where `elapsed < loopStart` would produce a value outside the loop region.\n *\n * Returns `null` when the loop region is invalid (loopDur <= 0) so the caller\n * can fall back to non-loop behaviour.\n */\nexport function calcLoopPosition(\n elapsed: number,\n loopStart: number,\n loopEnd: number,\n): number | null {\n const loopDur = loopEnd - loopStart;\n if (loopDur <= 0) return null;\n const offset = elapsed - loopStart;\n return (((offset % loopDur) + loopDur) % loopDur) + loopStart;\n}\n\n/**\n * Calculate the playback position for a given state.\n *\n * Pure function — no side effects, no dependency on AudioContext.\n */\nexport function calcPlaybackPosition(\n state: \"playing\" | \"paused\" | \"stopped\",\n elapsed: number,\n duration: number,\n pausedAt: number,\n isLooping: boolean,\n loopStart: number | undefined,\n loopEnd: number | undefined,\n): number {\n if (state === \"paused\") return pausedAt;\n if (state === \"stopped\") return 0;\n\n // state === \"playing\"\n if (isLooping) {\n const looped = calcLoopPosition(elapsed, loopStart ?? 0, loopEnd ?? duration);\n // Invalid loop region → fall back to non-loop clamping\n if (looped !== null) return looped;\n }\n return Math.min(Math.max(elapsed, 0), duration);\n}\n","// ---------------------------------------------------------------------------\n// Shared playback state management (used by both normal and stretched modes)\n// ---------------------------------------------------------------------------\n\nimport type { PlaybackState } from \"./types.js\";\n\nexport interface PlaybackStateManager {\n getState(): PlaybackState;\n setState(next: PlaybackState): boolean;\n startTimer(): void;\n stopTimer(): void;\n isDisposed(): boolean;\n markDisposed(): void;\n}\n\n/**\n * Create a reusable state manager that encapsulates the setState / startTimer /\n * stopTimer / dispose pattern shared between normal and stretched playback.\n */\nexport function createPlaybackStateManager(opts: {\n initialState: PlaybackState;\n onStateChange: (state: PlaybackState) => void;\n onTimerTick: () => void;\n timerInterval: number;\n}): PlaybackStateManager {\n let state: PlaybackState = opts.initialState;\n let timerId: ReturnType<typeof setInterval> | null = null;\n let disposed = false;\n\n function getState(): PlaybackState {\n return state;\n }\n\n /** Returns `true` if state actually changed. */\n function setState(next: PlaybackState): boolean {\n if (state === next) return false;\n state = next;\n opts.onStateChange(next);\n return true;\n }\n\n function startTimer(): void {\n if (timerId !== null) return;\n timerId = setInterval(() => {\n if (state !== \"playing\" || disposed) return;\n opts.onTimerTick();\n }, opts.timerInterval);\n }\n\n function stopTimer(): void {\n if (timerId !== null) {\n clearInterval(timerId);\n timerId = null;\n }\n }\n\n function isDisposed(): boolean {\n return disposed;\n }\n\n function markDisposed(): void {\n disposed = true;\n stopTimer();\n }\n\n return { getState, setState, startTimer, stopTimer, isDisposed, markDisposed };\n}\n","// ---------------------------------------------------------------------------\n// M3: Playback engine\n// ---------------------------------------------------------------------------\n\nimport { createEmitter } from \"./emitter.js\";\nimport { calcPlaybackPosition } from \"./playback-position.js\";\nimport { createPlaybackStateManager } from \"./playback-state.js\";\nimport type {\n Playback,\n PlaybackEventMap,\n PlayOptions,\n StretcherSnapshotExtension,\n} from \"./types.js\";\n\n/**\n * Play an `AudioBuffer` through an `AudioContext` and return a controllable\n * `Playback` handle.\n *\n * ```ts\n * const pb = play(ctx, buffer, { loop: true });\n * pb.on(\"timeupdate\", ({ position }) => console.log(position));\n * pb.pause();\n * pb.resume();\n * pb.seek(10);\n * pb.stop();\n * pb.dispose();\n * ```\n */\nexport function play(ctx: AudioContext, buffer: AudioBuffer, options?: PlayOptions): Playback {\n const { preservePitch = true } = options ?? {};\n\n // ----- Pitch-preserving mode (WSOLA-based time-stretch) -----\n if (preservePitch) {\n return createStretchedPlayback(ctx, buffer, options ?? {});\n }\n\n const {\n offset: initialOffset = 0,\n loop = false,\n loopStart,\n loopEnd,\n playbackRate: initialRate = 1,\n through = [],\n destination = ctx.destination,\n timeupdateInterval = 50,\n } = options ?? {};\n\n const emitter = createEmitter<PlaybackEventMap>();\n const duration = buffer.duration;\n\n // ----- mutable internal state -----\n let sourceNode: AudioBufferSourceNode | null = null;\n let startedAt = 0; // ctx.currentTime when playback last started/resumed\n let pausedAt = initialOffset; // position in the buffer (seconds)\n let currentRate = initialRate > 0 ? initialRate : 1;\n let isLooping = loop;\n\n const sm = createPlaybackStateManager({\n initialState: \"stopped\",\n onStateChange: (next) => emitter.emit(\"statechange\", { state: next }),\n onTimerTick: () => {\n emitter.emit(\"timeupdate\", {\n position: getCurrentTime(),\n duration,\n });\n },\n timerInterval: timeupdateInterval,\n });\n\n // ----- helpers -----\n\n function createSource(): AudioBufferSourceNode {\n const src = ctx.createBufferSource();\n src.buffer = buffer;\n src.playbackRate.value = currentRate;\n src.loop = isLooping;\n if (loopStart !== undefined) src.loopStart = loopStart;\n if (loopEnd !== undefined) src.loopEnd = loopEnd;\n\n // Connect through the node chain (or directly to destination).\n if (through.length > 0) {\n src.connect(through[0]!);\n for (let i = 0; i < through.length - 1; i++) {\n through[i]!.connect(through[i + 1]!);\n }\n through[through.length - 1]!.connect(destination);\n } else {\n src.connect(destination);\n }\n\n src.onended = handleEnded;\n return src;\n }\n\n function startSource(positionInBuffer: number) {\n sourceNode = createSource();\n sourceNode.start(0, positionInBuffer);\n startedAt = ctx.currentTime - positionInBuffer / currentRate;\n }\n\n function stopSource() {\n if (sourceNode) {\n sourceNode.onended = null;\n try {\n sourceNode.stop();\n } catch {\n // Already stopped — safe to ignore.\n }\n sourceNode.disconnect();\n sourceNode = null;\n }\n }\n\n function handleEnded() {\n // If we manually stopped / paused, the handler was already removed.\n if (sm.getState() !== \"playing\") return;\n if (isLooping) {\n emitter.emit(\"loop\", undefined as never);\n return;\n }\n sm.setState(\"stopped\");\n pausedAt = 0;\n sm.stopTimer();\n emitter.emit(\"ended\", undefined as never);\n }\n\n // ----- public API -----\n\n function getCurrentTime(): number {\n const state = sm.getState();\n const elapsed = state === \"playing\" ? (ctx.currentTime - startedAt) * currentRate : 0;\n return calcPlaybackPosition(state, elapsed, duration, pausedAt, isLooping, loopStart, loopEnd);\n }\n\n function pause() {\n if (sm.getState() !== \"playing\" || sm.isDisposed()) return;\n pausedAt = getCurrentTime();\n stopSource();\n sm.stopTimer();\n sm.setState(\"paused\");\n emitter.emit(\"pause\", undefined as never);\n }\n\n function resume() {\n if (sm.getState() !== \"paused\" || sm.isDisposed()) return;\n startSource(pausedAt);\n sm.setState(\"playing\");\n sm.startTimer();\n emitter.emit(\"resume\", undefined as never);\n }\n\n function togglePlayPause() {\n if (sm.getState() === \"playing\") pause();\n else if (sm.getState() === \"paused\") resume();\n }\n\n function seek(position: number) {\n if (sm.isDisposed()) return;\n const clamped = Math.max(0, Math.min(position, duration));\n const wasPlaying = sm.getState() === \"playing\";\n\n stopSource();\n sm.stopTimer();\n\n pausedAt = clamped;\n\n if (wasPlaying) {\n startSource(clamped);\n sm.startTimer();\n }\n\n emitter.emit(\"seek\", { position: clamped });\n }\n\n function stop() {\n if (sm.getState() === \"stopped\" || sm.isDisposed()) return;\n stopSource();\n sm.stopTimer();\n pausedAt = 0;\n sm.setState(\"stopped\");\n emitter.emit(\"stop\", undefined as never);\n }\n\n function setPlaybackRate(rate: number) {\n if (rate <= 0) return;\n const position = getCurrentTime();\n currentRate = rate;\n if (sourceNode) {\n sourceNode.playbackRate.value = rate;\n startedAt = ctx.currentTime - position / rate;\n }\n }\n\n function setLoop(value: boolean) {\n isLooping = value;\n if (sourceNode) {\n sourceNode.loop = value;\n }\n }\n\n function dispose() {\n if (sm.isDisposed()) return;\n sm.markDisposed();\n stopSource();\n emitter.clear();\n }\n\n // ----- kick off initial playback -----\n\n startSource(initialOffset);\n sm.setState(\"playing\");\n sm.startTimer();\n emitter.emit(\"play\", undefined as never);\n\n return {\n getState: () => sm.getState(),\n getCurrentTime,\n getDuration: () => duration,\n getProgress: () => (duration > 0 ? getCurrentTime() / duration : 0),\n pause,\n resume,\n togglePlayPause,\n seek,\n stop,\n setPlaybackRate,\n setLoop,\n on: emitter.on.bind(emitter) as Playback[\"on\"],\n off: emitter.off.bind(emitter) as Playback[\"off\"],\n dispose,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Stretched playback (preservePitch: true)\n// ---------------------------------------------------------------------------\n\nfunction createStretchedPlayback(\n ctx: AudioContext,\n buffer: AudioBuffer,\n options: PlayOptions,\n): Playback {\n const {\n offset: initialOffset = 0,\n loop = false,\n playbackRate: initialRate = 1,\n through = [],\n destination = ctx.destination,\n timeupdateInterval = 50,\n } = options;\n\n const emitter = createEmitter<PlaybackEventMap>();\n const duration = buffer.duration;\n\n let engineInstance: import(\"./stretcher/types.js\").StretcherEngine | null = null;\n let currentRate = initialRate > 0 ? initialRate : 1;\n let isLooping = loop;\n let pendingSeek: number | null = null;\n\n const sm = createPlaybackStateManager({\n initialState: \"playing\",\n onStateChange: (next) => emitter.emit(\"statechange\", { state: next }),\n onTimerTick: () => {\n emitter.emit(\"timeupdate\", {\n position: getCurrentTime(),\n duration,\n });\n },\n timerInterval: timeupdateInterval,\n });\n\n // Emit initial play event\n emitter.emit(\"statechange\", { state: \"playing\" });\n emitter.emit(\"play\", undefined as never);\n\n // Fire-and-forget dynamic import of the stretcher engine\n import(\"./stretcher/engine.js\")\n .then(({ createStretcherEngine }) => {\n if (sm.isDisposed()) return;\n\n engineInstance = createStretcherEngine(ctx, buffer, {\n tempo: currentRate,\n offset: initialOffset,\n loop: isLooping,\n through,\n destination,\n timeupdateInterval,\n });\n\n // Wire stretcher events to playback events\n engineInstance.on(\"buffering\", (data) => {\n if (sm.isDisposed()) return;\n emitter.emit(\"buffering\", data);\n });\n\n engineInstance.on(\"buffered\", (data) => {\n if (sm.isDisposed()) return;\n emitter.emit(\"buffered\", data);\n });\n\n engineInstance.on(\"loop\", () => {\n if (sm.isDisposed()) return;\n emitter.emit(\"loop\", undefined as never);\n });\n\n engineInstance.on(\"ended\", () => {\n if (sm.isDisposed()) return;\n if (sm.getState() === \"stopped\") return;\n sm.stopTimer();\n sm.setState(\"stopped\");\n emitter.emit(\"ended\", undefined as never);\n });\n\n engineInstance.on(\"error\", (data) => {\n if (sm.isDisposed()) return;\n if (data.fatal) {\n sm.setState(\"stopped\");\n emitter.emit(\"ended\", undefined as never);\n }\n });\n\n // Start engine and timeupdate timer\n engineInstance.start();\n sm.startTimer();\n\n // Apply pending seek if any\n if (pendingSeek !== null) {\n engineInstance.seek(pendingSeek);\n pendingSeek = null;\n }\n\n // If we were paused before the engine loaded, pause it\n if (sm.getState() === \"paused\") {\n engineInstance.pause();\n } else if (sm.getState() === \"stopped\") {\n engineInstance.stop();\n }\n })\n .catch(() => {\n if (sm.isDisposed()) return;\n sm.stopTimer();\n sm.setState(\"stopped\");\n emitter.emit(\"ended\", undefined as never);\n });\n\n function getCurrentTime(): number {\n if (pendingSeek !== null) {\n return pendingSeek;\n }\n if (engineInstance) {\n return engineInstance.getCurrentPosition();\n }\n return initialOffset;\n }\n\n function pause() {\n if (sm.getState() !== \"playing\" || sm.isDisposed()) return;\n engineInstance?.pause();\n sm.stopTimer();\n sm.setState(\"paused\");\n emitter.emit(\"pause\", undefined as never);\n }\n\n function resume() {\n if (sm.getState() !== \"paused\" || sm.isDisposed()) return;\n engineInstance?.resume();\n sm.startTimer();\n sm.setState(\"playing\");\n emitter.emit(\"resume\", undefined as never);\n }\n\n function togglePlayPause() {\n if (sm.getState() === \"playing\") pause();\n else if (sm.getState() === \"paused\") resume();\n }\n\n function seek(position: number) {\n if (sm.isDisposed()) return;\n const clamped = Math.max(0, Math.min(position, duration));\n if (engineInstance) {\n engineInstance.seek(clamped);\n } else {\n pendingSeek = clamped;\n }\n emitter.emit(\"seek\", { position: clamped });\n }\n\n function stop() {\n if (sm.getState() === \"stopped\" || sm.isDisposed()) return;\n engineInstance?.stop();\n sm.stopTimer();\n sm.setState(\"stopped\");\n emitter.emit(\"stop\", undefined as never);\n }\n\n function setPlaybackRate(rate: number) {\n if (rate <= 0) return;\n currentRate = rate;\n if (engineInstance) {\n engineInstance.setTempo(rate);\n }\n }\n\n function setLoop(value: boolean) {\n isLooping = value;\n engineInstance?.setLoop(value);\n }\n\n function dispose() {\n if (sm.isDisposed()) return;\n sm.markDisposed();\n engineInstance?.dispose();\n emitter.clear();\n }\n\n function _getStretcherSnapshot(): StretcherSnapshotExtension | null {\n if (!engineInstance) return null;\n return engineInstance.getSnapshot();\n }\n\n const playback: Playback & {\n _getStretcherSnapshot: typeof _getStretcherSnapshot;\n } = {\n getState: () => sm.getState(),\n getCurrentTime,\n getDuration: () => duration,\n getProgress: () => (duration > 0 ? getCurrentTime() / duration : 0),\n pause,\n resume,\n togglePlayPause,\n seek,\n stop,\n setPlaybackRate,\n setLoop,\n on: emitter.on.bind(emitter) as Playback[\"on\"],\n off: emitter.off.bind(emitter) as Playback[\"off\"],\n dispose,\n _getStretcherSnapshot,\n };\n\n return playback;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/synth.ts"],"names":[],"mappings":";AAQO,SAAS,gBAAA,CACd,GAAA,EACA,SAAA,EACA,QAAA,EACa;AACb,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,aAAa,QAAQ,CAAA;AAClD,EAAA,MAAM,SAAS,GAAA,CAAI,YAAA,CAAa,CAAA,EAAG,MAAA,EAAQ,IAAI,UAAU,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,cAAA,CAAe,CAAC,CAAA;AAEpC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC/B,IAAA,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAK,CAAA,GAAI,KAAK,EAAA,GAAK,SAAA,GAAY,CAAA,GAAK,GAAA,CAAI,UAAU,CAAA;AAAA,EACnE;AAEA,EAAA,OAAO,MAAA;AACT;AAKO,SAAS,iBAAA,CAAkB,KAAmB,QAAA,EAA+B;AAClF,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,aAAa,QAAQ,CAAA;AAClD,EAAA,MAAM,SAAS,GAAA,CAAI,YAAA,CAAa,CAAA,EAAG,MAAA,EAAQ,IAAI,UAAU,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,cAAA,CAAe,CAAC,CAAA;AAEpC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC/B,IAAA,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA,CAAK,MAAA,KAAW,CAAA,GAAI,CAAA;AAAA,EAChC;AAEA,EAAA,OAAO,MAAA;AACT;AAKO,SAAS,iBAAA,CACd,GAAA,EACA,SAAA,EACA,QAAA,EACa;AACb,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,aAAa,QAAQ,CAAA;AAClD,EAAA,MAAM,SAAS,GAAA,CAAI,YAAA,CAAa,CAAA,EAAG,MAAA,EAAQ,IAAI,UAAU,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,cAAA,CAAe,CAAC,CAAA;AAEpC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAE/B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAK,EAAA,GAAK,IAAK,MAAM,CAAA;AAC3C,IAAA,IAAA,CAAK,CAAC,CAAA,GAAI,QAAA,GAAW,IAAA,CAAK,GAAA,CAAK,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,SAAA,GAAY,CAAA,GAAK,GAAA,CAAI,UAAU,CAAA;AAAA,EAC9E;AAEA,EAAA,OAAO,MAAA;AACT","file":"chunk-YFK7ETCF.js","sourcesContent":["// ---------------------------------------------------------------------------\n// M9: Buffer synthesis\n// ---------------------------------------------------------------------------\n\n/**\n * Create an `AudioBuffer` containing a sine wave.\n * Useful for test tones and debugging.\n */\nexport function createSineBuffer(\n ctx: AudioContext,\n frequency: number,\n duration: number,\n): AudioBuffer {\n const length = Math.ceil(ctx.sampleRate * duration);\n const buffer = ctx.createBuffer(1, length, ctx.sampleRate);\n const data = buffer.getChannelData(0);\n\n for (let i = 0; i < length; i++) {\n data[i] = Math.sin((2 * Math.PI * frequency * i) / ctx.sampleRate);\n }\n\n return buffer;\n}\n\n/**\n * Create an `AudioBuffer` containing white noise.\n */\nexport function createNoiseBuffer(ctx: AudioContext, duration: number): AudioBuffer {\n const length = Math.ceil(ctx.sampleRate * duration);\n const buffer = ctx.createBuffer(1, length, ctx.sampleRate);\n const data = buffer.getChannelData(0);\n\n for (let i = 0; i < length; i++) {\n data[i] = Math.random() * 2 - 1;\n }\n\n return buffer;\n}\n\n/**\n * Create an `AudioBuffer` containing a short click/impulse.\n */\nexport function createClickBuffer(\n ctx: AudioContext,\n frequency: number,\n duration: number,\n): AudioBuffer {\n const length = Math.ceil(ctx.sampleRate * duration);\n const buffer = ctx.createBuffer(1, length, ctx.sampleRate);\n const data = buffer.getChannelData(0);\n\n for (let i = 0; i < length; i++) {\n // Exponential decay envelope.\n const envelope = Math.exp((-5 * i) / length);\n data[i] = envelope * Math.sin((2 * Math.PI * frequency * i) / ctx.sampleRate);\n }\n\n return buffer;\n}\n"]}
|
package/dist/context.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"context.cjs"}
|
package/dist/context.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"context.js"}
|
package/dist/emitter.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"emitter.cjs"}
|
package/dist/emitter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"emitter.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"engine-7DCOERRN.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"engine-ALWPAIX6.cjs"}
|
package/dist/fade.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"fade.cjs"}
|
package/dist/fade.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"fade.js"}
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/dist/nodes.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"nodes.cjs"}
|
package/dist/nodes.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"nodes.js"}
|
package/dist/play.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"play.cjs"}
|
package/dist/play.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"play.js"}
|
package/dist/player.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"player.cjs"}
|
package/dist/player.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"player.js"}
|
package/dist/scheduler.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"scheduler.cjs"}
|
package/dist/scheduler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"scheduler.js"}
|
package/dist/stretcher.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"stretcher.cjs"}
|
package/dist/stretcher.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"stretcher.js"}
|
package/dist/synth.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"synth.cjs"}
|
package/dist/synth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"synth.js"}
|
package/dist/waveform.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"waveform.cjs"}
|
package/dist/waveform.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"waveform.js"}
|