Control all parameter of the BOSS SY1000 using SysEx

Hi all,

I would like to share my solution to control (almost) all parameters of the BOSS SY1000 Guitar Synthesizer on the fly using a Gig Performer script.
The helper functions inside the GP script could be useful for other ROLAND / BOSS devices or keyboards as well.
It includes methods to convert HexByte strings to decimal, decimal to HexBytes and includes a method to calculate the ‘ROLAND’ checksum byte.

Here are the needed steps to use the script with the BOSS SY1000. For other devices, the procedure may be similar.

  1. configure the SY1000: System → MIDI → MIDI SETTING → USB IN THRU = USB/MIDI or USB Out. If this setting is set to “OFF” or “MIDI Out”, the device will not respond to SysEx messages from the USB port.

  2. add the MIDI Out (SY1000 DAW CTLR) to the rack space and set an OSC/GPScript handle name .

  3. you need to install a MIDI monitor tool on your computer to “sniff” SysEx messages. I use “Pocket MIDI” which allows easy copy & paste of the messages.

  4. in “Pocket MIDI” set the InputPort to the same USB device (SY1000 DAW CTLR). Pocket MIDI will then monitor all messages sent to and from the SY1000 device.

  5. in this example I want to control the INST LEVEL and INST1 (on/off) with a widget. First you need to find the SysEx message to do this. Changing the INST LEVEL knob in BOSS TONE STUDIO for SY-1000 mirror the used SysEx messages in Pocket MIDI.

Inst Level 1 → F0 41 00 00 00 69 12 10 00 15 02 00 59 F7
Inst Level 2 → F0 41 00 00 00 69 12 10 00 15 02 01 58 F7
Inst Level 3 → F0 41 00 00 00 69 12 10 00 15 02 02 57 F7

Inst Level 99 → F0 41 00 00 00 69 12 10 00 15 02 63 76 F7
Inst Level 100 → F0 41 00 00 00 69 12 10 00 15 02 64 75 F7

In the example, only the 12th and 13th byte have changed their values. Byte position 0-12 and byte position 14 are static. Byte position 12 contains the rotary knob value in HexChars.
Byte position 13 is a checksum of Byte 8-12 and must be calculated. (Search the internet for “MIDI SysEx checksum Roland” for more details).

My function “CreateSysExMessage(SysExTemplate : string, HexByte : string)” does all the SysEx calculation stuff.

It needs two parameters:
→ Parameter1: A SysEx “template string” which is simply a copy of the SysEx message above.
→ Parameter2: A HexByte string “00” - “64” in this example, representing the widget control value as a Hexchar string.

The function inserts the widget value at byte position 12 and calculates the Roland checksum using byte position 8-12. The calculated checksum is then inserted at byte position 13.
The resulting SysEx can then be sent to the MIDI port and the device setting will follow your widgets.

Happy controlling!


SysEx.Script.txt|attachment](upload://m7wl8h0CBux9cUdgG7OB8ZeaGYX.txt) (4.6 KB)

SY1000 SysEx.Script.txt (4.6 KB)