Made a new patch randomizer for max

Not trying to be rude, but you should just look at the patch I uploaded. It will run fine without a max license.
This took many hours to test and get working correctly. You can get all the information for sysex and midi cc’s by looking at the different subpatches, everything should be fairly well commented. The machine drum uses 4 midi channels to send/receive sysex and midi cc’s so it can get a bit confusing.

Machine changes are simple, kit changes less simple. I was planning on randomizing patterns but that data is saved with 7 bit encoding with some type of handshake. I wanted this patch to just send midi without having to listen to any response.

My computer screen is 1/3 brocken so it is PITA to use. Thanks anyway.

This is how machine selection works. This is the sysex to change machines:

F0 00 20 3C 02 00 5B [pad number 00-0F] [Machine ID] F7

On the left is the MachineDice subpatch, you can see that it is selecting from 47 machine id’s in decimal format. Those number are the specific machines I wanted in the random pool. I skipped GND and INP machines, rom machines are a different section. If you want to use ram or rom machines, after the Machine ID is an additional 01 before the F7. The page you posted from the manual notes that too.

3 Likes

The parameters for each pad are spread over 4 midi channels and controlled with midi CC’s. By default, the channels are set to chan 1-4. Pads 1-4 are channel 1, 5-8 channel 2 etc. This is a section that sends random information to 4 pads at a time. So the CC #'s for pad 3 are not the same as pad 6, and it is also on a different midi channel.

3 Likes

Thanks again for sharing these informations. I totally understood the regular MD CC part, even if it’s unusual. I made a sheet, hoping it is sexier than original


Sequencing a Machinedrum from a Digitakt(demonstration)

2 Likes

@InductiveOne, do you use this parameter?
I guess without it, there is not init, which I’d prefer…
%000000dd | 0 = init synthesis, 1 = init synthesis + effects, 2 = init synthesis + effects + routing (optional parameter)

I’m pretty sure it defaults to the 00 value. When you switch machines it seems to always init the params for that pad (I will have to double check that later).

As “optional parameter” is mentioned, and as there is a possibility to keep settings and change machine with Function hold I still hope… :slightly_frowning_face: :

Hey it works like a charm ! Don’t tell @defenestration ! :joy:

It seems to default to the 02 value (init all)
Init nothing would be great, plocks can help.

Thanks again for help ! I planned to do this a few months ago :
Controlling MachineDrum With MIDI

Concerning CC control I can’t set 92 CCs on my OT so I think I’ll map only 26 per channel and control same parameters for all tracks sharing same channel.

1 Like

Damn this is nice! Sounds like a circuit bend MD! It’s almost the box I have been dreaming of …(controllable circuitbend madness)

Is this vid made with an old MD or an UW? I can hear samples, the samples build in MD or UW samples?

1 Like

An old MK1 UW. Those were a few random drum samples I loaded up.

Bomb! Thank U!

1 Like

Hey, I’m new with both the MD and Max, and having trouble getting this running - Can anyone help? Sysex Receive won’t get past the ‘waiting…’ message in any of the three location modes (Orig /Spec/ Ver). I’ve got the Base channel set to 1-4.

Any other settings to check for? MIDI interface is recognised by Max(8)

You should not have the MD set to wait for the sysex, should work in classic or extended mode. Make sure in max you set whatever midi output to ‘a’ since I’m pretty sure that is where all the midi is sent in the patch.

(options -> midi setup -> set your midi output to Abbrev a)

Then it should work while you are in any normal state on the MD. I used it mainly with the sequencer going or by playing each pad by hand. LFO randomization is more appearance if you have a sequence going with a few pads playing at once.

I have had intermittent issues where the MD decides it doesn’t want to listen to midi. Not a huge deal, just turn it off and on and you are good to go, but I don’t know if I would suggest using this randomizer on stage.

If you still can’t get it to work, are you using one of the midi/usb cables? I always had problems with sysex sending correctly with any of those. I suggest you spend a few bucks and get something like a fastlane if that is the case.

Good luck! Let me know if you can’t figure things out from here and I’ll try to help.

2 Likes

Thanks so much for the quick reply!

‘Abbrev a’ has got the ball rolling. Everything works other than Rand Param (the most important one :robot:), neither for all 16 machines or individually.

I am indeed using a cable interface. By now I’m not sure that would be the problem, if the other changes are registering…?

A couple of reboots later and it’s all working great! Thanks a million for the work and the support :smiley:. Coupled with Cntrl All automation, it’s getting really wild! You touched on pattern randomisation… What would it take to get that going, technically?

Awesome, glad you got it working. I’m not great with max and this randomizer was one of my first useful patches. The pattern data is more complicated than everything else. I might say some of the following incorrectly because I only vaguely know what I’m talking about.

The patch I made is sending each parameter change as a separate sysex message. The pattern data would have to be transmitted as part of a whole patch. Which means instead of sending a single sysex message to change a parameter, it is a large encoded sysex message containing a whole patch worth of information at once. I just don’t know how to handle that sort of thing in max. I really thought about trying to write the whole patch in another language but I’m not a programmer.

In the end I realized all the ideas I had for generative patterns were easier to explore by just sequencing the MD directly with midi instead. I do hope to get back to the patter randomizer, although I always planned it more being a bit more like mutable instruments grids. Might get back to it one day when I have a bunch of time and I’m feeling a bit masochistic.

2 Likes

Thanks for the thoughts. I know close to zero about the workings of Max and Sysex, but I’m curious why there doesn’t seem to be a pattern randomiser out there for the MD.

I wonder, would pattern info HAVE to be sent as a whole patch? Your param info must be sending a lot of separate messages (16 tracks x about 18 parameter changes), which arrive basically instantaneously. Patterns wouldn’t involve many more changes (16 tracks x 16 steps… x2 for Trig on/off state + Vel. Am I missing any??)

Are pattern sysex changes definitely accessible on the MD? I know that @mekohler has hit major roadblocks with this in a couple of his (excellent) apps (currently doable on RYTM, but not Octa/Digitone).

Basic SysEx requests are given in the MD’s manual.

Elektron has allowed the document that details the MD pattern data structure to be posted here:
https://www.elektronauts.com/files/473

1 Like