fix: conflicts

This commit is contained in:
Vasilii Milovidov 2023-10-07 19:30:07 +04:00
parent 2f0798de32
commit b25b9d815b
2 changed files with 17 additions and 13 deletions

View File

@ -19,10 +19,9 @@ if (typeof AudioContext !== 'undefined') {
AudioContext.prototype.createReverb = function (duration, fade, lp, dim, ir) { AudioContext.prototype.createReverb = function (duration, fade, lp, dim, ir) {
const convolver = this.createConvolver(); const convolver = this.createConvolver();
convolver.generate = (d, fade, lp, dim, buf) => { convolver.generate = (d = 2, fade = 0.1, lp = 15000, dim = 1000, buf) => {
if (buf) { if (buf) {
convolver.buffer = this.adjustLength(d, buf); convolver.buffer = this.adjustLength(d, buf);
return convolver;
} else { } else {
this.generateReverb( this.generateReverb(
{ {
@ -42,7 +41,6 @@ if (typeof AudioContext !== 'undefined') {
convolver.fade = fade; convolver.fade = fade;
convolver.lp = lp; convolver.lp = lp;
convolver.dim = dim; convolver.dim = dim;
return convolver;
} }
}; };
convolver.setIR = (d, fade, lp, dim, buf) => { convolver.setIR = (d, fade, lp, dim, buf) => {

View File

@ -114,6 +114,8 @@ function getDelay(orbit, delaytime, delayfeedback, t) {
let reverbs = {}; let reverbs = {};
let hasChanged = (now, before) => now !== undefined && now !== before;
function getReverb(orbit, duration = 2, fade, lp, dim, ir) { function getReverb(orbit, duration = 2, fade, lp, dim, ir) {
if (!reverbs[orbit]) { if (!reverbs[orbit]) {
const ac = getAudioContext(); const ac = getAudioContext();
@ -123,13 +125,17 @@ function getReverb(orbit, duration = 2, fade, lp, dim, ir) {
} }
if ( if (
reverbs[orbit].duration !== duration || hasChanged(duration, reverbs[orbit].duration) ||
reverbs[orbit].fade !== fade || hasChanged(fade, reverbs[orbit].fade) ||
reverbs[orbit].ir !== lp || hasChanged(lp, reverbs[orbit].lp) ||
reverbs[orbit].dim !== dim || hasChanged(dim, reverbs[orbit].dim)
reverbs[orbit].ir !== ir
) { ) {
reverbs[orbit].generate(duration, fade, lp, dim, ir); // 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);
} }
if (reverbs[orbit].ir !== ir) { if (reverbs[orbit].ir !== ir) {
@ -235,10 +241,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,
ir, ir,
i = 0, i = 0,
velocity = 1, velocity = 1,