Merge pull request 'Bug Fix: Set pooled values immediately instead of scheduling' (#1907) from glossing/set-pooled-vals-immediately into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1907
This commit is contained in:
commit
d605fbbde8
3 changed files with 4 additions and 8 deletions
|
|
@ -154,9 +154,8 @@ export function getCompressor(ac, threshold, ratio, knee, attack, release) {
|
||||||
attack: attack ?? 0.005,
|
attack: attack ?? 0.005,
|
||||||
release: release ?? 0.05,
|
release: release ?? 0.05,
|
||||||
};
|
};
|
||||||
const now = ac.currentTime;
|
|
||||||
Object.entries(options).forEach(([key, value]) => {
|
Object.entries(options).forEach(([key, value]) => {
|
||||||
node[key].setValueAtTime(value, now);
|
node[key].value = value;
|
||||||
});
|
});
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
@ -242,9 +241,8 @@ export function createFilter(context, start, end, params, cps, cycle) {
|
||||||
const factory = () => context.createBiquadFilter();
|
const factory = () => context.createBiquadFilter();
|
||||||
filter = getNodeFromPool('filter', factory);
|
filter = getNodeFromPool('filter', factory);
|
||||||
filter.type = type;
|
filter.type = type;
|
||||||
const now = context.currentTime;
|
|
||||||
Object.entries({ Q: q, frequency }).forEach(([key, value]) => {
|
Object.entries({ Q: q, frequency }).forEach(([key, value]) => {
|
||||||
filter[key].setValueAtTime(value, now);
|
filter[key].value = value;
|
||||||
});
|
});
|
||||||
frequencyParam = filter.frequency;
|
frequencyParam = filter.frequency;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -178,11 +178,10 @@ export function registerSynthSounds() {
|
||||||
};
|
};
|
||||||
const factory = () => new AudioWorkletNode(ac, 'supersaw-oscillator', { outputChannelCount: [2] });
|
const factory = () => new AudioWorkletNode(ac, 'supersaw-oscillator', { outputChannelCount: [2] });
|
||||||
const o = getNodeFromPool('supersaw', factory);
|
const o = getNodeFromPool('supersaw', factory);
|
||||||
const now = ac.currentTime;
|
|
||||||
Object.entries(params).forEach(([key, value]) => {
|
Object.entries(params).forEach(([key, value]) => {
|
||||||
const param = o.parameters.get(key);
|
const param = o.parameters.get(key);
|
||||||
const target = value !== undefined ? value : param.defaultValue;
|
const target = value !== undefined ? value : param.defaultValue;
|
||||||
param.setValueAtTime(target, now);
|
param.value = target;
|
||||||
});
|
});
|
||||||
o.port.postMessage({ type: 'initialize' });
|
o.port.postMessage({ type: 'initialize' });
|
||||||
const gainAdjustment = 1 / Math.sqrt(voices);
|
const gainAdjustment = 1 / Math.sqrt(voices);
|
||||||
|
|
|
||||||
|
|
@ -244,11 +244,10 @@ export async function onTriggerSynth(t, value, onended, tables, cps, frameLen) {
|
||||||
};
|
};
|
||||||
const factory = () => new AudioWorkletNode(ac, 'wavetable-oscillator-processor', { outputChannelCount: [2] });
|
const factory = () => new AudioWorkletNode(ac, 'wavetable-oscillator-processor', { outputChannelCount: [2] });
|
||||||
const source = getNodeFromPool('wavetable', factory);
|
const source = getNodeFromPool('wavetable', factory);
|
||||||
const now = ac.currentTime;
|
|
||||||
Object.entries(params).forEach(([key, value]) => {
|
Object.entries(params).forEach(([key, value]) => {
|
||||||
const param = source.parameters.get(key);
|
const param = source.parameters.get(key);
|
||||||
const target = value !== undefined ? value : param.defaultValue;
|
const target = value !== undefined ? value : param.defaultValue;
|
||||||
param.setValueAtTime(target, now);
|
param.value = target;
|
||||||
});
|
});
|
||||||
source.port.postMessage({ type: 'initialize', payload });
|
source.port.postMessage({ type: 'initialize', payload });
|
||||||
if (ac.currentTime > t) {
|
if (ac.currentTime > t) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue