Compare commits

...

1 Commits

Author SHA1 Message Date
Felix Roos 751c4b7390 add pregain + move postgain after sends 2024-01-12 18:56:00 +01:00
2 changed files with 20 additions and 8 deletions
+6 -1
View File
@@ -87,7 +87,12 @@ const generic_params = [
*/ */
['gain'], ['gain'],
/** /**
* Gain applied after all effects have been processed. * Gain applied before effect sends (delay, reverb ...)
*
*/
['pregain'],
/**
* Gain applied after effect sends (delay, reverb ...)
* *
* @name postgain * @name postgain
* @example * @example
+14 -7
View File
@@ -272,7 +272,8 @@ export const superdough = async (value, deadline, hapDuration) => {
bank, bank,
source, source,
gain = 0.8, gain = 0.8,
postgain = 1, pregain = 1,
postgain,
density = 0.03, density = 0.03,
// filters // filters
ftype = '12db', ftype = '12db',
@@ -470,16 +471,15 @@ export const superdough = async (value, deadline, hapDuration) => {
chain.push(phaserFX); chain.push(phaserFX);
} }
// last gain // pre fx gain
const post = new GainNode(ac, { gain: postgain }); const pre = new GainNode(ac, { gain: pregain });
chain.push(post); chain.push(pre);
connectToDestination(post, channels);
// delay // delay
let delaySend; let delaySend;
if (delay > 0 && delaytime > 0 && delayfeedback > 0) { if (delay > 0 && delaytime > 0 && delayfeedback > 0) {
const delyNode = getDelay(orbit, delaytime, delayfeedback, t); const delyNode = getDelay(orbit, delaytime, delayfeedback, t);
delaySend = effectSend(post, delyNode, delay); delaySend = effectSend(pre, delyNode, delay);
} }
// reverb // reverb
let reverbSend; let reverbSend;
@@ -496,9 +496,16 @@ export const superdough = async (value, deadline, hapDuration) => {
roomIR = await loadBuffer(url, ac, ir, 0); roomIR = await loadBuffer(url, ac, ir, 0);
} }
const reverbNode = getReverb(orbit, roomsize, roomfade, roomlp, roomdim, roomIR); const reverbNode = getReverb(orbit, roomsize, roomfade, roomlp, roomdim, roomIR);
reverbSend = effectSend(post, reverbNode, room); reverbSend = effectSend(pre, reverbNode, room);
} }
let post = pre;
if (postgain !== undefined) {
// post fx gain
post = new GainNode(ac, { gain: postgain });
chain.push(post);
}
connectToDestination(post, channels);
// analyser // analyser
let analyserSend; let analyserSend;
if (analyze) { if (analyze) {