From 27da08004c5f024a0f35e3cb4c2b3942548ebcfa Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Fri, 11 Mar 2005 04:58:01 +0000 Subject: restructured VSThost code better shell support fix for build system update for flext build systemcleanups VSTTime info added event processing (like Midi in) svn path=/trunk/; revision=2617 --- externals/grill/vst/src/vstmidi.cpp | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 externals/grill/vst/src/vstmidi.cpp (limited to 'externals/grill/vst/src/vstmidi.cpp') diff --git a/externals/grill/vst/src/vstmidi.cpp b/externals/grill/vst/src/vstmidi.cpp new file mode 100644 index 00000000..8bddba98 --- /dev/null +++ b/externals/grill/vst/src/vstmidi.cpp @@ -0,0 +1,52 @@ +/* +vst~ - VST plugin object for PD +based on the work of Jarno Seppänen and Mark Williamson + +Copyright (c)2003-2005 Thomas Grill (gr@grrrr.org) +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see the file, "license.txt," in this distribution. +*/ + +#include "vsthost.h" + +bool VSTPlugin::AddMIDI(unsigned char data0,unsigned char data1,unsigned char data2) +{ + if(Is()) { + VstMidiEvent *pevent = &midievent[eventqusz]; + + pevent->type = kVstMidiType; + pevent->byteSize = 24; + pevent->deltaFrames = 0; + pevent->flags = 0; + pevent->detune = 0; + pevent->noteLength = 0; + pevent->noteOffset = 0; + pevent->reserved1 = 0; + pevent->reserved2 = 0; + pevent->noteOffVelocity = 0; + pevent->midiData[0] = data0; + pevent->midiData[1] = data1; + pevent->midiData[2] = data2; + pevent->midiData[3] = 0; + + if(eventqusz < MIDI_MAX_EVENTS) ++eventqusz; + SendMidi(); + return true; + } + else return false; +} + + +void VSTPlugin::SendMidi() +{ + if(Is() && eventqusz > 0) { + // Prepare MIDI events and free queue dispatching all events + events.numEvents = eventqusz; + events.reserved = 0; + for(int q = 0; q < eventqusz; q++) + events.events[q] = (VstEvent*)&midievent[q]; + + Dispatch(effProcessEvents, 0, 0, &events, 0.0f); + eventqusz = 0; + } +} -- cgit v1.2.1