diff options
author | Robin Gareus <robin@gareus.org> | 2014-03-02 21:12:25 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-03-02 21:18:52 +0100 |
commit | 52b127a35ba9c31cd5da7c69f717002bb64cfd83 (patch) | |
tree | 2addadd96c6a96d7167bba50b6d7c4aef6fbc777 /libs/ardour/session_vst.cc | |
parent | e6c3cece645bdc031c388d814d439014f3e34442 (diff) |
implement VST midi-output
Diffstat (limited to 'libs/ardour/session_vst.cc')
-rw-r--r-- | libs/ardour/session_vst.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libs/ardour/session_vst.cc b/libs/ardour/session_vst.cc index b279f52015..845293de7c 100644 --- a/libs/ardour/session_vst.cc +++ b/libs/ardour/session_vst.cc @@ -49,6 +49,8 @@ int Session::vst_current_loading_id = 0; const char* Session::vst_can_do_strings[] = { X_("supplyIdle"), X_("sendVstTimeInfo"), + X_("sendVstEvents"), + X_("sendVstMidiEvent"), X_("supportShell"), X_("shellCategory") }; @@ -256,6 +258,15 @@ intptr_t Session::vst_callback ( case audioMasterProcessEvents: SHOW_CALLBACK ("amc: audioMasterProcessEvents\n"); // VstEvents* in <ptr> + if (plug->midi_buffer()) { + VstEvents* v = (VstEvents*)ptr; + for (int n = 0 ; n < v->numEvents; ++n) { + VstMidiEvent *vme = (VstMidiEvent*) (v->events[n]->dump); + if (vme->type == kVstMidiType) { + plug->midi_buffer()->push_back(vme->deltaFrames, 3, (uint8_t*)vme->midiData); + } + } + } return 0; case audioMasterSetTime: |