mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-26 13:08:28 +00:00
fix: reverb regenerate loophole
This commit is contained in:
parent
0b888ac54d
commit
4718bfac25
@ -4,7 +4,7 @@ if (typeof AudioContext !== 'undefined') {
|
|||||||
AudioContext.prototype.generateReverb = reverbGen.generateReverb;
|
AudioContext.prototype.generateReverb = reverbGen.generateReverb;
|
||||||
AudioContext.prototype.createReverb = function (duration, fade, lp, dim) {
|
AudioContext.prototype.createReverb = function (duration, fade, lp, dim) {
|
||||||
const convolver = this.createConvolver();
|
const convolver = this.createConvolver();
|
||||||
convolver.generate = (d, fade, lp, dim) => {
|
convolver.generate = (d = 2, fade = 0.1, lp = 15000, dim = 1000) => {
|
||||||
this.generateReverb(
|
this.generateReverb(
|
||||||
{
|
{
|
||||||
audioContext: this,
|
audioContext: this,
|
||||||
|
|||||||
@ -108,7 +108,9 @@ function getDelay(orbit, delaytime, delayfeedback, t) {
|
|||||||
|
|
||||||
let reverbs = {};
|
let reverbs = {};
|
||||||
|
|
||||||
function getReverb(orbit, duration = 2, fade, lp, dim) {
|
let hasChanged = (now, before) => now !== undefined && now !== before;
|
||||||
|
|
||||||
|
function getReverb(orbit, duration, fade, lp, dim) {
|
||||||
// If no reverb has been created for a given orbit, create one
|
// If no reverb has been created for a given orbit, create one
|
||||||
if (!reverbs[orbit]) {
|
if (!reverbs[orbit]) {
|
||||||
const ac = getAudioContext();
|
const ac = getAudioContext();
|
||||||
@ -118,11 +120,16 @@ function getReverb(orbit, duration = 2, fade, lp, dim) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
reverbs[orbit].duration !== duration ||
|
hasChanged(duration, reverbs[orbit].duration) ||
|
||||||
reverbs[orbit].fade !== fade ||
|
hasChanged(fade, reverbs[orbit].fade) ||
|
||||||
reverbs[orbit].lp !== lp ||
|
hasChanged(lp, reverbs[orbit].lp) ||
|
||||||
reverbs[orbit].dim !== dim
|
hasChanged(dim, reverbs[orbit].dim)
|
||||||
) {
|
) {
|
||||||
|
// only regenerate when something has changed
|
||||||
|
// avoids endless regeneration on things like
|
||||||
|
// stack(s("a"), s("b").rsize(8)).room(.5)
|
||||||
|
// this only works when args may stay undefined until here
|
||||||
|
// setting default values breaks this
|
||||||
reverbs[orbit].generate(duration, fade, lp, dim);
|
reverbs[orbit].generate(duration, fade, lp, dim);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,10 +230,10 @@ export const superdough = async (value, deadline, hapDuration) => {
|
|||||||
delaytime = 0.25,
|
delaytime = 0.25,
|
||||||
orbit = 1,
|
orbit = 1,
|
||||||
room,
|
room,
|
||||||
roomfade = 0.1,
|
roomfade,
|
||||||
roomlp = 15000,
|
roomlp,
|
||||||
roomdim = 1000,
|
roomdim,
|
||||||
roomsize = 2,
|
roomsize,
|
||||||
velocity = 1,
|
velocity = 1,
|
||||||
analyze, // analyser wet
|
analyze, // analyser wet
|
||||||
fft = 8, // fftSize 0 - 10
|
fft = 8, // fftSize 0 - 10
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user