plugin v1.0.0
This commit is contained in:
1 parent
12c5b55bce
commit
44fce48bb5
12 files changed
+1316
-635
No files matched your search
@@ -0,0 +1,51 @@
|
||||
// js/plugins/SuperSaw.js
|
||||
import * as Tone from "https://esm.sh/tone";
|
||||
|
||||
export class SuperSaw {
|
||||
constructor(toneContext, data = {}) {
|
||||
// Tenta pegar dados de qualquer um dos plugins que usam esse motor
|
||||
this.params = data.zynaddsubfx || data.watsyn || data || {};
|
||||
|
||||
// O "FatSawtooth" do Tone.js cria 3 serras desafinadas automaticamente
|
||||
this.synth = new Tone.PolySynth(Tone.Synth, {
|
||||
oscillator: {
|
||||
type: "fatsawtooth",
|
||||
count: 3, // 3 serras por voz
|
||||
spread: 20 // Desafinação entre elas (o "gordura")
|
||||
},
|
||||
envelope: {
|
||||
attack: 0.01, // Ataque rápido (lead)
|
||||
decay: 0.1,
|
||||
sustain: 0.6,
|
||||
release: 0.4 // Release médio para "encher" o som
|
||||
},
|
||||
volume: -6 // Reduz um pouco pois o Fatsawtooth é alto
|
||||
});
|
||||
|
||||
// Efeitos para dar "largura" estéreo (O segredo do SuperSaw)
|
||||
// Chorus: duplica o sinal e desafina levemente
|
||||
this.chorus = new Tone.Chorus(4, 2.5, 0.5).start();
|
||||
|
||||
// Filtro para cortar frequências muito agudas e evitar chiado digital
|
||||
this.filter = new Tone.Filter(8000, "lowpass");
|
||||
|
||||
// Cadeia: Synth -> Chorus -> Filter -> Output
|
||||
this.synth.chain(this.chorus, this.filter);
|
||||
|
||||
this.output = this.filter;
|
||||
}
|
||||
|
||||
triggerAttackRelease(note, duration, time) {
|
||||
this.synth.triggerAttackRelease(note, duration, time);
|
||||
}
|
||||
|
||||
connect(dest) {
|
||||
this.output.connect(dest);
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this.synth.dispose();
|
||||
this.chorus.dispose();
|
||||
this.filter.dispose();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user