Hi, Ambitious project… wanting to receive sysex patch dumps from a hardware synth and use it to update parameter values

4ndrw's icon

I think I said it all in the title

I’m wanting to control my AFX station synthesiser (aka Novatoon Bass Station 2) with a maxforlive device inside my ableton projects.

If I succeed with this, I may attempt something similar with other synths I have

I’ve found some devices for this synth, but they’re out of date. They either ignore sysex or make use of background apps for sysex communication (before ableton could do it directly)

I’ve found a breakdown of every part of a sysex dump for this synth, which parameter each byte controls. So I don’t need to reverse engineer that part.

https://github.com/francoisgeorgy/BS2-SysEx

Im struggling to find much information about using sysex in max / maxforlive

anyone have any advice on a good way to take that sysex string and split it up to update some live dials?

any help or direction appreciated!

4ndrw's icon

Is it as a simple as receiving the string

and using “unpack” to split it into a bunch of outlets, and feeding that into each live dial for that parameter?

Source Audio's icon

you will receive that sysex string as a stream,
and will have to use thresh or zl group to collect
the stream into list, to be able to split it.
then you can use zl slice or other means of splitting the list.
if you use sysexin (no idea if that works in m4live)
you will not need to detect if data at input is a sysex message,
which would be the case if you use midiin.
that bs2 message is 154 items long, so zl group 154
could also do the first part of the job

Jean-Francois Charles's icon

Try it: what does [sysexin] print when receiving the dump?

mizu's icon

what Max helped me, innocent user, to understand sysex: it's a list encapsuled between 240 and 247, F0 and F7 in hex...

Max Patch
Copy patch and select New From Clipboard in Max.

so i can see what changes if a parameter is modified and sent to Max. If it's a total dump of a machine, it can be a very long list, or many sysex messages. I was happy, unable to understand the ground of the syntax, but simply copying a list from midiin, and sending it via iter to midiout, the parameter followed nicely.
In fact, precedent millenar, the MIDI flux dydn't support well to update in realtime many sysex changing parameters, and it was better to use controller or notes, simple messages, and patch in intern off the machine ( for me i.e. a Lexicon PCM80).
serial or USB 1 dydn't like so long repeated messages. And this complexity was made to be invisible for the ease of the customer.
In fine, this ease was nice to save and recall presets as text in Max with coll, without to need midifiles. Today, OSC seems more speedy for parameters in real time. I dydn't test MIDI network.
hth
zzz

mizu's icon

added for fun a way to store and recall

Max Patch
Copy patch and select New From Clipboard in Max.

zzz

dibek's icon

Hey, i made this one:
https://maxforlive.com/library/device/5078/y-a-b-e-yet-another-blofeld-controller
Everything you ask for is in there, hope that helps.