|
From: Andreas P. <and...@lk...> - 2004-12-04 14:55:33
|
Hello,
If a key is pressed, released and then pressed again before the release
of the first note has finished, the release of the first note is
canceled - the first note continues to play until the second note is
released. Why is that? Is it intentional? It doesn't seem like GS
behaves like that.
As the fix for this is to simply remove some code, I have a feeling I'm
missing something. These lines from Engine::ProcessNoteOn are the ones I
would like to remove:
// cancel release process of voices on this key if needed
if (pKey->Active && !SustainPedal) {
RTList<Event>::Iterator itCancelReleaseEvent =
pKey->pEvents->allocAppend();
if (itCancelReleaseEvent) {
*itCancelReleaseEvent = *itNoteOnEvent;
// copy event
itCancelReleaseEvent->Type =
Event::type_cancel_release; // transform event type
}
else dmsg(1,("Event pool emtpy!\n"));
}
/Andreas
|