UNPKG

audio

Version:

Audio loading, editing, and rendering for JavaScript

17 lines (14 loc) 605 B
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 })