mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-25 12:38:35 +00:00
fix: additive synthesis
This commit is contained in:
parent
a57c2b9fe5
commit
c085694a8b
@ -73,13 +73,13 @@ export function waveformN(partials, type) {
|
|||||||
const ac = getAudioContext();
|
const ac = getAudioContext();
|
||||||
const osc = ac.createOscillator();
|
const osc = ac.createOscillator();
|
||||||
|
|
||||||
const amplitudes = {
|
const terms = {
|
||||||
sawtooth: (n) => 1 / n,
|
sawtooth: (n) => [0, -1 / n],
|
||||||
square: (n) => (n % 2 === 0 ? 0 : 1 / n),
|
square: (n) => [0, n % 2 === 0 ? 0 : 1 / n],
|
||||||
triangle: (n) => (n % 2 === 0 ? 0 : 1 / (n * n)),
|
triangle: (n) => [n % 2 === 0 ? 0 : 1 / (n * n), 0],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!amplitudes[type]) {
|
if (!terms[type]) {
|
||||||
throw new Error(`unknown wave type ${type}`);
|
throw new Error(`unknown wave type ${type}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,8 +87,9 @@ export function waveformN(partials, type) {
|
|||||||
imag[0] = 0;
|
imag[0] = 0;
|
||||||
let n = 1;
|
let n = 1;
|
||||||
while (n <= partials) {
|
while (n <= partials) {
|
||||||
real[n] = amplitudes[type](n);
|
const [r, i] = terms[type](n);
|
||||||
imag[n] = 0;
|
real[n] = r;
|
||||||
|
imag[n] = i;
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user