audio
Version:
Audio loading, editing, and rendering for JavaScript
17 lines (14 loc) • 605 B
JavaScript
import { opRange } from '../plan.js'
const gain = (chs, ctx) => {
let lin = ctx.unit === 'linear', val = ctx.args[0] ?? (lin ? 1 : 0)
let [s, end] = opRange(ctx, chs[0].length)
let auto = typeof val === 'function', f = auto ? 0 : lin ? val : 10 ** (val / 20)
let off = (ctx.blockOffset || 0) * ctx.sampleRate
let toMul = lin ? v => v : v => 10 ** (v / 20)
for (let ch of chs)
for (let i = Math.max(0, s); i < Math.min(end, ch.length); i++)
ch[i] *= auto ? toMul(val((off + i) / ctx.sampleRate)) : f
return chs
}
import audio from '../core.js'
audio.op('gain', { process: gain })