[SOLVED] SysEx questions & answers


#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


#21

IT WORKS !! :star_struck:

something like this.

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.

moar details in K-rate code comments.


#22

Very Nice, very nice indeed


#23

just showing off some work in progress (this time screenshot only).
made Model ID bytes attributes too, to make my objects more reusable with less code rewriting.
i believe that Roland uses same SysEx with different Model IDs in many other machines MIDI implementation.

also, object for controlling Yamaha XG machines are in progress.
they should work with (nearly) any XG machine, because typically all those machines have one generic Model ID.

and also i'm going to make inlet versions of my cc-to-SysEx objects to allow incoming CC to be processed in the patch before they converted to SysEx.


#24

testlab :sunglasses:

EDIT: just finished the most tedious part of the project — documenting what Roland documented poorly.

Yamaha XG is documented far better.


#25

Hey @chaocrator :slight_smile:

Have been playing around with an edited version of the object today. Really good :slight_smile:

Did you also try sending the sysex via Axolotis device port, to the computer?


#26

not yet, just did not ever need that (i use Axoloti for 100% hardware solutions to do things).
anyway, should not be a problem, device port uses the same USB MIDI protocol to communicate.


#27

@chaocrator

Thank you foe the answer.

I tried a few things and had no luck yet.

I am realising that maybe it is the app that i am using to route the sysex data to it's destination, that maybe doesn't support sysex. I wrote the developer and asked, still waiting for a answer.