914 |
dmsg(5,("Engine: instrument change command received\n")); |
dmsg(5,("Engine: instrument change command received\n")); |
915 |
cmd.bChangeInstrument = false; |
cmd.bChangeInstrument = false; |
916 |
pEngineChannel->pInstrument = cmd.pInstrument; |
pEngineChannel->pInstrument = cmd.pInstrument; |
917 |
pEngineChannel->pScript = cmd.pScript; //TODO: previous script should be freed as soon as EngineBase switched the instrument, right now 2 scripts are kept in memory all the time, even though the old one is not used anymore |
pEngineChannel->pScript = cmd.pScript; |
918 |
instrumentChanged = true; |
instrumentChanged = true; |
919 |
|
|
920 |
pEngineChannel->MarkAllActiveVoicesAsOrphans(); |
pEngineChannel->MarkAllActiveVoicesAsOrphans(); |
925 |
RTList<ScriptEvent>::Iterator itScriptEvent = |
RTList<ScriptEvent>::Iterator itScriptEvent = |
926 |
pEngineChannel->pScript->pEvents->allocAppend(); |
pEngineChannel->pScript->pEvents->allocAppend(); |
927 |
|
|
928 |
|
itScriptEvent->cause.pEngineChannel = pEngineChannel; |
929 |
|
|
930 |
VMExecStatus_t res = pScriptVM->exec( |
VMExecStatus_t res = pScriptVM->exec( |
931 |
pEngineChannel->pScript->parserContext, &*itScriptEvent |
pEngineChannel->pScript->parserContext, &*itScriptEvent |
932 |
); |
); |
1310 |
pChannel->ProcessKeySwitchChange(key); |
pChannel->ProcessKeySwitchChange(key); |
1311 |
|
|
1312 |
pKey->KeyPressed = true; // the MIDI key was now pressed down |
pKey->KeyPressed = true; // the MIDI key was now pressed down |
1313 |
|
pChannel->KeyDown[key] = true; // just used as built-in %KEY_DOWN script variable |
1314 |
pKey->Velocity = itNoteOnEventOnKeyList->Param.Note.Velocity; |
pKey->Velocity = itNoteOnEventOnKeyList->Param.Note.Velocity; |
1315 |
pKey->NoteOnTime = FrameTime + itNoteOnEventOnKeyList->FragmentPos(); // will be used to calculate note length |
pKey->NoteOnTime = FrameTime + itNoteOnEventOnKeyList->FragmentPos(); // will be used to calculate note length |
1316 |
|
|
1387 |
#endif |
#endif |
1388 |
|
|
1389 |
pKey->KeyPressed = false; // the MIDI key was now released |
pKey->KeyPressed = false; // the MIDI key was now released |
1390 |
|
pChannel->KeyDown[iKey] = false; // just used as built-in %KEY_DOWN script variable |
1391 |
|
|
1392 |
// move event to the key's own event list |
// move event to the key's own event list |
1393 |
RTList<Event>::Iterator itNoteOffEventOnKeyList = itNoteOffEvent.moveToEndOf(pKey->pEvents); |
RTList<Event>::Iterator itNoteOffEventOnKeyList = itNoteOffEvent.moveToEndOf(pKey->pEvents); |