From 3d3c093173f6e9a838671bd7484b3a11dc564c1a Mon Sep 17 00:00:00 2001 From: adiron Date: Thu, 19 Apr 2018 05:22:08 +0300 Subject: [PATCH] Added bending to MIDI (#2740) This is done via MI_BENDD and MI_BENDU. At the moment the value is hardcoded and cannot be adjusted (future commit?) and is the max for the `midi_send_pitchbend` function (up or down). `MI_BENDD` and `MI_BENDU` both require `#define MIDI_ADVANCED` MIDI pitch bend was already implemented in `protocol/midi.c`, I merely added the keycodes to trigger them. :) (thanks to Jack, two years ago in commit fb4fe52c apparently) --- quantum/process_keycode/process_midi.c | 20 ++++++++++++++++++++ quantum/quantum_keycodes.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 9728076dfd..a67f736285 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -222,6 +222,26 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) dprintf("midi modulation interval %d\n", midi_config.modulation_interval); } return false; + case MI_BENDD: + if (record->event.pressed) { + midi_send_pitchbend(&midi_device, midi_config.channel, -0x2000); + dprintf("midi pitchbend channel:%d amount:%d\n", midi_config.channel, -0x2000); + } + else { + midi_send_pitchbend(&midi_device, midi_config.channel, 0); + dprintf("midi pitchbend channel:%d amount:%d\n", midi_config.channel, 0); + } + return false; + case MI_BENDU: + if (record->event.pressed) { + midi_send_pitchbend(&midi_device, midi_config.channel, 0x1fff); + dprintf("midi pitchbend channel:%d amount:%d\n", midi_config.channel, 0x1fff); + } + else { + midi_send_pitchbend(&midi_device, midi_config.channel, 0); + dprintf("midi pitchbend channel:%d amount:%d\n", midi_config.channel, 0); + } + return false; }; return true; diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 8122bfe739..d545440c99 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -383,6 +383,9 @@ enum quantum_keycodes { MI_MOD, // modulation MI_MODSD, // decrease modulation speed MI_MODSU, // increase modulation speed + + MI_BENDD, // Bend down + MI_BENDU, // Bend up #endif // MIDI_ADVANCED // Backlight functionality