[SOLVED] SysEx questions & answers


#1

current working prototype of SysEx sending object: 2020-03-11.

sends Roland-style SysEx (with checksum). moar details inside in K-rate code comments.
sending non-Roland style SysEx is even simpler – no checksum.

cc to sysex.axo (2.6 KB)

since sending SysEX to DIN and USB requires different code, the choice of destination port is unconventionally controlled by sendDIN switch – when it's active, SysEx messages are sent to DIN, otherwise to USB.

also, deviceID is made as attribute, because it can be set different.


original post from october 2018:

so, after searching this forum about SysEx, i'm totally lost :grinning:

1st question: are SysEx messages supported somehow in current stable branch (1.0.12)?

in particular, can i generate and send them?

if the answer is yes, the second question is: how can i generate SysEx messages containing variable byte(s)? my target devices are Yamaha XG.


CC to sysex for alpha juno/nanokontrol
#2

yes, sysex is supported (kind of :wink: )

you can generate it using custom object or a midi script.

using the call :
MidiSendSysEx(device ,port ,buffer, buflen);

note: its just really a 'raw send' , ie. you need to put the enter sysex in the buffer

you can see an example where I use it here for controlling the Push 1 display:


#3

cool! so, i can sequence Yamaha XG parameters from Axoloti.
i expected heavy usage of custom objects anyway :grinning:

i would be grateful to everyone for more examples (if any).

update (kind of offtopic):
but the greatest news is that transposing Yamaha XG parts from external keyboard can also be done via RPN to MIDI channel.
so, one can do this particular task in patcher without writing custom scripts or objects. actually, i don't mind, but it's silly to write code instead of jamming on vacation.


#4

Funny thing, though... I've read in the threads of the forum that Sysex messages are not supported by Axoloti and not logged by the console, but I can start and stop a seq patch using my Novation CIrcuit Start/stop button which is FAH/FBH?

Am I misunderstanding something?


#5

Start and Stop are not System Exclusive messages.


#6

I thought Real Time midi Messages were Sysex. Sorry. if you've got an answer about how to toggle Axoloti using FAH and FBH, I take it :wink:


#7

time to resurrect this thread.

so, 2.0 is out for a while, and in theory, SysEx messages should be supported.

the question is: any practical options to send SysEx messages other than writing an object for this myself?

at least, i can't see any existing object capable of doing this in my 2.0 libraries. maybe i don't know something?

writing an object from scratch is still too difficult for me, more difficult than bringing old heavy SysEX-capable MIDI controller to gigs.


#8

Hey there @chaocrator , I've been stuck in the exact same boat as you for ages, until MattilynMattroe uploaded his really easy to follow sysex object matroe/LPadPro/layout

I have just in the last few days had axo sending sysex to my Alpha Juno, the object is very clearly laid out. Two caveats, currently I can only get it to send out of the usb host port, can't seem to get it to go out of the din and the sysex string is in decimal so you will have to convert your hex string,

eg alpha juno filter cutoff of (midi channel 4) is;

F0 41 36 03 23 20 01 10 i F7 (where i is the data being changed)

and in the object the sysex string appears as 240,65,54,3,35,32,1,16,i,247

I just used an online hex to decimal convertor

Hope that helps


CC to sysex for alpha juno/nanokontrol
#9

I've only tested it with integer at the minute, green inlet, am about to test just a straight LFO to a standard blue inlet

here's my test patch, hope you find it useful
juno noise arp.axp (9.8 KB)

Also just to note this is on 1.0.12, I tried 2.0 but lots of my patches used reverbs etc that weren't working so I haven't gone back to it yet


#10

thanks! i've just found these objects too and had a look at the code.
indeed, it should be not very difficult to derive what i want from these.
in my case, it's relatively recent Roland gear (HandSonic HPD-15), so i also need Roland checksumming, but i've just read how it's calculated – not a rocket science, so i hope to manage it all to work pretty soon.


#11

I have the juno and a Roland GP-8, niether require the checksum to just live change single units of data, both have responded to Matt's object, so I haven't bothered to use the checksum, I don't know to be honest about sending a whole patch or doing an info/status request


#12

i want to control HPD-15 LFO and MultiFX parameters with Arturia Beatstep (or Squarp Pyramid), using Axoloti in the middle to receive CC messages and put their values to SysEx. it would be the most compact solution for gigs, unlike my venerable SysEx-capable controllers that are significantly bigger and heavier.


#13

Just confirmed working with an LFO straight into a blue inlet. I got an error that I don't quite understand as yet but it runs, now to work on din output

/Users/reubenfinger/Documents/axoloti/build/xpatch.h.gch
/Users/reubenfinger/Documents/axoloti/build/xpatch.cpp: In member function 'void rootc::instanceLPjuno::dsp(bool, int32_t)':
/Users/reubenfinger/Documents/axoloti/build/xpatch.cpp:536:55: warning: narrowing conversion of '((rootc::instanceLPjuno*)this)->rootc::instanceLPjuno::i' from 'uint32_t {aka long unsigned int}' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing]
uint8_t sysexArray[10] = {240,65,54,3,35,32,1,16,i,247};

looks like the i in the string is still expecting an integer, will have to find out if there is a better way


#14

Very interesting, please report back how the performance is with a continuously changing sysex parameter being sent. I thought about doing that but was scared of the amount of midi data being sent.

I would think its ok on usb midi but might choke din midi?

@reubenfinger are you using axoloti 2.0 as well?


#15

No this object works on 1.0.12, I tried 2.0 out for a while for sysex in particular, but migrated back because all my patches contain objects that don't work in 2.0.

Haven't road tested extensively, just grabbed a few minutes this morning, and obviously haven't got Din working but I had three objects running 2 sequencers (integer based) and one lfo with a steady stream of data and did not notice any choking .....but it's very early days.

I guess I would only ever use it to add a couple of LFO's here and there or to translate cc into sysex (for example from my digitakt) and any kind of "sysex programmer" ideas would be dealing in static values, so would be less traffic. I was chasing din sysex for convenience but maybe the extra usb bandwidth is a blessing...will keep you posted


#16

i can tell you in advance that it's not very good idea to control parameters with SysEx messages when the gear is connected via classic MIDI DIN ports, because they still work at 31250 baud, and SysEx messages are byte hogs even comparing to NRPNs.

so i think some kind of thinning should be applied before converting CC to SysEx.

anyway, should be acceptable for controlling FX parameters.

i'll report back and share my patch(es) when i manage it to work.


#17

just three main words: got a working prototype.

will post in details later and share the patch when it's ready.
but before it happens, i've got quite a lot of tedious work calculating actual sysex bytes :robot:

EDIT: for those who might be interested.
TBH, i don't see much sense in implementing full-blown Roland checksum calculation for this particular job (translating certain CC values to certain SysEx values), will use sort of quicker & simpler dirty hack instead. more on that later.


#18

He there sysex freaks, already posted this in mattroe's thread, I got sending sysex via din midi working with some lines of code johannes suggested. Here is a patch with my object for sending sysex to a voice live touch.

vlt touch sysex works.axp (2.1 KB)


Mattilyn Mattroe contributions
#19

thanks a lot, i was going to ask you about sharing actual patch, and you already did it/


#20

hey @weasel79, just to keep you in the loop Simon (Blindsmyth) has got Din midi working with sysex