@d-healey @Chazrox
I'm back. After many days, I reviewed the code again today and finally succeeded!
We need a loop!
I would also like to thank all my friends who provided me with help and various solutions! I love you all
function onNoteOn()
{
local n = Message.getNoteNumber();
local v = Message.getVelocity();
if (n >= knbLoKey.getValue() && n <= knbHiKey.getValue())
lastKs = n;
if (Synth.isArtificialEventActive(eventIds.getValue(lastNote)))
Synth.addVolumeFade(eventIds.getValue(lastNote), knbFadeTime.getValue(), -100);
for (i = 48; i < 127; i++) {
local e = eventIds.getValue(i);
if (e != -1)
Synth.noteOffByEventId(e);
if (n == knbKs.getValue() && Synth.isKeyDown(i))
{
ADSR.setAttribute(ADSR.Attack, fadeIn.getValue());
lastKs = n;
eventIds.setValue(i, Synth.playNote(i, v));
return Message.ignoreEvent(true);
}else{
ADSR.setAttribute(ADSR.Attack, knbResetAt.getValue());
}
}
lastNote = n;
if (lastKs != knbKs.getValue())
return Message.ignoreEvent(true);
eventIds.setValue(n, Message.makeArtificial());
}