clean interface
This commit is contained in:
@ -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),
|
||||
|
||||
Reference in New Issue
Block a user