Merge branch 'ardour'
This commit is contained in:
commit
270571a8fd
@ -27,6 +27,8 @@
|
||||
#endif
|
||||
#include <cstdio>
|
||||
|
||||
#include "evoral/midi_util.h"
|
||||
|
||||
#include "ardour/audioengine.h"
|
||||
#include "ardour/debug.h"
|
||||
#include "ardour/session.h"
|
||||
@ -300,8 +302,14 @@ intptr_t Session::vst_callback (
|
||||
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->deltaSamples, Evoral::MIDI_EVENT, 3, (uint8_t*)vme->midiData);
|
||||
int size = Evoral::midi_event_size((uint8_t)vme->midiData[0]);
|
||||
if (vme->type == kVstMidiType && size > 0) {
|
||||
plug->midi_buffer()->push_back(
|
||||
vme->deltaSamples,
|
||||
Evoral::MIDI_EVENT,
|
||||
size,
|
||||
(uint8_t*)vme->midiData
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -647,36 +647,44 @@ VST3PI::vst3_to_midi_buffers (BufferSet& bufs, ChanMapping const& out_map)
|
||||
data[2] = vst_to_midi (e.polyPressure.pressure);
|
||||
mb.push_back (e.sampleOffset, Evoral::MIDI_EVENT, 3, data);
|
||||
break;
|
||||
case Vst::Event::kLegacyMIDICCOutEvent:
|
||||
case Vst::Event::kLegacyMIDICCOutEvent: {
|
||||
size_t size = 0;
|
||||
|
||||
switch (e.midiCCOut.controlNumber) {
|
||||
case Vst::kCtrlPolyPressure:
|
||||
size = 3;
|
||||
data[0] = MIDI_CMD_NOTE_PRESSURE | e.midiCCOut.channel;
|
||||
data[1] = e.midiCCOut.value;
|
||||
data[2] = e.midiCCOut.value2;
|
||||
break;
|
||||
default: /* Control Change */
|
||||
size = 3;
|
||||
data[0] = MIDI_CMD_CONTROL | e.midiCCOut.channel;
|
||||
data[1] = e.midiCCOut.controlNumber;
|
||||
data[2] = e.midiCCOut.value;
|
||||
break;
|
||||
case Vst::kCtrlProgramChange:
|
||||
size = 2;
|
||||
data[0] = MIDI_CMD_PGM_CHANGE | e.midiCCOut.channel;
|
||||
data[1] = e.midiCCOut.value;
|
||||
data[2] = e.midiCCOut.value2;
|
||||
break;
|
||||
case Vst::kAfterTouch:
|
||||
size = 2;
|
||||
data[0] = MIDI_CMD_CHANNEL_PRESSURE | e.midiCCOut.channel;
|
||||
data[1] = e.midiCCOut.value;
|
||||
data[2] = e.midiCCOut.value2;
|
||||
break;
|
||||
case Vst::kPitchBend:
|
||||
size = 3;
|
||||
data[0] = MIDI_CMD_BENDER | e.midiCCOut.channel;
|
||||
data[1] = e.midiCCOut.value;
|
||||
data[2] = e.midiCCOut.value2;
|
||||
break;
|
||||
}
|
||||
mb.push_back (e.sampleOffset, Evoral::MIDI_EVENT, e.midiCCOut.controlNumber == Vst::kCtrlProgramChange ? 2 : 3, data);
|
||||
mb.push_back (e.sampleOffset, Evoral::MIDI_EVENT, size, data);
|
||||
break;
|
||||
}
|
||||
|
||||
case Vst::Event::kNoteExpressionValueEvent:
|
||||
case Vst::Event::kNoteExpressionTextEvent:
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE MIDINameDocument PUBLIC "-//MIDI Manufacturers Association//DTD MIDINameDocument 1.0//EN" "http://www.midi.org/dtds/MIDINameDocument10.dtd">
|
||||
<MIDINameDocument>
|
||||
<MasterDeviceNames>
|
||||
<Author>Nikolaos Strikos strikosn@gmail.com</Author>
|
||||
<Manufacturer>Kurzweil</Manufacturer>
|
||||
<Model>K2700</Model>
|
||||
<CustomDeviceMode Name="Mode 1">
|
||||
|
Loading…
Reference in New Issue
Block a user