Midi CC to SYSEX without scripting:)

Hello,
I searched several forums for a simple script to convert Midi CC to SYSEX messages.
I found a simple VST plugin that can do this without programming.
Install and enjoy :slight_smile:

Edit: modified the link so that it goes to the main github page where users can evaluate for themselves whether this application (Windows only) is safe to download

1 Like

It is Windows only?

Let us know how this works for you and what kind of parameters you are changing.

I’d like to try and use this (when I find the time) to try and change a parameter or two in my XK-5, namely the tube over drive amount, using a CC-widget.

Just so people understand, doing this with a scriptlet is really pretty trivial — here’s an example of a widget (which of course could be controlled by any MIDI message, not just a CC number) changing the first value of a sysex message which is then being sent out.

2022-12-31 13-31-18.2022-12-31 13_31_39

and here’s the scriptlet with comments added to make it clear

var
   // Define a parameter that can be controlled by a widget
   P1 ("Sysex1") : Subrange Parameter 0..127 = 0 // Value ranges between 0 and 127
   
   // Define your basic sysex message
   S1 : SysexMessage = #F0 01 02 03 04 05 06 F7 
   
// This runs when the parameter changes so as to update a value in that sysex message and send it out
On ParameterValueChanged matching P1 
   SM_ChangeValue(S1, 1, P1) // Change the first value
   SendSysexNow(S1)
End

Clearly you can define as many parameters as you need in a single scriptlet and use multiple scriptlets with different sets of sysex messages as needed

4 Likes

Can anyone assist with some formatting for this? I am trying to write a message that would conform to this… but when I change the message in the scriptlet (adding the manufactures id) i get bad systax error.

Here’s the item I want to change:

“Tube Drive Level”
NRPN=[30 17]
SYSEX MSB to LSB [00 30 17]
SYSEX MEssage length [01]
00 - 7F (0 - 127)

Here’s the example in the hammond manual of what the message should be:

Example: Set Multi-Eff ect at Phaser via NRPN: Bx 63 05 62 30 06 04 26 00
(x = Upper channel)

Set Multi-Effect at Phaser via SysEx: F0 55 dd 10 22 13 00 30 05 04 F7
(dd = Device ID)

Many thanks for any help.

No idea — you need to tell us the syntax error

Scriptlet (Scriptlet) - - Syntax Error in “Main”: Line 6, Col 24: Unexpected or unrecognized token: ‘#’
Extraneous input ‘#’ expecting {AsNoteNames, Write, SendOSCMessage, True, False, If, MidiNoteName, Not, ‘’', ‘(’, ‘[’, ‘-’, ‘/’, Identifier, Integer, Floating, StringConstant, SysexConstant}

that’s the error I get if I add a “dd” into the message

using the example from hammond this is how I am trying to format my message:

var
   // Define a parameter that can be controlled by a widget
   P1 ("Sysex1") : Subrange Parameter 0..127 = 0 // Value ranges between 0 and 127
   
   // Define your basic sysex message
   S1 : SysexMessage = #F0 55 dd 10 22 13 00 30 05 04 F7 
   
// This runs when the parameter changes so as to update a value in that sysex message and send it out
On ParameterValueChanged matching P1 
   SM_ChangeValue(S1, 9, P1) // Change the first value
   SendSysexNow(S1)
End

“dd” is not a legitimate byte in a sysex message.

Try rather:
S1 : SysexMessage = #F0 55 00 10 22 13 00 30 05 04 F7

And:
SM_ChangeValue(S1, 2, P1)

This will set you « dd » which is at the second position in the SysEx.

Similarly:

S1 : SysexMessage = #F0 00 30 17 01 00 F7

SM_ChangeValue(S1, 5 , P1)

1 Like

ah ha! thank you!!

this works:

S1 : SysexMessage = #F0 55 10 10 22 13 00 30 17 55 F7

On ParameterValueChanged matching P1
SM_ChangeValue(S1, 9, P1)
SendSysexNow(S1)
End

I couldn’t get it to work but then I set the S1 SM_Change Value to 2 as you suggested and I noticed when I would run over a value between 00 and 15 that suddenly my parameter would jump (based on the 9th position value) and I kept repeating that until i found that value was 10. So 10 = dd. WIth that now static, the 9th value makes the desired change.

thank you!!

Well, the composition of the SysEx is not obvious without having the full manual (and sometimes even with the manual), but you’ve got the trick to modify and send the SysEx and finally found the solution. That’s great.

I also discovered the SM_ChangeValue function. I did this by myself until now using string operations but this function makes it much easier. :+1:

1 Like