Greetings fellow GP users. My first post here so please bear with me.
I have been trying with no success to build scripting to allow me to send specific sysex commands to my matriarch for the purpose of changing various global parameters that are only available via a set of cryptic key presses on the synth itself.
I have read the GP documentation, reviewed many of the posts here, and even tried chatgpt, but no luck. Coding is just not something I am wired for so it’s a struggle.
There are about 20 settings that I want to build controls for. Some are simple on/off toggles and some are multiple choice (think radio buttons to select a or b or c).
I am hoping beyond hope that some of the code smart cool people here might be able to provide a sample or template script that I could iterate on. Once I have the first working script, I believe I can build out the rest as it would be just duplicating the script and making some minor edits for each use case.
I hope this makes sense and I am grateful for any guidance folks here can provide.
Hi GrooveMonkey, welcome aboard!
Maybe you should at least provide one specific example of what you want to achieve, or what specific parameter(s) / settings on your Matriarch you want to be sysex-controlled…
Also providing a link to the MIDI-implementation chart would be a nice move, it would at least save a bit of time for anyone who probably wants to help you (and doesn’t own that synth).
See… it’s a very specific request from you, and there might be not so very much users who own this very special synth and also are script-savvy… so (i’m just thinking loud) you maybe should make the situation of helping you with your problem as comfortable as possible for anyone else.
Please don’t feel offended, it’s only my thoughts of how you might be more successful in finding helping hands.
Here’s an example I use to control the internal tube drive in my Hammond XK-5 that I use as a sound source:
I map a knob widget to the following scriptlet in the global rackspace:
Here’s the script in that scriptlet:
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 10 10 22 13 00 30 17 55 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
That scriptlet called “Tube Drive” is piped into the output to my Hammond XK-5:
It took some trial and error to find the SysexMessage that worked but it’s pretty flawless.
I can’t remember who helped me with that script initially, it may have been @David-san, @pianopaul or @schamass.
Maybe this gives you a steer in the right direction.
A word of caution… this should be harmless and do exactly what you want but I would make sure you have a backup of your Moog Matriarch system file before you start tinkering like this. Ask Moog for a Sysex Schedule per parameter if you don’t already have one.
Thanks Brandon. I will take a shot at using this as a template. Greatly appreciated.
No offense taken whatsoever schamass. I debated how much content to put in my original post because I have a lot of detail and didn’t want the post to be longer than Homer’s Odyssey but your point is fair. I will add the details to this thread. Thanks for your input. Much appreciated.
Details:
I have a list of all the sysex commands and what they do in a pdf file which I got online at a site called robemusic.com - guy is a freakin wizard so props to him!. He built a TouchOSC interface that allows for changing the Matriarch global parameters via sysex.
Matriarch TouchOSC sysex control of global parameters
I saw that and thought to myself, there must be a way to do a similar thing in GP. My goal is to basically recreate what he did with TouchOSC in GP. I considered getting TouchOSC since he provides the template but I would rather do it in GP.
My use of GP is all in studio. I use it to select which HW and SW synths I want to play via my attached Stream Deck. I installed at the stream deck plugin and can select my synths with just the push of a button.I use OSC to control SW synths on a 2nd Mac with GP also running there. I have some FX in the global rackspace as well. I am including a few screenshots of my GP environment for reference.
So what I need the scripts to do:
When I select an option from the connected widget, the script will facilitate sending the sysex to the matriarch, and ideally confirm that it succeeded (I believe this is a ‘callback’ in GPScript parlance).
Matriarch-SYSEX-Cheat-Sheet.pdf (247.4 KB)
Thanks again @Brandon for your script sample. I was able to successfully implement the first couple of scripts based on the logic of your script.
var
// Define a parameter that can be controlled by a widget
P1 ("SysexLocalOnOff") : Subrange Parameter 0..127 = 0 // Value ranges between 0 and 127
// Define your basic sysex message
S1 : SysexMessage = #F0 04 17 23 10 00 01 00 00 00 00 00 00 00 00 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, 6, P1) // Change the first value
SendSysexNow(S1)
End
I am now working on the rest and hopefully will be able to do everything else.
That’s great to hear. Have fun and report back. We’d love to see what you built and how it functions.
Very cool setup. Maybe you can present your work in a dedicated Gig Performer in Action thread?
@npudar thanks. I am doing a studio renovation very soon but on the other side of that I would be happy to write it up.
Renovation will include optimization of my GP layout in addition to the physical renovation so that version will be much better.
ETA for writeup is ~mid-December.