~ruther/qmk_firmware

3d3c093173f6e9a838671bd7484b3a11dc564c1a — adiron 7 years ago a7fca47
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)
2 files changed, 23 insertions(+), 0 deletions(-)

M quantum/process_keycode/process_midi.c
M quantum/quantum_keycodes.h
M quantum/process_keycode/process_midi.c => quantum/process_keycode/process_midi.c +20 -0
@@ 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;

M quantum/quantum_keycodes.h => quantum/quantum_keycodes.h +3 -0
@@ 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