Rytm Sysex list?

I just got back to this and still donā€™t have a clue how to use the decoding/encoding library. Iā€™m just ok using Max.
BUT, if I was to only :

  1. request a kit
  2. receive the encoded kit
  3. send it back to the Rytm.

Whatā€™s the way to do 3. ?
For instance in Max, I send the kit request sysex (240 0 32 60 7 0 104 1 1 0 0 0 0 5 247). Rytm seems to understand it because she (yes, mine is a she) sends back what I believe is the encoded buffered kit, in this case (127 127 127 0 119 127 127 127 0 127 127 127 59 0 127 127 127 0 127 127 93 127 0 127 127 127 0 127 110 127 127 0 127 127 127 0 119 127 127 127 0 127 127 127 59 0 127 127 127 0 127 127 93 127 0 127 127 127 0 127 110 127 127 0 127 127 127 0 119 127 127 127 0 127 127 127 59 0 127 127 127 0 127 127 93 127 0 127 127 127 0 127 110 127 127 0 127 127 127 0 119 127 127 127 0 127 127 127 59 0 127 127 127 0 127 127 93 127 0 127 127 127 0 127 110 127 127 0 127 127 127 0 119 127 127 127 0 127 127 127 59 0 127 127 127 0 127 127 124 127 127 127 127 127 0 0 0 9 46 0 0 9 46 0 0 0 9 46 0 0 9 46 0 0 0 9 46 0 0 9 0 46 0 0 9 46 0 0 0 9 46 0 0 9 46 0 0 0 9 46 0 0 9 46 0 0 0 9 46 0 0 0 0 1 0 0 0 41 0 0 0 41 0 0 41 0 0 41 0 0 0 0 0 0 0 41 0 0 0 41 0 0 41 0 0 0 41 0 0 0 0 88 42 23 44 247).
But if I simply send back the encoded data to the Rytm, nothing happens.

My only goal is to store kits in order to load them back so I was thinking I could simply do it in Max, but Iā€™m missing a step, I guess.

1 Like

If you request a kit, and just send back whatever it sends you, then it should workā€¦in your list of numbers there should be a 240 at the start (sysex msg start), no? The encoded Kit Sysex should be 2998 numbers long for OS 1.70

2 Likes

All good, I managed to make it work.
(list objects in Max by default are limited to 256 elements, thatā€™s what was blocking me).
Thanks !!!

2 Likes

Would you be willing to share your max patch? I should be able to edit that into the kit data > midi controller sender that I want.

1 Like

Itā€™s really just a proof of concept but here it is.AnalogRytm_Kit_Recall_Basic.maxpat (6.8 KB)

The plan is to merge it with another of my devices, to recall kits from Ableton Live Sets directly : CF SYSEX Recorder version 1.0 by chapelierfou on maxforlive.com

1 Like

Great and thanks! It might be a little while before I can get busy with this.

Btw, I use a m4l utility device of yours in an installation artwork of mine :slight_smile:

2 Likes

Iā€™m building a comprehensive Rust SDK for rytm doing tedious reverse engineering work at the side.
It looks very promising. Any max object can be build on this SDK when it is ready.

Soon it will be published but it is currently unfinished and a WIP but if youā€™d like to take a look at it it is here.

Iā€™ll keep you updated :sparkle:

2 Likes

I think eventually the community will come to that.
Iā€™m also doing the ground work to make that happen. :sparkles:

1 Like

By the way in the current state of things with my experiments reading or writing sysex from/to rytm is almost instant. (Talking about single objects pattern/kit/sound/global/settings ).

Iā€™m curious was it taking much more time in the earlier versions of the firmware?

Everything for me is pretty immediate but Patterns always took 4-6 secondsā€¦I am still working on the new firmware so I havenā€™t tested any changes. Iā€™m also using iOS and a Core MIDI library so who knows if that is also a bottleneck when sending large sysex.

1 Like

Great work with bsp on the updated 1.70 structs / decoding :+1:

2 Likes

Thanks! Iā€™m pretty familiar with all the types excluding songs now. Happy to answer any questions if they arise.

Also check this one out if you havenā€™t found it already.

1 Like

This is interesting! Probably it is Core MIDI then but if it is Core MIDI, it should happen with https://github.com/Boddlnagg/midir also which is the library I use since itā€™s backend is Core MIDI on mac which is my dev machine. Maybe it is iOSā€¦

My pattern transmissions are almost instant. Also when I reverse engineer I poll patterns in sub 500ms loops sometimes and AR can handle it pretty well.

I should add that Iā€™m using USB Midi not the DIN cable which has a 31250 Bit/s bottle neck.
Iā€™m not targeting DIN cable transmissions anyway.

There are also some more findings I had recently but didnā€™t reflect them with a PR yet.
Iā€™ll eventually do that.

2 Likes

I use the MIDIBUS library for my iOS MIDI functions. Iā€™ll ask the dev how he is handling large sysex sending. I DO receive Patterns / Kits instantly though.

1 Like

When you flood Rytm with sysex messages, the responses get queued on the rytm side so it gets continuously slower.
I think the bottle neck is how much bandwidth the rytm has mostly.
(empirical knowledge) :slight_smile:

Still some documentation work left but here it is, a Rust SDK for rytm.
When the docs are finished and the crate is published Iā€™ll do a proper post for it. :sparkles:

8 Likes

Oh shit nice.
Iā€™d say that warrants its own thread :o

1 Like

Here it is!

2 Likes

Here is the max object :wink:

I hope you find it useful :sparkles:

2 Likes