|
|
@ -68,6 +68,7 @@ bool last_reset_ap_check = false; |
|
|
|
looper sched; |
|
|
|
looper sched; |
|
|
|
bool write_state = false; |
|
|
|
bool write_state = false; |
|
|
|
uint32_t last_usage = millis(); |
|
|
|
uint32_t last_usage = millis(); |
|
|
|
|
|
|
|
bool broadcast_send = false; |
|
|
|
|
|
|
|
|
|
|
|
MIDI_CREATE_INSTANCE(HardwareSerial, midi1, MIDI1); |
|
|
|
MIDI_CREATE_INSTANCE(HardwareSerial, midi1, MIDI1); |
|
|
|
|
|
|
|
|
|
|
@ -199,7 +200,7 @@ void setup() |
|
|
|
//sched.addJob(show_midi_state, KRATE_STATE);
|
|
|
|
//sched.addJob(show_midi_state, KRATE_STATE);
|
|
|
|
|
|
|
|
|
|
|
|
listDir(SPIFFS, "/", 1); |
|
|
|
listDir(SPIFFS, "/", 1); |
|
|
|
//read_midistate(1);
|
|
|
|
read_midistate(1); |
|
|
|
show_midi_state(); |
|
|
|
show_midi_state(); |
|
|
|
|
|
|
|
|
|
|
|
DEBUG_MSG("<LOOP>\n"); |
|
|
|
DEBUG_MSG("<LOOP>\n"); |
|
|
@ -351,6 +352,8 @@ void change_midi_state(uint8_t midichannel, uint8_t cc, uint8_t value) |
|
|
|
{ |
|
|
|
{ |
|
|
|
midistate[(midichannel - 1) * 128 + cc - 1] = int8_t(value); |
|
|
|
midistate[(midichannel - 1) * 128 + cc - 1] = int8_t(value); |
|
|
|
write_state = true; |
|
|
|
write_state = true; |
|
|
|
|
|
|
|
lcd.setCursor(LCD_COL - 1, LCD_ROW - 1); |
|
|
|
|
|
|
|
lcd.print("*"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -403,6 +406,8 @@ void write_midistate(uint8_t setup_number) |
|
|
|
{ |
|
|
|
{ |
|
|
|
DEBUG_MSG("Write MIDI state\n"); |
|
|
|
DEBUG_MSG("Write MIDI state\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint32_t t0 = millis(); |
|
|
|
|
|
|
|
|
|
|
|
for (uint8_t m = 0; m < 16; m++) |
|
|
|
for (uint8_t m = 0; m < 16; m++) |
|
|
|
{ |
|
|
|
{ |
|
|
|
for (uint8_t c = 0; c < 128; c++) |
|
|
|
for (uint8_t c = 0; c < 128; c++) |
|
|
@ -449,6 +454,13 @@ void write_midistate(uint8_t setup_number) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lcd.setCursor(LCD_COL - 1, LCD_ROW - 1); |
|
|
|
|
|
|
|
lcd.print(" "); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint32_t t1 = millis(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEBUG_MSG("T1-T0=%d\n", t1 - t0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void read_midistate(uint8_t setup_number) |
|
|
|
void read_midistate(uint8_t setup_number) |
|
|
@ -506,7 +518,6 @@ void read_midistate(uint8_t setup_number) |
|
|
|
int8_t val = cc.read(); |
|
|
|
int8_t val = cc.read(); |
|
|
|
DEBUG_MSG(" MIDI-Channel %d CC#%d = %d\n", midi_channel + 1, midi_cc + 1, val); |
|
|
|
DEBUG_MSG(" MIDI-Channel %d CC#%d = %d\n", midi_channel + 1, midi_cc + 1, val); |
|
|
|
midistate[midi_channel * 128 + midi_cc] = val; |
|
|
|
midistate[midi_channel * 128 + midi_cc] = val; |
|
|
|
MidiCCToOSC(midi_channel + 1, midi_cc + 1, val); |
|
|
|
|
|
|
|
cc.close(); |
|
|
|
cc.close(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -520,6 +531,27 @@ void read_midistate(uint8_t setup_number) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void broadcast_midistate(void) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
uint8_t m, c; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEBUG_MSG("Broadcast MIDI state:\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (m = 0; m < 16; m++) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
DEBUG_MSG("MIDI-Channel %2d\n", m + 1); |
|
|
|
|
|
|
|
for (c = 0; c < 128; c++) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (midistate[m * 128 + c] >= 0) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
DEBUG_MSG("\tCC: %3d = %3d\n", c + 1, midistate[m * 128 + c]); |
|
|
|
|
|
|
|
MidiCCToOSC(m + 1, c + 1, midistate[m * 128 + c]); |
|
|
|
|
|
|
|
MIDI1.sendControlChange(c + 1, midistate[m * 128 + c], m + 1); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void check_reset_ap_data(void) |
|
|
|
void check_reset_ap_data(void) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (digitalRead(AP_DATA_RESET_PIN) == HIGH && last_reset_ap_check == true) |
|
|
|
if (digitalRead(AP_DATA_RESET_PIN) == HIGH && last_reset_ap_check == true) |
|
|
@ -550,8 +582,11 @@ void check_reset_ap_data(void) |
|
|
|
|
|
|
|
|
|
|
|
void ping(OSCMessage & msg, int offset) |
|
|
|
void ping(OSCMessage & msg, int offset) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (clientIP) |
|
|
|
if (clientIP && broadcast_send == false) |
|
|
|
read_midistate(1); |
|
|
|
{ |
|
|
|
|
|
|
|
broadcast_send = true; |
|
|
|
|
|
|
|
broadcast_midistate(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void listDir(fs::FS & fs, const char * dirname, uint8_t levels) { |
|
|
|
void listDir(fs::FS & fs, const char * dirname, uint8_t levels) { |
|
|
|