feat(tracker): ability to bind MIDI controllers to parameters

Closes #152
This commit is contained in:
5684185+vsariola@users.noreply.github.com
2026-01-31 23:18:14 +02:00
parent 6e8acc8f9b
commit f2ef57a845
15 changed files with 311 additions and 55 deletions

View File

@ -97,12 +97,19 @@ func init() {
for i := 0; i < events.NumEvents(); i++ {
switch ev := events.Event(i).(type) {
case *vst2.MIDIEvent:
if ev.Data[0] >= 0x80 && ev.Data[0] <= 0x9F {
switch {
case ev.Data[0] >= 0x80 && ev.Data[0] <= 0x9F:
channel := ev.Data[0] & 0x0F
note := ev.Data[1]
on := ev.Data[0] >= 0x90
trackerEvent := tracker.NoteEvent{Timestamp: int64(ev.DeltaFrames) + totalFrames, On: on, Channel: int(channel), Note: note, Source: &context}
tracker.TrySend(broker.MIDIChannel(), any(trackerEvent))
tracker.TrySend(broker.ToMIDIRouter, any(&trackerEvent))
case ev.Data[0] >= 0xB0 && ev.Data[0] <= 0xBF:
channel := ev.Data[0] & 0x0F
controller := ev.Data[1]
value := ev.Data[2]
trackerEvent := tracker.ControlChange{Channel: int(channel), Control: int(controller), Value: int(value)}
tracker.TrySend(broker.ToMIDIRouter, any(&trackerEvent))
}
}
}