()
| 29 | }, intervalMs) |
| 30 | |
| 31 | const tick = () => { |
| 32 | timeout = window.setTimeout(() => { |
| 33 | analyserNode.getFloatTimeDomainData(pcmData) |
| 34 | let sumSquares = 0.0 |
| 35 | for (const amplitude of pcmData) { |
| 36 | sumSquares += amplitude * amplitude |
| 37 | } |
| 38 | const current = Math.sqrt(sumSquares / pcmData.length) |
| 39 | if (current > peak) { |
| 40 | peak = current |
| 41 | } |
| 42 | tick() |
| 43 | }) |
| 44 | } |
| 45 | tick() |
| 46 | |
| 47 | return () => { |