UNPKG

tone

Version:

A Web Audio framework for making interactive music in the browser.

61 lines 1.84 kB
import { Param } from "../context/Param.js"; import { optionsFromArguments } from "../util/Defaults.js"; import { readOnly } from "../util/Interface.js"; import { ToneAudioNode } from "./ToneAudioNode.js"; /** * A thin wrapper around the Native Web Audio GainNode. * The GainNode is a basic building block of the Web Audio * API and is useful for routing audio and adjusting gains. * @category Core * @example * return Tone.Offline(() => { * const gainNode = new Tone.Gain(0).toDestination(); * const osc = new Tone.Oscillator(30).connect(gainNode).start(); * gainNode.gain.rampTo(1, 0.1); * gainNode.gain.rampTo(0, 0.4, 0.2); * }, 0.7, 1); */ export class Gain extends ToneAudioNode { constructor() { const options = optionsFromArguments(Gain.getDefaults(), arguments, [ "gain", "units", ]); super(options); this.name = "Gain"; /** * The wrapped GainNode. */ this._gainNode = this.context.createGain(); // input = output this.input = this._gainNode; this.output = this._gainNode; this.gain = new Param({ context: this.context, convert: options.convert, param: this._gainNode.gain, units: options.units, value: options.gain, minValue: options.minValue, maxValue: options.maxValue, }); readOnly(this, "gain"); } static getDefaults() { return Object.assign(ToneAudioNode.getDefaults(), { convert: true, gain: 1, units: "gain", }); } /** * Clean up. */ dispose() { super.dispose(); this._gainNode.disconnect(); this.gain.dispose(); return this; } } //# sourceMappingURL=Gain.js.map