From 48d1ea9a894270e141d4c213057529a69db72ac1 Mon Sep 17 00:00:00 2001 From: Jon Williams Date: Sun, 12 Apr 2026 11:37:46 +0100 Subject: [PATCH] feat: enable real-time MIDI API (adl_rt_* methods) --- src/ADLMidi.NET/MidiPlayer.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ADLMidi.NET/MidiPlayer.cs b/src/ADLMidi.NET/MidiPlayer.cs index 7b55cf7..f676510 100644 --- a/src/ADLMidi.NET/MidiPlayer.cs +++ b/src/ADLMidi.NET/MidiPlayer.cs @@ -408,7 +408,7 @@ public unsafe int Generate(Span buffer) /// The user data to pass to the callback. public void SetNoteHook(NoteHook noteHook, IntPtr userData) => AdlMidiImports.adl_setNoteHook(_device, noteHook, userData); -#if false + // Real-time API — send MIDI events directly to the synth for live playback. public void RealTimeResetState() => AdlMidiImports.adl_rt_resetState(_device); public int RealTimeNoteOn(byte channel, byte note, byte velocity) => AdlMidiImports.adl_rt_noteOn(_device, channel, note, velocity); public void RealTimeNoteOff(byte channel, byte note) => AdlMidiImports.adl_rt_noteOff(_device, channel, note); @@ -421,8 +421,7 @@ public unsafe int Generate(Span buffer) public void RealTimeBankChangeLSB(byte channel, byte lsb) => AdlMidiImports.adl_rt_bankChangeLSB(_device, channel, lsb); public void RealTimeBankChangeMSB(byte channel, byte msb) => AdlMidiImports.adl_rt_bankChangeMSB(_device, channel, msb); public void RealTimeBankChange(byte channel, short bank) => AdlMidiImports.adl_rt_bankChange(_device, channel, bank); - public int RealTimeSystemExclusive(IntPtr message, UIntPtr size) => AdlMidiImports.adl_rt_systemExclusive(_device, message, size); -#endif + public unsafe int RealTimeSystemExclusive(IntPtr message, UIntPtr size) => AdlMidiImports.adl_rt_systemExclusive(_device, (byte*)message, size); #if false public void SetRawEventHook(AdlMidiImports.RawEventHook rawEventHook, IntPtr userData) => AdlMidiImports.adl_setRawEventHook(_device, rawEventHook, userData);