byte sysexData[[COLOR=#AE81FF]32[/COLOR]]; [COLOR=#8292A2]// SysEx buffer 256 Byte[/COLOR]
[COLOR=#E6DB74]int[/COLOR] sysexCount = [COLOR=#AE81FF]0[/COLOR]; [COLOR=#8292A2]// SysEx Data pointer[/COLOR]
[COLOR=#8292A2]//*************************************************************************[/COLOR]
[COLOR=#8292A2]// convert parameter string to bin[/COLOR]
[COLOR=#8292A2]//*************************************************************************[/COLOR]
FLASHMEM [COLOR=#E6DB74]void[/COLOR] String_to_bin (String value, uint8_t len)
{
[COLOR=#E6DB74]for[/COLOR] (uint8_t i = [COLOR=#AE81FF]0[/COLOR]; i < len; i++) {
sysexData[sysexCount] = value[i];
sysexCount++;
}
}
[COLOR=#8292A2]//*************************************************************************[/COLOR]
[COLOR=#8292A2]// usbMidi send SystemExclusive[/COLOR]
[COLOR=#8292A2]//*************************************************************************[/COLOR]
FLASHMEM [COLOR=#E6DB74]void[/COLOR] [COLOR=#E6DB74]SendSysEx[/COLOR]([COLOR=#E6DB74]void[/COLOR])
{
[COLOR=#8292A2]// send PrgNr "B 032"[/COLOR]
uint8_t patchNo = [COLOR=#AE81FF]32[/COLOR];
uint8_t currentPatchBank = [COLOR=#AE81FF]1[/COLOR]; [COLOR=#8292A2]// Bank B[/COLOR]
String numString = (patchNo);
String bankString = [COLOR=#E6DB74]char[/COLOR](currentPatchBank + [COLOR=#AE81FF]65[/COLOR]);
String fileString = (bankString + [COLOR=#A6E22E]"/"[/COLOR] + numString);
uint8_t data_len = NO_OF_PARAMS;
sysexCount = [COLOR=#AE81FF]0[/COLOR];
[COLOR=#8292A2]// get Sound File String[/COLOR]
File patchFile = SD.[COLOR=#E6DB74]open[/COLOR](fileString.[COLOR=#E6DB74]c_str[/COLOR]());
String data[data_len]; [COLOR=#8292A2]//Array of data read in[/COLOR]
[COLOR=#E6DB74]recallPatchData[/COLOR](patchFile, data);
patchFile.[COLOR=#E6DB74]close[/COLOR]();
[COLOR=#8292A2]// Sysex data lenght [28]; // Daten lenght max 256[/COLOR]
sysexData[sysexCount++] = [COLOR=#AE81FF]0xF0[/COLOR]; [COLOR=#8292A2]// 0 - Start SysEx[/COLOR]
sysexData[sysexCount++] = [COLOR=#AE81FF]0x00[/COLOR]; [COLOR=#8292A2]// 1 - ID[/COLOR]
sysexData[sysexCount++] = [COLOR=#AE81FF]0x00[/COLOR]; [COLOR=#8292A2]// 2 - ID[/COLOR]
sysexData[sysexCount++] = [COLOR=#AE81FF]0x00[/COLOR]; [COLOR=#8292A2]// 3 - ID[/COLOR]
sysexData[sysexCount++] = [COLOR=#AE81FF]0x00[/COLOR]; [COLOR=#8292A2]// 4 - Device ID 0-64[/COLOR]
sysexData[sysexCount++] = patchNo; [COLOR=#8292A2]// 5 - Patch No[/COLOR]
sysexData[sysexCount++] = currentPatchBank; [COLOR=#8292A2]// 6 - Folder No[/COLOR]
[COLOR=#E6DB74]String_to_bin[/COLOR](data[[COLOR=#AE81FF]0[/COLOR]], [COLOR=#AE81FF]12[/COLOR]); [COLOR=#8292A2]// 7-18 - Patch Name[/COLOR]
[COLOR=#E6DB74]String_to_bin[/COLOR](data[[COLOR=#AE81FF]1[/COLOR]], [COLOR=#AE81FF]4[/COLOR]); [COLOR=#8292A2]// 19-22 - Osc1 level[/COLOR]
[COLOR=#E6DB74]String_to_bin[/COLOR](data[[COLOR=#AE81FF]2[/COLOR]], [COLOR=#AE81FF]4[/COLOR]); [COLOR=#8292A2]// 23-26 - Osc2 level[/COLOR]
[COLOR=#8292A2]// ..even more data[/COLOR]
sysexData[sysexCount++] = [COLOR=#AE81FF]0xF7[/COLOR]; [COLOR=#8292A2]// 27 - End SysEx[/COLOR]
usbMIDI.[COLOR=#E6DB74]sendSysEx[/COLOR](sysexCount, sysexData, true); [COLOR=#8292A2]// send SysEx data[/COLOR]
Serial.[COLOR=#E6DB74]println[/COLOR]([COLOR=#A6E22E]"Data sending complete"[/COLOR]);
}