Fixing state broadcast.

Adding sign for sotring needed inside LCD.
master
Holger Wirtz 4 years ago
parent 5cd41d87ce
commit ca5427f6d5
  1. 45
      OSC2MIDI.ino

@ -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");
@ -220,7 +221,7 @@ void loop()
if (clientIP != tmpIP) if (clientIP != tmpIP)
{ {
clientIP = tmpIP; clientIP = tmpIP;
DEBUG_MSG("New connection from: %d.%d.%d.%d\n", clientIP[0],clientIP[1],clientIP[2],clientIP[3]); DEBUG_MSG("New connection from: %d.%d.%d.%d\n", clientIP[0], clientIP[1], clientIP[2], clientIP[3]);
} }
// Check if there are any OSC packets to handle // Check if there are any OSC packets to handle
udp.read(buffer, size); udp.read(buffer, size);
@ -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) {

Loading…
Cancel
Save