Digitakt polyphony with Max MSP

Hello everyone, I’m currently working on a Max MSP patch to turn the Digitakt into a polyphonic synth, and I’m almost there! Each new incoming note is sent to the next available channel and I can play up to 8 notes at a time. The problem is that I will get hanging notes very often when playing chords quickly. I ran a lot of test and I’m pretty sure that the patch is sending the correct Note Off informations, the problem seems to be on the Digitakt side. It looks like it “chokes” when it gets too much data at once and a note will hang, even if I resend Note Off messages. It will only stop when the track receive a new note or if I double-tap the Stop button.

Does anyone has experience with this? Does this happen with the RK-002 cable? Any idea on how to send a “All Notes Off” message to the Digitakt? (a CC120 message is like double-tapping the STOP button so it stops the note but also cuts the audio very abruptly which is pretty ugly) Maybe the way I’m sending MIDI from Max isn’t the most efficient way, I’m not super good at this stuff…

Anyway, any info would be greatly appreciated<3

(And yeah I know there are a lot of working solution for this but my 10-years old computer won’t let me use Max For Live and I wanted to try the polyphonic stuff before spending money on a Retrokit smart cable. Also I love getting back into Max MSP once in a while!)

4 Likes

If you don’t mind to share the patch I could take a look ?
I don’t have a Digitone (anymore) and I don’t know your maxMSP skills, but 95% of the time in these scenarios, it’s a problem with the software that you wrote.
I also highly encourage you to take a look to the abstraction shared by Benniy in this topic : https://cycling74.com/forums/force-poly-to-a-specific-voice-number
I’ve learnt a lot from it and it’s helped me a few times.

1 Like

Thank you for your answer! My patch is looking pretty bad at the moment and I can’t modify it right now so I’ll upload a cleaner version tomorrow.

I’m pretty bad at Max MSP, to the point that I actually don’t understand the role of the [poly] object. I’m reading the Max Reference right now and I think I get what it can do but not sure how it would help in my patch. I went down a simple (and maybe dumb) route : each incoming note triggers a [counter] that reroute the next note to a different [midiout]. I have 8 of those [midiout] object and each one of them is set to a different MIDI channel.

I also took a look at the patch from Benniy but damn, I can’t figure out what it does, aha. I’m bad like that! It doesn’t seem to deal with MIDI at all? I guess it’s for software synth?

1 Like

Hey, here is my patch if you still got time to have a look sometimes :

polydigi2.maxpat (90.7 KB)

I tried to clean it as much as I could, hope it’s understandable!

1 Like

Does this work ? Digitone_voicer.maxpat (3.7 KB)

2 Likes

I’m no Max expert, but I wonder if it’s causing problems due to changing to the next MIDI channel before the note off from the previous channel is sent? So the note off message doesn’t actually correspond to the same channel as the note on? I’m not sure how that could be fixed though!

1 Like

Hey, thank you so much, it does work but there is one major limitation : the channel will only rotate when you hold several keys at a time, which means that if you play a series of several notes with long decays, each note will cut the tail of the previous one. I guess this was working on the Digitone because each track is already polyphonic, but the Digitakt can only play one sample per track… Thank you so much though, your patch seems super stable and very straightforward, I can probably use little bits of mine to make this whole thing work! :slight_smile:

@pselodux Thank you for your answer mate! I did ran into this issue quite early in the process. I came up with a workaround where the Note Off messages are sent separately to all channels but it will only go through if the associated Pitch value matches the Pitch value of the last received Note On message. It seems to work as I expected but maybe it breaks when things happen too fast (like when you play a chord).

1 Like

I see, you’re right.
I’ll have a look as soon as I can. I’m pretty sure I already encountered this problem in the past.

1 Like

I just had a thought and I think I could make a quick and dirty patch, but would but would be hardcoded to 8 voices, meaning that if you want a 6 voice version, you’d need to change the patch. Would it be ok ?
I’ve got no better idea for now.

1 Like

Yeah that’s okay with me, thank you so much that’s very nice of you!

I’ll try some things with your previous patch tonight too, I love its simplicity. :slight_smile:

And by the way je suis français aussi! Aha, merci pour ton aide.

1 Like

You’ll not be able to make round-robin voice allocation with [poly], unfortunately. (C’est ballot.)
You’ll have to track each note-on for a note-off. Or, maybe easier, send the note-offs to every channel while only the note-ons are round-robin, that shouldn’t be a problem.
I’m giving it a try !

2 Likes

What bout this ?
Digitone_voicer2.maxpat (6.8 KB)

3 Likes

Hey, this works perfectly, that’s amazing, thank you so much! I was going down a similar road but I was overthinking everything, your patch is beautiful and super efficient, thank you again<3

2 Likes

Nice, I couldn’t test so it’s nice to know it’s working.
Happy to help.

1 Like

Hey I know I’m a bit late here but I’m currently using the max msp patch that you made and I’m loving it!

But I would like to alter the patch a little bit so I can use only ‘4’ tracks of Digitakt. Not all 8 of them so I can leave room for other samples.

The only problem is that I don’t know anything about script and I really don’t know what exactly each patch is doing to my instruments.

Is there anyway you can help me with that? Thank you so much

Hey guys! I’m currently using the max msp patch form here

and I’m having so much fun with it!

But I would like to alter the patch a little bit so I can use only ‘4’ tracks of Digitakt. Not all 8 of them so I can leave room for other samples.

The only problem is that I don’t know anything about script and I really don’t know what exactly each patch is doing to my instruments.

Is there anyone who knows how to alter the max msp patch so that it goes through only 4 tracks of my digitakt?

Thanks

1 Like

Well apparently I did it.
Idk how I did it i was just messing with the settings of the patch and wild guessing what was controlling the maximum umbers of tracks being used and couple of min of messing things around I did it.

Heres the setting you have to change. I have no idea what I did so I can not answer any questions but it works for me. Only uses track 1~4 of my digitakt.

1 Like

Nice!

If you’re using Live and have Suite or the Max for Live extension I can really recommend PolyMind, I’ve been using it for years to do polyphonic stuff on various Elektron devices:
https://maxforlive.com/library/device/2192/polymind

3 Likes

Chiming in to say that this M4L device is still going strong and working well with a Digitakt!

3 Likes

I wonder how hard would be to program this same device, but to control the unofficial Machinedrum firmware polyphonically