| @@ -23,6 +23,7 @@ struct MidiGenerator { | |||
| bool start; | |||
| bool stop; | |||
| bool cont; | |||
| int64_t timestamp = -1; | |||
| MidiGenerator() { | |||
| reset(); | |||
| @@ -55,6 +56,7 @@ struct MidiGenerator { | |||
| m.setStatus(0x8); | |||
| m.setNote(note); | |||
| m.setValue(0); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| } | |||
| @@ -74,6 +76,7 @@ struct MidiGenerator { | |||
| m.setStatus(0x8); | |||
| m.setNote(notes[c]); | |||
| m.setValue(vels[c]); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| if (changedNote || enabledGate) { | |||
| @@ -82,6 +85,7 @@ struct MidiGenerator { | |||
| m.setStatus(0x9); | |||
| m.setNote(note); | |||
| m.setValue(vels[c]); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| notes[c] = note; | |||
| @@ -97,6 +101,7 @@ struct MidiGenerator { | |||
| m.setStatus(0xa); | |||
| m.setNote(notes[c]); | |||
| m.setValue(val); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| @@ -109,6 +114,7 @@ struct MidiGenerator { | |||
| m.setSize(2); | |||
| m.setStatus(0xd); | |||
| m.setNote(val); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| @@ -121,6 +127,7 @@ struct MidiGenerator { | |||
| m.setStatus(0xb); | |||
| m.setNote(id); | |||
| m.setValue(cc); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| @@ -153,6 +160,7 @@ struct MidiGenerator { | |||
| m.setStatus(0xe); | |||
| m.setNote(pw & 0x7f); | |||
| m.setValue((pw >> 7) & 0x7f); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| @@ -166,6 +174,7 @@ struct MidiGenerator { | |||
| m.setSize(1); | |||
| m.setStatus(0xf); | |||
| m.setChannel(0x8); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| } | |||
| @@ -180,6 +189,7 @@ struct MidiGenerator { | |||
| m.setSize(1); | |||
| m.setStatus(0xf); | |||
| m.setChannel(0xa); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| } | |||
| @@ -194,6 +204,7 @@ struct MidiGenerator { | |||
| m.setSize(1); | |||
| m.setStatus(0xf); | |||
| m.setChannel(0xb); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| } | |||
| @@ -208,10 +219,15 @@ struct MidiGenerator { | |||
| m.setSize(1); | |||
| m.setStatus(0xf); | |||
| m.setChannel(0xc); | |||
| m.timestamp = timestamp; | |||
| onMessage(m); | |||
| } | |||
| } | |||
| void setTimestamp(int64_t timestamp) { | |||
| this->timestamp = timestamp; | |||
| } | |||
| virtual void onMessage(const midi::Message &message) {} | |||
| }; | |||