rolfdegen Posted April 6, 2022 Report Share Posted April 6, 2022 (edited) Hello loving MidiBox friends I want to use MIOS SysEx Librarian to USB upload and download patches for my Jeannie synthesizer. 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. 1. 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 7. datas.. last Byte 7F = End SysEx Edited April 6, 2022 by rolfdegen Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted April 6, 2022 Author Report Share Posted April 6, 2022 Jeannie Patch folder.. Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted April 7, 2022 Author Report Share Posted April 7, 2022 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.