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,45 @@
|
||||
import * as Tone from "https://esm.sh/tone";
|
||||
|
||||
export class Kicker {
|
||||
constructor(toneContext, data = {}) {
|
||||
this.params = data.kicker || data || {};
|
||||
|
||||
// MembraneSynth é perfeito para Kicks e Toms
|
||||
this.synth = new Tone.MembraneSynth({
|
||||
pitchDecay: 0.05,
|
||||
octaves: 6, // O Kicker desce muitas oitavas
|
||||
oscillator: { type: "sine" },
|
||||
envelope: {
|
||||
attack: 0.001,
|
||||
decay: 0.4,
|
||||
sustain: 0.01,
|
||||
release: 1.4
|
||||
}
|
||||
});
|
||||
|
||||
// Distorção opcional (O Kicker tem um drive)
|
||||
this.dist = new Tone.Distortion(0.1).toDestination();
|
||||
this.synth.disconnect();
|
||||
this.synth.connect(this.dist);
|
||||
|
||||
this.output = this.dist;
|
||||
}
|
||||
|
||||
triggerAttackRelease(note, duration, time) {
|
||||
// O Kicker original geralmente ignora a nota MIDI e usa frequências fixas (Start/End freq)
|
||||
// Mas para facilitar a composição, vamos permitir que ele toque a nota do Piano Roll
|
||||
// Se quiser ser fiel ao LMMS, teríamos que ler this.params.start_freq
|
||||
|
||||
// Vamos usar a nota C1 ou C2 como base se a nota vier muito aguda
|
||||
this.synth.triggerAttackRelease(note, duration, time);
|
||||
}
|
||||
|
||||
connect(dest) {
|
||||
this.output.connect(dest);
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this.synth.dispose();
|
||||
this.dist.dispose();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user