Digitakt/Syntakt Overloading & Optimization

Hi,

I have successfully used a note dispatch to play my Digitakt polyphonically. However I am also trying to send pitch bend, mod wheel, and aftertouch from my controller to ALL voice channels. This is causing overflows and delays. As I am new to programming the Midihub, I am wondering if I can get all of this working with a better optimized preset or if it is simply too many messages for the bandwidth limitations of MIDI.

Could you please upload the .mhp file here, so we can take a look if there is something to optimize?

But yes, it is possible to hit the physical bandwidth limit of MIDI.

I played some more after posting here and it is much better but can still hang somewhat while pitch bending. Posting what I have now–if there are any optimizations to be done it would still be very helpful! Especially if I want to add more voices (and therefore more Pitch Bends out)
digi_poly_WIP.mhp (665 Bytes)

Hey @xanderick a couple of strategies occured that you might like to try.
Both attempt to distribute the “busy” message types across the channels.
Both therefore rely on each channel not getting every message
Whether one or the other will suit you will depend partly on your message flow/performance style.
(You might find, say, that any “weeding-out” could lead to unacceptable pitch “zippering”)

Method 1: LFO-driven channel switching.

Here a fast LFO cycles between 4+ values.
These are rescaled to make a virtual mapping for the Out Low|High settings on a Channel Remap pipe
This Remap replaces your 4 so that the Pitch Bends get sent to Ch9, 10, 11, 12 in a timed cycle

Method 2: repurposed Dispatcher channel switching.

Here a pipeline is dedicated to a given message type, say Pitch Bend.
We use Transform [Replace, Pitch Bend → Note on, Note# = PB LSB, Velocity = PB MSB]
so we get Transform → Length → Dispatcher → Transform[Note on → Pitch Bend] → Filter (drop Note Off)

This gives us PB Ch9, 10, 11, 12 in a message cycle.
Method 2 guarantees that every channel gets every 4th PB.



With both, if it transpires that jumps aren’t any issue but each channel having a (slightly?) different PBs sounds weirdly detuned (in a not-good way), you can always adapt either as follows

  • use either method to distribute PBs across as many channels as you wish
  • use a Channel Filter to discard some of the channels
  • resurrect your 4 replication pipelines and run the results though them

    (this could be quite nice as you could distribute over say 8 channels then select only 3/8 for replication)
1 Like