summaryrefslogtreecommitdiff
path: root/software/rhmixxx/rhmixxx.c
diff options
context:
space:
mode:
authorChristian Pointner <equinox@helsinki.at>2014-06-03 02:19:59 (GMT)
committerChristian Pointner <equinox@helsinki.at>2014-06-03 02:19:59 (GMT)
commitc7befc2a68d78c3bd445433dc55bdc70ea2276e7 (patch)
tree87b7407b5be316ea7afae279a4df8e744b4a6476 /software/rhmixxx/rhmixxx.c
parent8cba9d9165c6645a94c8ea97bd15f43674984997 (diff)
added support for analog pins (not perfect...)
Diffstat (limited to 'software/rhmixxx/rhmixxx.c')
-rw-r--r--software/rhmixxx/rhmixxx.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/software/rhmixxx/rhmixxx.c b/software/rhmixxx/rhmixxx.c
index 3e3d66f..f77c23a 100644
--- a/software/rhmixxx/rhmixxx.c
+++ b/software/rhmixxx/rhmixxx.c
@@ -125,13 +125,30 @@ static void process_outgoing_midi(void)
.Data2 = 0,
.Data3 = 0,
};
+ MIDI_EventPacket_t MIDIEventAnalog = (MIDI_EventPacket_t)
+ {
+ .CableNumber = 0, // TODO: hardcoded value
+ .Command = (MIDI_COMMAND_NOTE_ON >> 4),
+ .Data1 = MIDI_COMMAND_NOTE_ON | 0,
+ .Data2 = 0,
+ .Data3 = 0,
+ };
uint8_t key, state;
while(eventqueue_pop(&key, &state)) {
if (USB_DeviceState == DEVICE_STATE_Configured) {
- MIDI_EventPacket_t* MIDIEvent = state ? &MIDIEventOn : &MIDIEventOff;
- MIDIEvent->Data2 = key;
- MIDI_Device_SendEventPacket(&MIDI_Interface, MIDIEvent);
+ MIDI_EventPacket_t* MIDIEvent = NULL;
+ if(key >= ANALOG_MIDI_NOTE_OFFSET && key < ANALOG_MIDI_NOTE_OFFSET + ANALOG_NUM_INPUTS) {
+ MIDIEvent = &MIDIEventAnalog;
+ MIDIEvent->Data2 = key;
+ MIDIEvent->Data3 = analog_get_value(key - ANALOG_MIDI_NOTE_OFFSET);
+ } else {
+ MIDIEvent = state ? &MIDIEventOn : &MIDIEventOff;
+ MIDIEvent->Data2 = key;
+ }
+
+ if(MIDIEvent)
+ MIDI_Device_SendEventPacket(&MIDI_Interface, MIDIEvent);
}
}
if (USB_DeviceState == DEVICE_STATE_Configured)
@@ -157,6 +174,7 @@ int main(void)
keypad_task();
gpio_task();
+ analog_task();
process_outgoing_midi();