When portamento is enabled on Tone.MonoSynth, a new triggerAttack() can still sound like a glide if the previous note has already received triggerRelease() but is still in its release phase.
This is surprising because setNote() is not used: the second note is triggered as a fresh attack, but portamento is still audible.
Expected
triggerAttack() after triggerRelease() should sound like a new note, not a glide.
Actual
If the previous note is still fading out, the next triggerAttack() may still inherit audible portamento.
Minimal example
const synth = new Tone.MonoSynth({
portamento: 0.03,
envelope: { attack: 0.001, decay: 0.05, sustain: 0.8, release: 0.1 }
}).toDestination();
const now = Tone.now();
synth.triggerAttack("E4", now);
synth.triggerRelease(now + 0.10);
synth.triggerAttack("C5", now + 0.14);
synth.triggerRelease(now + 0.24);
When
portamentois enabled onTone.MonoSynth, a newtriggerAttack()can still sound like a glide if the previous note has already receivedtriggerRelease()but is still in its release phase.This is surprising because
setNote()is not used: the second note is triggered as a fresh attack, but portamento is still audible.Expected
triggerAttack()aftertriggerRelease()should sound like a new note, not a glide.Actual
If the previous note is still fading out, the next
triggerAttack()may still inherit audible portamento.Minimal example