(rate)
| 417 | master.gain.setTargetAtTime(Math.max(0, v), ctx.currentTime, 0.01); |
| 418 | }, |
| 419 | setPlaybackRate(rate) { |
| 420 | const t = _getCurrentTime(); // capture before updating rate |
| 421 | _playbackRate = rate; |
| 422 | if (stNode) { |
| 423 | stNode.parameters.get('tempo').value = rate; |
| 424 | } else if (playing) { |
| 425 | // Tape-effect fallback: seek to current position so new source nodes |
| 426 | // are created with the updated playbackRate and scheduling math resets. |
| 427 | seek(t); |
| 428 | } |
| 429 | }, |
| 430 | getAnalyser: () => null, |
| 431 | getBuffers: () => new Map(), |
| 432 | destroy() { |
nothing calls this directly
no test coverage detected