Very crude and dirty first host midi implementation

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2022-01-23 19:52:46 +00:00
parent 810928190c
commit b863d0e54c
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
6 changed files with 758 additions and 450 deletions

View file

@ -60,6 +60,8 @@ struct CardinalPluginContext : rack::Context {
uintptr_t nativeWindowId;
const float* const* dataIns;
float** dataOuts;
const MidiEvent* midiEvents;
uint32_t midiEventCount;
Plugin* const plugin;
#ifndef HEADLESS
UI* ui;
@ -95,6 +97,8 @@ struct CardinalPluginContext : rack::Context {
nativeWindowId(0),
dataIns(nullptr),
dataOuts(nullptr),
midiEvents(nullptr),
midiEventCount(0),
plugin(p)
#ifndef HEADLESS
, ui(nullptr)
@ -103,6 +107,8 @@ struct CardinalPluginContext : rack::Context {
std::memset(parameters, 0, sizeof(parameters));
}
void writeMidiMessage(const rack::midi::Message& message);
#ifndef HEADLESS
bool addIdleCallback(IdleCallback* cb) const;
void removeIdleCallback(IdleCallback* cb) const;
@ -129,10 +135,6 @@ public:
: Plugin(parameterCount, programCount, stateCount),
context(new CardinalPluginContext(this)) {}
~CardinalBasePlugin() override {}
virtual void assignMidiInputDevice(CardinalMidiInputDevice* dev) noexcept = 0;
virtual void assignMidiOutputDevice(CardinalMidiOutputDevice* dev) noexcept = 0;
virtual void clearMidiInputDevice(CardinalMidiInputDevice* dev) noexcept = 0;
virtual void clearMidiOutputDevice(CardinalMidiOutputDevice* dev) noexcept = 0;
};
#ifndef HEADLESS