Hello loving MidiBox friends
I want to use MIOS SysEx Librarian to USB upload and download patches for my . I don’t have a SysEx ID (it’s set to 0). How can customize the Jeannie program code for MIOS SysEx Librarian ?
I developed the following SysEx protocol for Jeannie. But I can change it for MIOS.
- Byte F0 = Beginn SysEx
2.Byte 00 = non SysEx ID
3.Byte 00 = non SysEx ID
4.Byte 00 = non SysEx ID
5.Byte XX = Bank No
6.Byte XX = Patch No
- datas..
last Byte 7F = End SysEx
Hello user..
The data format for the transmission or reception of SysEx data has its pitfalls.
The data may only be 7 bits in size. Larger values lead to the transmission being aborted.
In the Jeannie, floating point numbers and 16-bit integer numbers are used.
For saving on SD card, the parameters are converted into ASCII characters and
written to the SD card. It looks like this for patch “STORM X” B 032, for example.
The advantage is that floating point numbers or large integer numbers can be transmitted as 7-bit numbers (0-127) via SysEx.
A disadvantage is the slightly larger amount of data.
Example code for transferring a SysEx file ( patch “STORM X” B 032 data is not yet complete )
byte sysexData[32];// SysEx buffer 256 Byte int sysexCount = 0;// SysEx Data pointer //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* // convert parameter string to bin //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* FLASHMEM void String\_to\_bin (String value, uint8\_t len) { for (uint8\_t i = 0; i \< len; i++) { sysexData[sysexCount] = value[i]; sysexCount++; } } //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* // usbMidi send SystemExclusive //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* FLASHMEM void SendSysEx(void) { // send PrgNr "B 032" uint8\_t patchNo = 32; uint8\_t currentPatchBank = 1; // Bank B String numString = (patchNo); String bankString = char(currentPatchBank + 65); String fileString = (bankString + "/" + numString); uint8\_t data\_len = NO\_OF\_PARAMS; sysexCount = 0; // get Sound File String File patchFile = SD.open(fileString.c\_str()); String data[data\_len]; //Array of data read in recallPatchData(patchFile, data); patchFile.close(); // Sysex data lenght [28]; // Daten lenght max 256 sysexData[sysexCount++] = 0xF0;// 0 - Start SysEx sysexData[sysexCount++] = 0x00;// 1 - ID sysexData[sysexCount++] = 0x00;// 2 - ID sysexData[sysexCount++] = 0x00;// 3 - ID sysexData[sysexCount++] = 0x00;// 4 - Device ID 0-64 sysexData[sysexCount++] = patchNo;// 5 - Patch No sysexData[sysexCount++] = currentPatchBank;// 6 - Folder No String\_to\_bin(data[0], 12);// 7-18 - Patch Name String\_to\_bin(data[1], 4);// 19-22 - Osc1 level String\_to\_bin(data[2], 4);// 23-26 - Osc2 level // ..even more data sysexData[sysexCount++] = 0xF7;// 27 - End SysEx usbMIDI.sendSysEx(sysexCount, sysexData, true);// send SysEx data Serial.println("Data sending complete"); }
The transferred SysEx file for patch “B 032”
Greetings form germany Rolf