void Zerberus::play(const Ms::PlayEvent& event) { if (busy) return; Channel* cp = _channel[int(event.channel())]; if (cp->instrument() == 0) { // qDebug("Zerberus::play(): no instrument for channel %d", event.channel()); return; } switch(event.type()) { case Ms::ME_NOTEOFF: processNoteOff(cp, event.dataA()); break; case Ms::ME_NOTEON: { int key = event.dataA(); int vel = event.dataB(); if (vel) processNoteOn(cp, key, vel); else processNoteOff(cp, key); } break; case Ms::ME_CONTROLLER: cp->controller(event.dataA(), event.dataB()); break; default: qDebug("Zerberus: event type 0x%02x", event.type()); break; } }
void Zerberus::process(const MidiEvent& event) { if (busy) return; Channel* cp = _channel[int(event.channel())]; if (cp->instrument() == 0) { // printf("Zerberus::process(): no instrument for channel %d\n", event.channel()); return; } switch(event.type()) { case MidiEventType::NOTEOFF: processNoteOff(cp, event.dataA()); break; case MidiEventType::NOTEON: { int key = event.dataA(); int vel = event.dataB(); if (vel) processNoteOn(cp, key, vel); else processNoteOff(cp, key); } break; case MidiEventType::CONTROLLER: cp->controller(event.dataA(), event.dataB()); break; default: printf("event type 0x%02x\n", event.type()); break; } }