wam-community
Version:
A collection of prebuilt Web Audio Modules ready for use
951 lines (829 loc) • 25.9 kB
JavaScript
import WaveShapersDisto from './waveshapersdisto.js';
export default function AmpDisto(context, boost, eq, reverb, cabinetSim) {
var presets = [];
var wsFactoryDisto = new WaveShapersDisto();
var currentDistoName = "standard";
var currentK = 2;
var currentWSCurve = wsFactoryDisto.distorsionCurves[currentDistoName](
currentK
);
var input = context.createGain();
var output = context.createGain();
var inputGain = context.createGain();
inputGain.gain.value = 1;
var bassFilter, midFilter, trebleFilter, presenceFilter;
var k = [2, 2, 2, 2];
var od = [];
var distoTypes = ["asymetric", "standard"];
var gainsOds = [];
var lowShelf1 = context.createBiquadFilter();
lowShelf1.type = "lowshelf";
lowShelf1.frequency.value = 720;
lowShelf1.gain.value = -6;
var lowShelf2 = context.createBiquadFilter();
lowShelf2.type = "lowshelf";
lowShelf2.frequency.value = 320;
lowShelf2.gain.value = -5;
var preampStage1Gain = context.createGain();
preampStage1Gain.gain.value = 1.0;
od[0] = context.createWaveShaper();
od[0].curve = wsFactoryDisto.distorsionCurves[distoTypes[0]](0);
var highPass1 = context.createBiquadFilter();
highPass1.type = "highpass";
highPass1.frequency.value = 6;
highPass1.Q.value = 0.7071;
var lowShelf3 = context.createBiquadFilter();
lowShelf3.type = "lowshelf";
lowShelf3.frequency.value = 720;
lowShelf3.gain.value = -6;
var preampStage2Gain = context.createGain();
preampStage2Gain.gain.value = 1;
od[1] = context.createWaveShaper();
od[1].curve = wsFactoryDisto.distorsionCurves[distoTypes[1]](0);
changeDistorsionValues(4, 0);
changeDistorsionValues(4, 1);
var outputGain = context.createGain();
changeOutputGainValue(7);
var bassFilter = context.createBiquadFilter();
bassFilter.frequency.value = 100;
bassFilter.type = "lowshelf";
bassFilter.Q.value = 0.7071;
var midFilter = context.createBiquadFilter();
midFilter.frequency.value = 1700;
midFilter.type = "peaking";
midFilter.Q.value = 0.7071;
var trebleFilter = context.createBiquadFilter();
trebleFilter.frequency.value = 6500;
trebleFilter.type = "highshelf";
trebleFilter.Q.value = 0.7071;
var presenceFilter = context.createBiquadFilter();
presenceFilter.frequency.value = 3900;
presenceFilter.type = "peaking";
presenceFilter.Q.value = 0.7071;
var eqhicut = context.createBiquadFilter();
eqhicut.frequency.value = 10000;
eqhicut.type = "peaking";
eqhicut.gain.value = -25;
var eqlocut = context.createBiquadFilter();
eqlocut.frequency.value = 60;
eqlocut.type = "peaking";
eqlocut.gain.value = -19;
var bypassEQg = context.createGain();
bypassEQg.gain.value = 0;
var inputEQ = context.createGain();
var cabinetSim, reverb;
var masterVolume = context.createGain();
changeMasterVolume(2);
doAllConnections();
function doAllConnections() {
buildGraph();
changeRoom(7.5);
initPresets();
}
function buildGraph() {
input.connect(inputGain);
inputGain.connect(boost.input);
boost.output.connect(lowShelf1);
lowShelf1.connect(lowShelf2);
lowShelf2.connect(preampStage1Gain);
preampStage1Gain.connect(od[0]);
od[0].connect(highPass1);
highPass1.connect(lowShelf3);
lowShelf3.connect(preampStage2Gain);
preampStage2Gain.connect(od[1]);
od[1].connect(outputGain);
outputGain.connect(trebleFilter);
trebleFilter.connect(bassFilter);
bassFilter.connect(midFilter);
midFilter.connect(presenceFilter);
presenceFilter.connect(eqlocut);
eqlocut.connect(eqhicut);
eqhicut.connect(inputEQ);
eqhicut.connect(bypassEQg);
bypassEQg.connect(masterVolume);
inputEQ.connect(eq.input);
eq.output.connect(masterVolume);
masterVolume.connect(reverb.input);
reverb.output.connect(cabinetSim.input);
cabinetSim.output.connect(output);
}
function boostOnOff(cb) {
boost.toggle();
adjustOutputGainIfBoostActivated();
updateBoostLedButtonState(boost.isActivated());
}
function changeBoost(state) {
if (boost.isActivated() !== state) {
boost.onOff(state);
adjustOutputGainIfBoostActivated();
updateBoostLedButtonState(boost.isActivated());
} else {
}
}
function adjustOutputGainIfBoostActivated() {
if (boost.isActivated()) {
output.gain.value /= 2;
} else {
output.gain.value *= 2;
}
}
function updateBoostLedButtonState(activated) {}
function changeInputGainValue(sliderVal) {
input.gain.value = parseFloat(sliderVal);
}
function changeOutputGainValue(sliderVal) {
output.gain.value = parseFloat(sliderVal) / 10;
}
function changeLowShelf1FrequencyValue(sliderVal) {
var value = parseFloat(sliderVal);
lowShelf1.frequency.value = value;
}
function changeLowShelf1GainValue(sliderVal) {
var value = parseFloat(sliderVal);
lowShelf1.gain.value = value;
}
function changeLowShelf2FrequencyValue(sliderVal) {
var value = parseFloat(sliderVal);
lowShelf2.frequency.value = value;
}
function changeLowShelf2GainValue(sliderVal) {
var value = parseFloat(sliderVal);
lowShelf2.gain.value = value;
}
function changePreampStage1GainValue(sliderVal) {
var value = parseFloat(sliderVal);
preampStage1Gain.gain.value = value;
}
function changeHighPass1FrequencyValue(sliderVal) {
var value = parseFloat(sliderVal);
highPass1.frequency.value = value;
}
function changeHighPass1QValue(sliderVal) {
var value = parseFloat(sliderVal);
highPass1.Q.value = value;
}
function changeLowShelf3FrequencyValue(sliderVal) {
var value = parseFloat(sliderVal);
lowShelf3.frequency.value = value;
}
function changeLowShelf3GainValue(sliderVal) {
var value = parseFloat(sliderVal);
lowShelf3.gain.value = value;
}
function changePreampStage2GainValue(sliderVal) {
var value = parseFloat(sliderVal);
preampStage2Gain.gain.value = value;
}
function changeHicutFreqValue(sliderVal) {
var value = parseFloat(sliderVal);
for (var i = 0; i < 4; i++) {
hiCutFilters[i].frequency.value = value;
}
var output = document.querySelector("#hiCutFreq");
output.value = parseFloat(sliderVal).toFixed(1) + " Hz";
var slider = document.querySelector("#hiCutFreqSlider");
slider.value = parseFloat(sliderVal).toFixed(1);
}
function changeBassFilterValue(sliderVal) {
var value = parseFloat(sliderVal);
bassFilter.gain.value = (value - 10) * 7;
}
function changeMidFilterValue(sliderVal) {
var value = parseFloat(sliderVal);
midFilter.gain.value = (value - 5) * 4;
}
function changeTrebleFilterValue(sliderVal) {
var value = parseFloat(sliderVal);
trebleFilter.gain.value = (value - 10) * 10;
}
function changePresenceFilterValue(sliderVal) {
var value = parseFloat(sliderVal);
presenceFilter.gain.value = (value - 5) * 2;
}
function buildDistoMenu1() {
for (var p in wsFactoryDisto.distorsionCurves) {
var option = document.createElement("option");
option.value = p;
option.text = p;
menuDisto1.appendChild(option);
}
menuDisto1.onchange = changeDistoType1;
}
function buildDistoMenu2() {
for (var p in wsFactoryDisto.distorsionCurves) {
var option = document.createElement("option");
option.value = p;
option.text = p;
menuDisto2.appendChild(option);
}
menuDisto2.onchange = changeDistoType2;
}
function changeDistoType1() {
currentDistoName = menuDisto1.value;
distoTypes[0] = currentDistoName;
changeDrive(currentK);
}
function changeDistoType2() {
currentDistoName = menuDisto2.value;
distoTypes[1] = currentDistoName;
changeDrive(currentK);
}
function changeDisto1TypeFromPreset(name) {
currentDistoName = name;
distoTypes[0] = currentDistoName;
}
function changeDisto2TypeFromPreset(name) {
currentDistoName = name;
distoTypes[1] = currentDistoName;
}
function changeDrive(sliderValue) {
for (var i = 0; i < 2; i++) {
changeDistorsionValues(sliderValue, i);
}
}
function changeDistorsionValues(sliderValue, numDisto) {
var value = 150 * parseFloat(sliderValue);
var minp = 0;
var maxp = 1500;
var minv = Math.log(10);
var maxv = Math.log(1500);
var scale = (maxv - minv) / (maxp - minp);
value = Math.exp(minv + scale * (value - minp));
k[numDisto] = value;
od[numDisto].curve = wsFactoryDisto.distorsionCurves[distoTypes[numDisto]](
k[numDisto]
);
currentWSCurve = od[numDisto].curve;
var output = document.querySelector("#k" + numDisto);
var numSlider = numDisto + 1;
var slider = document.querySelector("#K" + numSlider + "slider");
var knob = document.querySelector("#Knob3");
var maxPosVal1 = Math.max(logToPos(k[2]), logToPos(k[3]));
var maxPosVal2 = Math.max(logToPos(k[0]), logToPos(k[1]));
var maxPosVal = Math.max(maxPosVal1, maxPosVal2);
var linearValue = parseFloat(maxPosVal).toFixed(1);
currentK = linearValue;
}
function logToPos(logValue) {
var minp = 0;
var maxp = 1500;
var minv = Math.log(10);
var maxv = Math.log(1500);
var scale = (maxv - minv) / (maxp - minp);
return (minp + (Math.log(logValue) - minv) / scale) / 150;
}
function changeOversampling(cb) {
for (var i = 0; i < 2; i++) {
if (cb.checked) {
od[i].oversample = "4x";
boost.setOversampling("4x");
} else {
od[i].oversample = "none";
boost.setOversampling("none");
}
}
}
function getDistorsionValue(numChannel) {
var pos = logToPos(k[numChannel]);
return parseFloat(pos).toFixed(1);
}
function drawDistoCurves(distoDrawer, signalDrawer, curve) {
var c = curve;
distoDrawer.clear();
drawCurve(distoDrawer, c);
signalDrawer.clear();
signalDrawer.drawAxis();
signalDrawer.makeCurve(Math.sin, 0, Math.PI * 2);
signalDrawer.drawCurve("red", 2);
var cTransformed = distord(c);
drawCurve(signalDrawer, cTransformed);
}
function distord(c) {
var curveLength = c.length;
var c2 = new Float32Array(DRAWER_CANVAS_SIZE);
var incX = (2 * Math.PI) / DRAWER_CANVAS_SIZE;
var x = 0;
for (var i = 0; i < DRAWER_CANVAS_SIZE; i++) {
var index = map(Math.sin(x), -1, 1, 0, curveLength - 1);
c2[i] = c[Math.round(index)];
x += incX;
}
return c2;
}
function changeQValues(sliderVal, numQ) {
var value = parseFloat(sliderVal);
filters[numQ].Q.value = value;
var output = document.querySelector("#q" + numQ);
output.value = value.toFixed(1);
var numSlider = numQ + 1;
var slider = document.querySelector("#Q" + numSlider + "slider");
slider.value = value;
}
function changeFreqValues(sliderVal, numF) {
var value = parseFloat(sliderVal);
filters[numF].frequency.value = value;
var output = document.querySelector("#freq" + numF);
output.value = value + " Hz";
var numSlider = numF + 1;
var slider = document.querySelector("#F" + numSlider + "slider");
slider.value = value;
}
function changeOutputGain(sliderVal) {
var value = parseFloat(sliderVal / 10);
outputGain.gain.value = value;
}
function changeInputGain(sliderVal) {
var value = parseFloat(sliderVal / 10);
inputGain.gain.value = value;
var knob = document.querySelector("#Knob1");
knob.setValue(parseFloat(sliderVal).toFixed(1), false);
}
function changeMasterVolume(sliderVal) {
var value = parseFloat(sliderVal);
masterVolume.gain.value = value;
var knob = document.querySelector("#Knob2");
}
function changeReverbGain(sliderVal) {
var value = parseFloat(sliderVal) / 10;
reverb.setGain(value);
}
function changeReverbImpulse(name) {
console.log("---- LOADING reverb impulse " + name);
reverb.loadImpulseByName(name);
}
function changeRoom(sliderVal) {
var value = parseFloat(sliderVal) / 10;
cabinetSim.setGain(value);
var output = document.querySelector("#cabinetGainOutput");
var slider = document.querySelector("#convolverCabinetSlider");
}
function changeCabinetSimImpulse(name) {
console.log("---- LOADING cabinet impulse " + name);
cabinetSim.loadImpulseByName(name);
}
function changeEQValues(eqValues) {
eq.setValues(eqValues);
}
function makeDistortionCurve(k) {
currentWSCurve = wsFactoryDisto.distorsionCurves[currentDistoName](k);
return currentWSCurve;
}
function initPresets() {
var preset0 = {
name: "Default",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -6.300000190734863,
gain1: 3,
distoName1: "asymetric",
K1: "3",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "crunch",
K2: "3.0",
OG: "3.0",
BF: "3.0",
MF: "3.0",
TF: "3.0",
PF: "3.0",
EQ: [5, 5, 5, 5, 5, 5],
MV: "3.0",
RN: "Fender Hot Rod",
RG: "3.0",
CN: "Marshall 1960, axis",
CG: "3.0",
};
presets.push(preset0);
var preset1 = {
name: "Jimmy HDX",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -6.300000190734863,
gain1: 1,
distoName1: "asymetric",
K1: "10.0",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "crunch",
K2: "10.0",
OG: "2.0",
BF: "6.7",
MF: "5.0",
TF: "5.0",
PF: "8.9",
EQ: [4, 13, -8, -8, 15, 12],
MV: "3.7",
RN: "Fender Hot Rod",
RG: "1.7",
CN: "Marshall 1960, axis",
CG: "4.5",
};
presets.push(preset1);
var preset2 = {
name: "Slasher",
boost: true,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -5,
gain1: 1,
distoName1: "asymetric",
K1: "4.4",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "notSoDistorded",
K2: "8.7",
OG: "2.3",
BF: "5.5",
MF: "7.7",
TF: "2.7",
PF: "10",
EQ: [5, 11, -6, -10, 7, 2],
MV: "4.6",
RN: "Fender Hot Rod",
RG: "1.2",
CN: "Fender Champ, axis",
CG: "3.9",
};
presets.push(preset2);
var preset3 = {
name: "Metal",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -10.199999809265137,
gain1: 1,
distoName1: "notSoDistorded",
K1: "8",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "vertical",
K2: "8",
OG: "1.8",
BF: "8.7",
MF: "7.6",
TF: "3.8",
PF: "9.4",
EQ: [19, 8, -6, -10, 7, 2],
MV: "2.8",
RN: "Fender Hot Rod",
RG: "0.7",
CN: "Marshall 1960, axis",
CG: "1.5",
};
presets.push(preset3);
var preset4 = {
name: "Hard Rock classic 1",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -5,
gain1: 1,
distoName1: "asymetric",
K1: "7.8",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "notSoDistorded",
K2: "7.8",
OG: "1.9",
BF: "8.2",
MF: "8.2",
TF: "3.8",
PF: "6.9",
EQ: [5, 11, -6, -10, 7, 2],
MV: "7.2",
RN: "Fender Hot Rod",
RG: "2.0",
CN: "Marshall 1960, axis",
CG: "9.4",
};
presets.push(preset4);
var preset5 = {
name: "Hard Rock classic 2",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -10.199999809265137,
gain1: 1,
distoName1: "standard",
K1: "5.2",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "notSoDistorded",
K2: "5.1",
OG: "2",
BF: "8.7",
MF: "8.0",
TF: "3.8",
PF: "9.4",
EQ: [19, 8, -6, -10, 7, 2],
MV: "5.5",
RN: "Fender Hot Rod",
RG: "0.7",
CN: "Marshall 1960, axis",
CG: "9.2",
};
presets.push(preset5);
var preset6 = {
name: "Clean and Warm",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: 1.600000023841858,
gain1: 1,
distoName1: "asymetric",
K1: "7.8",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "standard",
K2: "0.9",
OG: "3.0",
BF: "6.7",
MF: "4.7",
TF: "3.2",
PF: "6.9",
EQ: [10, 5, -7, -7, 16, 0],
MV: "7.2",
RN: "Fender Hot Rod",
RG: "1.4",
CN: "Marshall 1960, axis",
CG: "8.8",
};
presets.push(preset6);
var preset7 = {
name: "Strong and Warm",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -1,
gain1: 1.0299999713897705,
distoName1: "asymetric",
K1: "7.8",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "superClean",
K2: "7.8",
OG: "7.0",
BF: "8.2",
MF: "6.7",
TF: "5.0",
PF: "6.9",
EQ: [0, 0, 0, -1, 0, 1],
MV: "5.9",
RN: "Fender Hot Rod",
RG: "1.1",
CN: "Vox Custom Bright 4x12 M930 Axis 1",
CG: "8.0",
};
presets.push(preset7);
var preset8 = {
name: "Another Clean Sound",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -6.300000190734863,
gain1: 1,
distoName1: "asymetric",
K1: "6.4",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "crunch",
K2: "6.4",
OG: "7.0",
BF: "6.7",
MF: "5.0",
TF: "5.0",
PF: "8.9",
EQ: [4, 13, -8, -8, 15, 12],
MV: "3.7",
RN: "Fender Hot Rod",
RG: "2",
CN: "Marshall 1960, axis",
CG: "4.5",
};
presets.push(preset8);
var preset9 = {
name: "Hard Rock Classic 3",
boost: false,
LS1Freq: 720,
LS1Gain: -6,
LS2Freq: 320,
LS2Gain: -10.199999809265137,
gain1: 1,
distoName1: "standard",
K1: "5.2",
HP1Freq: 6,
HP1Q: 0.707099974155426,
LS3Freq: 720,
LS3Gain: -6,
gain2: 1,
distoName2: "notSoDistorded",
K2: "5.1",
OG: "2.7",
BF: "8.7",
MF: "8.0",
TF: "3.8",
PF: "9.4",
EQ: [19, 8, -6, -10, 7, 2],
MV: "5.5",
RN: "Fender Hot Rod",
RG: "0.7",
CN: "Marshall 1960, axis",
CG: "9.2",
};
presets.push(preset9);
}
function setPresetByIndex(parent, index) {
setPreset(parent, presets[index]);
}
function setPreset(parent, p) {
if (p.distoName1 === undefined) {
p.distoName1 = "standard";
}
if (p.distoName2 === undefined) {
p.distoName2 = "standard";
}
if (p.boost === undefined) p.boost = false;
changeBoost(p.boost);
changeLowShelf1FrequencyValue(p.LS1Freq);
changeLowShelf1GainValue(p.LS1Gain);
changeLowShelf2FrequencyValue(p.LS2Freq);
changeLowShelf2GainValue(p.LS2Gain);
changePreampStage1GainValue(p.gain1);
changeDisto1TypeFromPreset(p.distoName1);
changeDistorsionValues(p.K1, 0);
changeLowShelf3FrequencyValue(p.LS3Freq);
changeLowShelf3GainValue(p.LS3Gain);
changePreampStage2GainValue(p.gain2);
changeDisto2TypeFromPreset(p.distoName2);
changeDistorsionValues(p.K2, 1);
parent.volume = p.OG;
parent.bass = p.BF;
parent.middle = p.MF;
parent.treble = p.TF;
parent.presence = p.PF;
parent.master = p.MV;
parent.reverb = p.RG;
parent.drive = p.K1;
parent.LS1Freq = p.LS1Freq;
parent.LS1Gain = p.LS1Gain;
parent.LS2Freq = p.LS2Freq;
parent.LS2Gain = p.LS2Gain;
parent.LS3Freq = p.LS3Freq;
parent.LS3Gain = p.LS3Gain;
parent.gain1 = p.gain1;
parent.gain2 = p.gain2;
parent.HP1Freq = p.HP1Freq;
parent.HP1Q = p.HP1Q;
parent.EQ = p.EQ;
parent.boost = p.boost;
parent.distoName1 = p.distoName1;
parent.distoName2 = p.distoName2;
parent.CG = p.CG;
changeReverbImpulse(p.RN);
changeRoom(p.CG);
changeCabinetSimImpulse(p.CN);
changeEQValues(p.EQ);
try {
parent.gui.setAttribute("state", JSON.stringify(parent.params));
} catch (error) {}
}
function getPresets() {
return presets;
}
function setDefaultPreset() {
setPreset(preset0);
}
function printCurrentAmpValues() {
var currentPresetValue = {
name: "current",
boost: boost.isActivated(),
LS1Freq: lowShelf1.frequency.value,
LS1Gain: lowShelf1.gain.value,
LS2Freq: lowShelf2.frequency.value,
LS2Gain: lowShelf2.gain.value,
gain1: preampStage1Gain.gain.value,
distoName1: menuDisto1.value,
K1: getDistorsionValue(0),
HP1Freq: highPass1.frequency.value,
HP1Q: highPass1.Q.value,
LS3Freq: lowShelf3.frequency.value,
LS3Gain: lowShelf3.gain.value,
gain2: preampStage2Gain.gain.value,
distoName2: menuDisto2.value,
K2: getDistorsionValue(1),
OG: (output.gain.value * 10).toFixed(1),
BF: (bassFilter.gain.value / 7 + 10).toFixed(1),
MF: (midFilter.gain.value / 4 + 5).toFixed(1),
TF: (trebleFilter.gain.value / 10 + 10).toFixed(1),
PF: (presenceFilter.gain.value / 2 + 5).toFixed(1),
EQ: eq.getValues(),
MV: masterVolume.gain.value.toFixed(1),
RN: reverb.getName(),
RG: (reverb.getGain() * 10).toFixed(1),
CN: cabinetSim.getName(),
CG: (cabinetSim.getGain() * 10).toFixed(1),
};
}
function bypass(bypassOn, amp) {
if (!bypassOn) {
input.disconnect();
input.connect(output);
amp.params.status = "disable";
} else {
input.disconnect();
input.connect(inputGain);
amp.params.status = "enable";
}
/*
this._input.connect(this.amp.input);
this.amp.output.connect(this._output);
*/
}
function bypassEQ(cb) {
if (cb.checked) {
inputEQ.gain.value = 1;
bypassEQg.gain.value = 0;
} else {
inputEQ.gain.value = 0;
bypassEQg.gain.value = 1;
}
}
return {
input: input,
output: output,
boostOnOff: boostOnOff,
eq: eq,
reverb: reverb,
cabinet: cabinetSim,
changeInputGainValue: changeInputGainValue,
changeOutputGainValue: changeOutputGainValue,
changeLowShelf1FrequencyValue: changeLowShelf1FrequencyValue,
changeLowShelf1GainValue: changeLowShelf1GainValue,
changeLowShelf2FrequencyValue: changeLowShelf2FrequencyValue,
changeLowShelf2GainValue: changeLowShelf2GainValue,
changePreampStage1GainValue: changePreampStage1GainValue,
changeHighPass1FrequencyValue: changeHighPass1FrequencyValue,
changeHighPass1QValue: changeHighPass1QValue,
changeLowShelf3FrequencyValue: changeLowShelf3FrequencyValue,
changeLowShelf3GainValue: changeLowShelf3GainValue,
changePreampStage2GainValue: changePreampStage2GainValue,
changeBassFilterValue: changeBassFilterValue,
changeMidFilterValue: changeMidFilterValue,
changeTrebleFilterValue: changeTrebleFilterValue,
changePresenceFilterValue: changePresenceFilterValue,
changeDrive: changeDrive,
changeDistorsionValues: changeDistorsionValues,
changeOversampling: changeOversampling,
changeOutputGain: changeOutputGain,
changeInputGain: changeInputGain,
changeMasterVolume: changeMasterVolume,
changeReverbGain: changeReverbGain,
changeRoom: changeRoom,
changeEQValues: changeEQValues,
setDefaultPreset: setDefaultPreset,
getPresets: getPresets,
setPreset: setPreset,
setPresetByIndex: setPresetByIndex,
printCurrentAmpValues: printCurrentAmpValues,
bypass: bypass,
bypassEQ: bypassEQ,
};
}