Rytm Sysex list?

I think a Max object would be useful since I’ve received many messages on how to do sysex stuff for Elektron gear in Max. One thing to note about the patterns is that some trig parameters are encoded into the same byte / bytes (TRC, microtime, retrig, etc) so you need to do some testing and stuff to get those values…I still have a bug where FILL values are sometimes not decoded properly hehe

1 Like

Thanks for letting be know.
Probably I’ll go through the decoding myself once double checking what the library does.
Maybe along the way I might fix a couple of those bugs if I’m lucky to come across them.

In my case I would use it to “bypass” the Rytm architecture :
store patterns and kits, recall them from the computer. That’s it. I’d like to manage kits and patterns in the computer instead of relying on the kit saving + autosave that I find super annoying (in hardware in general, more specifically with Elektron).

1 Like

I just could find some time to read the library code, thanks for sharing the recent version again. Did you check if it still works fine for 1.70 btw?

I made it work, it parses the pattern fine and I can access the pattern structure. I’m not yet super sure how to use it though. It might be too much to ask but would you be up for a 15-20 min meeting to give me a quick overview to speed me up whenever you have time?

In return I can also persist the info I gathered and document it somehow.

For example these big endian unions what do they represent?

trig_flags: [[14, 4], [57, 16], [224, 3], [144, 14], [4, 1], [0, 224], [3, 144], [14, 4], [1, 0], [0, 0], [16, 14], [4, 1], [0, 0], [0, 16], [0, 0], [1, 0], [0, 0], [16, 0], [0, 1], [0, 0], [0, 16], [0, 0], [1, 0], [0, 0], [16, 0], [0, 1], [0, 0], [0, 16], [0, 0], [1, 0], [0, 0], [16, 0], [0, 1], [0, 0], [0, 16], [0, 0], [1, 0], [0, 0], [16, 0], [0, 1], [0, 0], [0, 16], [0, 0], [1, 0], [0, 0], [16, 0], [0, 1], [0, 0], [0, 16], [0, 0], [1, 0], [0, 0], [16, 0], [0, 1], [0, 0], [0, 16], [255, 255], [255, 255], [255, 255], [127, 127], [255, 255], [255, 255], [255, 255], [255, 255]]

Anyway I ha ve a lot of questions :blush:

If not no hard feelings :sparkles:

I’ve made a fork https://github.com/alisomay/libanalogrytm
and a binding repo for rust.
https://github.com/alisomay/rytm-sys which is published.
If there are Rust programmers around they can use it. https://crates.io/crates/rytm-sys
I’m going to do a safe wrapper around the bindings soon.

3 Likes

Also I see that the library is not dead thanks to the maintainer!
Which makes me really happy!

1 Like

Oh nice, I just started looking at the changes, so this is great…so annoying they changed so much :[

That would be AMAZING. I m dreaming of being able to request kit parameters and send those values to an endless encoders controller like a BCR2000. Even if it takes a few seconds it d be a huge improvement.

1 Like

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