- Added POGRAM CHANGES to switch Mode via MIDI

- Added Control Change to switch On/Off Pause Light
This commit is contained in:
2025-11-24 09:37:03 +01:00
parent 7b0c993e0b
commit 43f37e0b57
7 changed files with 159 additions and 44 deletions

View File

@@ -83,13 +83,17 @@ void Core1_MIDI_Receiver_Process(void)
switch(_Parsing.State)
{
case WAITING_FOR_COMMAND:
if(MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_ON || MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_OFF)
if( MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_ON ||
MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_OFF ||
MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_CONTROL_CHANGE ||
MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_PROGRAM_CHANGE
)
{
_Parsing.MIDI_Event = MIDI_EVENT_FROM_COMMAND(Data);
_Parsing.MIDI_Channel = MIDI_CHANNEL_FROM_COMMAND(Data);
_Parsing.State = WAITING_FOR_DATA1;
Core1_MIDI_Receiver_Issue_Event_On_Off_Received(_Parsing.MIDI_Channel, _Parsing.MIDI_Event);
// Core1_MIDI_Receiver_Issue_Event_On_Off_Received(_Parsing.MIDI_Channel, _Parsing.MIDI_Event);
break;
}
@@ -100,7 +104,14 @@ void Core1_MIDI_Receiver_Process(void)
if(IS_MIDI_DATA(Data))
{
_Parsing.MIDI_Data1 = Data;
_Parsing.State = WAITING_FOR_DATA2;
if(_Parsing.MIDI_Event == MIDI_EVENT_PROGRAM_CHANGE) {
_Parsing.State = WAITING_FOR_COMMAND;
Core1_MIDI_Receiver_Issue_Full_Event_Received(_Parsing.MIDI_Event, _Parsing.MIDI_Channel, _Parsing.MIDI_Data1, NOTE_UNDEFINED);
}
else {
_Parsing.State = WAITING_FOR_DATA2;
}
}
else
{
@@ -153,10 +164,22 @@ void Core1_MIDI_Receiver_Issue_Data_Received(uint8_t midi_data)
void Core1_MIDI_Receiver_Issue_Full_Event_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t midi_data1, uint8_t midi_data2)
{
if(midi_event == MIDI_EVENT_CONTROL_CHANGE) {
Core1_Light_Controller_MIDI_Full_CC_Received(midi_event, midi_channel, midi_data1, midi_data2);
}
else {
Core1_Light_Controller_MIDI_Full_Note_Received(midi_event, midi_channel, midi_data1, midi_data2);
}
switch (midi_event)
{
case MIDI_EVENT_NOTE_ON:
case MIDI_EVENT_NOTE_OFF:
Core1_Light_Controller_MIDI_Full_Note_Received(midi_event, midi_channel, midi_data1, midi_data2);
break;
case MIDI_EVENT_PROGRAM_CHANGE:
Core1_Light_Controller_MIDI_Full_ProgramChange_Received(midi_event, midi_channel, midi_data1);
break;
case MIDI_EVENT_CONTROL_CHANGE:
Core1_Light_Controller_MIDI_Full_ControlChange_Received(midi_event, midi_channel, midi_data1, midi_data2);
break;
default:
break;
}
}