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!)
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.
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?
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!
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!
@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).
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.
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 !
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
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.
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