aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--quantum/process_keycode/process_midi.c61
-rw-r--r--quantum/quantum_keycodes.h11
2 files changed, 57 insertions, 15 deletions
diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 2ce7418ea..f7a8b6650 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -62,43 +62,84 @@ bool process_midi(uint16_t keycode, keyrecord_t *record)
62 return false; 62 return false;
63 } 63 }
64 case MIDI_OCTAVE_MIN ... MIDI_OCTAVE_MAX: 64 case MIDI_OCTAVE_MIN ... MIDI_OCTAVE_MAX:
65 if (record->event.pressed) 65 if (record->event.pressed) {
66 midi_config.octave = keycode - MIDI_OCTAVE_MIN; 66 midi_config.octave = keycode - MIDI_OCTAVE_MIN;
67 dprintf("midi octave %d\n", midi_config.octave);
68 }
67 return false; 69 return false;
68 case MI_OCTD: 70 case MI_OCTD:
69 if (record->event.pressed && midi_config.octave > 0) 71 if (record->event.pressed && midi_config.octave > 0) {
70 midi_config.octave--; 72 midi_config.octave--;
73 dprintf("midi octave %d\n", midi_config.octave);
74 }
71 return false; 75 return false;
72 case MI_OCTU: 76 case MI_OCTU:
73 if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN)) 77 if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN)) {
74 midi_config.octave++; 78 midi_config.octave++;
79 dprintf("midi octave %d\n", midi_config.octave);
80 }
75 return false; 81 return false;
76 case MIDI_VELOCITY_MIN ... MIDI_VELOCITY_MAX: 82 case MIDI_VELOCITY_MIN ... MIDI_VELOCITY_MAX:
77 if (record->event.pressed) 83 if (record->event.pressed) {
78 midi_config.velocity = keycode - MIDI_VELOCITY_MIN; 84 midi_config.velocity = keycode - MIDI_VELOCITY_MIN;
85 dprintf("midi velocity %d\n", midi_config.velocity);
86 }
79 return false; 87 return false;
80 case MI_VELD: 88 case MI_VELD:
81 if (record->event.pressed && midi_config.velocity > 0) 89 if (record->event.pressed && midi_config.velocity > 0) {
82 midi_config.velocity--; 90 midi_config.velocity--;
91 dprintf("midi velocity %d\n", midi_config.velocity);
92 }
83 return false; 93 return false;
84 case MI_VELU: 94 case MI_VELU:
85 if (record->event.pressed) 95 if (record->event.pressed) {
86 midi_config.velocity++; 96 midi_config.velocity++;
97 dprintf("midi velocity %d\n", midi_config.velocity);
98 }
87 return false; 99 return false;
88 case MIDI_CHANNEL_MIN ... MIDI_CHANNEL_MAX: 100 case MIDI_CHANNEL_MIN ... MIDI_CHANNEL_MAX:
89 if (record->event.pressed) 101 if (record->event.pressed) {
90 midi_config.channel = keycode - MIDI_CHANNEL_MIN; 102 midi_config.channel = keycode - MIDI_CHANNEL_MIN;
103 dprintf("midi channel %d\n", midi_config.channel);
104 }
91 return false; 105 return false;
92 case MI_CHD: 106 case MI_CHD:
93 if (record->event.pressed) 107 if (record->event.pressed) {
94 midi_config.channel--; 108 midi_config.channel--;
109 dprintf("midi channel %d\n", midi_config.channel);
110 }
95 return false; 111 return false;
96 case MI_CHU: 112 case MI_CHU:
97 if (record->event.pressed) 113 if (record->event.pressed) {
98 midi_config.channel++; 114 midi_config.channel++;
115 dprintf("midi channel %d\n", midi_config.channel);
116 }
117 return false;
118 case MI_OFF:
119 if (record->event.pressed) {
120 midi_send_cc(&midi_device, midi_config.channel, 0x7B, 0);
121 dprintf("midi off\n");
122 }
99 return false; 123 return false;
100 case MI_SUS: 124 case MI_SUS:
101 //TODO 125 midi_send_cc(&midi_device, midi_config.channel, 0x40, record->event.pressed ? 127 : 0);
126 dprintf("midi sustain %d\n", record->event.pressed);
127 return false;
128 case MI_PORT:
129 midi_send_cc(&midi_device, midi_config.channel, 0x41, record->event.pressed ? 127 : 0);
130 dprintf("midi portamento %d\n", record->event.pressed);
131 return false;
132 case MI_SOST:
133 midi_send_cc(&midi_device, midi_config.channel, 0x42, record->event.pressed ? 127 : 0);
134 dprintf("midi sostenuto %d\n", record->event.pressed);
135 return false;
136 case MI_SOFT:
137 midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0);
138 dprintf("midi soft %d\n", record->event.pressed);
139 return false;
140 case MI_LEG:
141 midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0);
142 dprintf("midi legato %d\n", record->event.pressed);
102 return false; 143 return false;
103 }; 144 };
104 145
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index a024a9639..f2b9509b5 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -109,8 +109,6 @@ enum quantum_keycodes {
109 109
110#ifdef MIDI_ENABLE 110#ifdef MIDI_ENABLE
111 // Midi 111 // Midi
112 MIDI_ON,
113 MIDI_OFF,
114 112
115 MIDI_TONE_MIN, 113 MIDI_TONE_MIN,
116 114
@@ -221,7 +219,13 @@ enum quantum_keycodes {
221 MI_CHD, // previous channel 219 MI_CHD, // previous channel
222 MI_CHU, // next channel 220 MI_CHU, // next channel
223 221
222 MI_OFF, // all notes off
223
224 MI_SUS, // sustain 224 MI_SUS, // sustain
225 MI_PORT, // portamento
226 MI_SOST, // sostenuto
227 MI_SOFT, // soft
228 MI_LEG, // legato
225#endif 229#endif
226 230
227 // Backlight functionality 231 // Backlight functionality
@@ -394,9 +398,6 @@ enum quantum_keycodes {
394#define BL_ON BL_9 398#define BL_ON BL_9
395#define BL_OFF BL_0 399#define BL_OFF BL_0
396 400
397#define MI_ON MIDI_ON
398#define MI_OFF MIDI_OFF
399
400// GOTO layer - 16 layers max 401// GOTO layer - 16 layers max
401// when: 402// when:
402// ON_PRESS = 1 403// ON_PRESS = 1