clean interface

This commit is contained in:
2025-10-12 11:32:36 +02:00
parent 6c11c5756a
commit fcb784d403
13 changed files with 536 additions and 118 deletions

View File

@ -1,4 +1,4 @@
import type { SynthEngine } from './SynthEngine';
import type { SynthEngine, PitchLock } from './SynthEngine';
interface WavetableParams {
bankIndex: number;
@ -211,12 +211,14 @@ export class WavetableEngine implements SynthEngine<WavetableParams> {
return [left, right];
}
randomParams(): WavetableParams {
randomParams(pitchLock?: PitchLock): WavetableParams {
const freqs = [110, 146.8, 220, 293.7, 440];
return {
bankIndex: Math.random(),
position: 0.2 + Math.random() * 0.6,
baseFreq: freqs[Math.floor(Math.random() * freqs.length)],
baseFreq: pitchLock?.enabled
? pitchLock.frequency
: freqs[Math.floor(Math.random() * freqs.length)],
filterCutoff: 0.5 + Math.random() * 0.4,
filterResonance: Math.random() * 0.5,
attack: 0.001 + Math.random() * 0.05,
@ -226,15 +228,17 @@ export class WavetableEngine implements SynthEngine<WavetableParams> {
};
}
mutateParams(params: WavetableParams): WavetableParams {
mutateParams(params: WavetableParams, mutationAmount?: number, pitchLock?: PitchLock): WavetableParams {
const mutate = (v: number, amount: number = 0.1) => {
return Math.max(0, Math.min(1, v + (Math.random() - 0.5) * amount));
};
const baseFreq = pitchLock?.enabled ? pitchLock.frequency : params.baseFreq;
return {
bankIndex: Math.random() < 0.2 ? Math.random() : params.bankIndex,
position: mutate(params.position, 0.2),
baseFreq: params.baseFreq,
baseFreq,
filterCutoff: mutate(params.filterCutoff, 0.2),
filterResonance: mutate(params.filterResonance, 0.15),
attack: mutate(params.attack, 0.1),