synth setup with tone.js

This commit is contained in:
2026-01-25 09:54:02 +00:00
parent 09bc2b8c3f
commit 853e024bf7

47
src/lib/audio/synth.ts Normal file
View File

@@ -0,0 +1,47 @@
import * as Tone from "tone";
export type SynthNodes = {
oscillatorA: Tone.Oscillator;
oscillatorB: Tone.Oscillator;
crossFade: Tone.CrossFade;
noise: Tone.Noise;
gain: Tone.Gain;
};
export function createSynth(): SynthNodes {
const oscillatorA = new Tone.Oscillator({ type: "sawtooth" });
const oscillatorB = new Tone.Oscillator({ type: "sine" });
const crossFade = new Tone.CrossFade(0);
const noise = new Tone.Noise({ type: "white" });
const gain = new Tone.Gain(0.5);
oscillatorA.connect(crossFade.a);
oscillatorB.connect(crossFade.b);
crossFade.connect(gain);
noise.connect(gain);
gain.toDestination();
oscillatorA.start();
oscillatorB.start();
noise.start();
return {
oscillatorA,
oscillatorB,
crossFade,
noise,
gain,
};
}
export function disposeSynth(nodes: SynthNodes) {
nodes.oscillatorA.stop();
nodes.oscillatorB.stop();
nodes.noise.stop();
nodes.oscillatorA.dispose();
nodes.oscillatorB.dispose();
nodes.crossFade.dispose();
nodes.noise.dispose();
nodes.gain.dispose();
}