Multiple MIDI Outs

In the manual, and due to the inherent limitations of the MIDI protocol, it mentions chaining no more then 4 Shruthis in order to cut down on latency. I was wondering if I could bypass this limitation by chaining together some extra MIDI ports. For example, one unit could have one MIDI IN and two MIDI outs that would each be hooked up to three chained Shruthis for a total of seven Shruthis with the last in each chain receiving equal amounts, or close to equal, of latency? What about three or four extra outs for a master Shruthi type set-up?

If i understand right each Machine in the Chain grabs one note to play and forwards the others, so if you’d just use a THRU-Box the machines attached to there would all play the same note…

I should clarify the source of the question:

I’m finishing up an enclosure or two for my Shruthis and I’ve got these extra 5pin dins waiting to be put into holes and was thinking I could just make an enclosure a THRU-Box also. (by jumping the 4 and 5 pins within the enclosure). If the Shruthis optocoupler could handle the draw? Would there be gains in latency?

I was thinking of building an Octopus Shruthi. Where the MIDI-Head is in the middle and it distributes incoming midiout to the Shruthi-Tentacles via extra MIDI-Out ports. However many. Rather than daisy-chaining 9 Shurthis, or any device for that matter.

This wont work because you need to daisy chain the devices to make the Polychaining Feature work (if i understand t right). The latency does not come from the physical MIDI interface, its the Shruthi parsing and forwarding the MIDI-Flow.

A better way to remove the latency would be a MIDIpal running the DISPATCH app…

There’s chaining and polychaining… If you just want to have 8 units playing different sounds, adding a 1->8 thru box, and doing thrubox > 1, thrubox> 2, thrubox -> 3 will work.

That said, I assume you want to do polychaining. If you want to use polychaining, the units need to be in a, well, chain. It’s not called polystaring or polytreeing. For example, if you have 3 units, 1 > 2 > 3 will work, but 1 > 2 and in parallel 1 > 3 won’t work. Why? Because there’s no path between 2 and 3, so 2 and 3 have no way of negotiating which note they should play. A way to make it work would be to reimplement a different polychaining protocol that relies on different MIDI channels. The master unit does all the voice stealing and dispatching on N channels, and each unit in the chain downstream listens to a different channel. Then it would work no matter what is the topology of the downstream network. I didn’t implement it this way because allocating half of the MIDI channels for a single instrument is silly. Also, with this channel-based approach, every knob move would send a flood of one NRPN per channel - likely to cause overflows if you tweak a lot!

Regarding current draw, the Shruthi outputs a bit more current than what the MIDI specs recommend. So it should be feasible to route the MIDI out signal, without actual buffering, to 2 devices ; no more. Good thru-boxes have proper logic buffer chips to “copy” the signal - it’s not just some passive shit. But remember that no matter how many physical MIDI out connectors you add to the unit, it’ll still have internally only 1 MIDI port - you are just adding more connectors, but they’ll send the same information, which make the hack quite useless.

The latency comes from the MIDI protocol. It’s clocked at 31250 bauds = 1/3ms per byte ; and a note message takes 3 bytes.

I’ve currently my Shruth-1 as device 1 chained with two Shruti-1’s and I’m going to add a couple more. I’ve only even touched the poly mode once or twice to be honest. I don’t know why but I haven’t found interest yet. To be honest, I don’t care about latencies either; I’ll let the envelopes sort them out. But maybe I ask for others, future others, or only because I’m curious. What I do care about is the octopus’s ability to move it’s legs and swim or lay on the desk or hang from its hooks or sit in the hands of others. So it’s esthetics, really. Useless? meh…?

Maybe I’ll say something stupid but as I see a real interest in breaking the 4-Shruthi polychain limit (just for fun or for pushing boundaries I guess), here it comes my contribution:

If the latency is fixed and you can know it beforehand per Shruthi, why don’t make the “early” Shruthis wait until the “lazy” Shruthis have received the MIDI message?

I mean, at the end some ms of latency are not so serious… Years ago when Asio4all drivers weren’t as compatible as today, and I hadn’t a decent interface, I had to make music with latencies of 100ms or more and well… still had real fun! Obviously it won’t meet “live” quality standards if the chain is densely populated, but at least they will play “together”.

And, Yes, I know that synths are ment to be played in realtime with no latency, but… this is the best idea that came to my mind and I’m pretty sure that you will refine it :wink:

To put things into perspective… Assuming a worst case delay of 5ms (yuck!) between each unit in the chain, this is equivalent to having two instruments spaced 1.7m apart ; and a 8 units polychain occupying a stage 14m wide.

Have you ever heard of people complaining of latency in a symphonic orchestra?

From now on, I’ll express latency in the unit that matters : meters :smiley:

Have you ever heard of people complaining of latency in a symphonic orchestra?

I’ll go further with that… I really appreciate chorus, celeste and unison effects, and if the chain is relatively small, this could be a “cheap/simple” way to get something “like” that without a DSP.

That, or just as an experiment somebody could create a Shruthi-kenstein just to see how it sounds…

And this could be one more reason to buy more than one Shruthi, that could be added to the hundreds that we are already enjoying :slight_smile:

Sometimes we speak of latency as something unwanted and undesirable, but some other times we use it with aesthetic purposes. I don’t know why but I was thinking of this as another situation in which MIDIpal could come in handy (maybe generating an special polychain code?).

For instance: A group of 6 polychained Shruthis, arranged in groups of 2, with a fixed delay of 150ms between every group and different settings of filter/resonance and volume. Old style MIDI-FXs, on steroids.

The only limit is your imagination…

And, don’t get me wrong, I’m not telling you or anybody to spend your time to make this happen. I know that you have gazillions of projects in mind and almost no time to deal with them. I’m just writing things as they come to my mind in a sort of brainstorming, and if it could help/inspire somebody to go experimental, I’ll be glad.

Two random thoughts:
Is it even possible to chain MIDI ports electrically as MIDI is carried by a current loop in the physical layer?
Isn’t the 3 byte delay between notes present in all polyphonic MIDI instruments, how could it not be?

@halunparaiso:

1 midipal working as a dispatcher ; fed into 2 midipals working as delays and set to different channels :slight_smile:

@haiunparaiso:

just come and join us on our shruthi polychaining world record attempt