Splitting incoming midi notes even/odd to separate outs or two channels

Is it possible to have a stream of incoming midi notes into midihub and then split them based on them being even or odd note numbers either of these two ways?

  1. across separate midi outs on midihub

or

  1. across two separate midi channels on the same out on midihub

I’m trying to accomplish a seamless poly chain of two identical synthesizers and have them each only play half of the notes that are being sent to them both.

Hi, Charles,
Dispatcher set for just Ch 1 & Ch 2 would split alternate notes to alternate channels.

(It needs Note Off messages too, i think)

1 Like

If your synths support some form of polyphony, and you want to send even notes to one, odd notes to the other, you should use all 16 channels, sent to say Virtual A port, then have two From Virtual A pipelines with Channel Filter, Channel Remap and TO X Output pipes. One Channel Filter should be set up to drop odd channel numbers, the other even numbers. The Channel Remap is optional and can be used to redirect all the dispatched notes back to a single channel before sending to one of the synths.

To visualize this better:

[FROM MIDI A] → [DISPATCHER] → [TO VIRTUAL A]
[FROM VIRTUAL A] → [CH FILTER (odd)] → [CH REMAP] → [TO MIDI A]
[FROM VIRTUAL A] → [CH FILTER (even)] → [CH REMAP] → [TO MIDI B]

2 Likes

I’ve never used virtual pipes and this whole thing is so confusing.

I need to read more and experiment with the editor more I’m so over my head with this device in general.

Just take it bit by bit Charles, and keep watching the MIDI Monitor to see what each pipe does.

Here’s two key pipes in @Giedrius’ set-up:


Here’s the Dispatcher with all the channels ticked:

Screen Shot 2024-03-13 at 17.30.19

Now here’s one of the Channel Filters:

Screen Shot 2024-03-13 at 17.30.36




Now let’s watch the Dispatcher for the first 7 notes:


See how my keyboard is set to Ch.9…
…but Dispatcher changes that, “sharing out” the notes among the channels

The last channel “allocated” was Ch7

(in this shot, I've used Note Numbers)

but you can change that in the View menu if you like

See also how Dispatcher “remembers” which channel each Note Off should go to.



Now all these notes go out of Virtual A -OUT
…and will go in to both Virtual A -IN pipes…

…so let’s look at a Channel Filter and continue to hit keys:

First, see how the next note come in on Channel 8 (because that’s the next “Dispatched” channel)

Now notice that not all the notes get through (only the notes on certain channels)

(Notice also that the last note is on Channel 1. That’s the Dispatcher at work again)



OK, Charles, that’s a little example of using the Monitor to start to figure out what’s going on.

Much better, though, when you see it yourself as you select pipes and see what’s happening note-by-note.

Let us know how you get along.
(Post up pics like these –showing the pipe and the monitor– if you want ask “Why am I getting this?”)

5 months later and I am finally trying to do this. I actually have two pairs of polyphonic synths I want to do this to. I have two Roland Alpha Juno’s and two Oberheim Matrix 1000’s. I’d like incoming notes on midi din input A to be dispatched to output A & B for the Juno’s. Then later after I figure this out I’d like incoming notes on midi din input B to be dispatched to output C & D for the Oberheims.

At any rate…

I just don’t understand what’s going on. I don’t understand why I would split notes via channel. I kind of understand the virtual pipes are just allowing me to move the data around amd function as sort of virtual buffers but I don’t understand why I can’t dispatch notes based on even/odd values directly.

I tried following your logic and copying it the best I could but I am unsure if I’m on the right track. I assumed the one channel filter was supposed to have even values and the other channel filter odd values. But I don’t truly understand what’s going on here. Is this even remotely close at this point?





This is what I see in the monitor when looking at dispatcher.
image

I did notice when monitoring the A output only some of the notes get through.
image

Here’s similar results when monitoring B output.
image

I truly appreciate your help resonotter!

Could you attach the preset here for us to inspect?

You might have set up the Channel Remap pipes incorrectly. If you need all notes on the same channel, the Channel Remap’s input [low;high] should be [1;16] and the Out Low & High should be the same number which is the destination channel of the receiving synth, so for sending to Ch.1, just use [1;1] for Out Low & Out High.

Here’s my preset file. Not had time to mess more yet.

polychain_preset.mhp (404 Bytes)

Hey, Charles!
Just make changes like these…

polychain_presetEven

polychain_preset_Odd
(where all the channels are mapped to just one)

…and you’re good to go with output A & B for the Juno’s.

(add a similar set of 3 pipelines for B → output C & D for the Oberheims – just use a different virtual)


here’s my take on your other questions:

why I can’t dispatch notes based on even/odd values directly

For the most part, Midihub deals with each incoming event separately. So Dispatcher is a convenient way to do different things with different notes as they come in.

virtual pipes are just allowing me to move the data around

They allow us to make more complex routings within Midihub:

  • “standard” Inputs and Outputs let us make simple 1 → 1 connections

    2plines

  • and even “1 → many” & “many → 1” connections…

    4plines

    (…as long as we’re careful with our filters to avoid mis-routing/duplicate messages)

  • but Virtual Inputs and Outputs let us do things we can’t otherwise…

    process then split

    …like taking the results of the Dispatcher line then splitting the messages off to different outputs

  • or combining different inputs then processing more…

    merge then process

    …like merging notes from A & Clocks from B to then use in a Delay or Arp

  • and of course, once we have this idea of internal connections we can build on it:

    more complex


    PS. Remember that each pipeline starting with the same input (say MIDI A or Virtual F) will receive the same message flow. Each pipeline can then create different outputs depending on the pipes in a given line

2 Likes

I will do this! Starting to make better sense! Can’t thank you enough resonotter!!!

1 Like

I think I may have it.

I went ahead and created both paths for my Juno’s and my M-1000’s.









I’m going to have to take it into the studio and do some experimentation to see if it works. Please check out my attached preset and see if you see anything I screwed up.

polychain_preset.mhp (534 Bytes)

It works. :smiley: I even managed to merge sysex from a Juno hardware editor box into both streams of notes. So I got a for real 12-voice Juno poly with nearly all controls on sliders. My goodness.

2 Likes

Oh my! :partying_face:

There is something very cool about one little grey box bringing all this 1980’s synth goodness together.

If you’ve got the video chops, I’ll bet @Blokas (@Giedrius & @Pranciskus) would love to see a YT/Vimeo of it all in action!




PS. haven’t looked at your preset yet, but all looks good from the screenshots.
EDIT: checked: All good.
(reckon you can tick that Solved box!)

2 Likes

Sysex edit data, and poly chain separated notes to alpha juno1 and alpha juno2.

Had to parse the notes with Blokas midi hub to two separate outs. Thru 2x the sysex data from the editor. Merge the two independent streams of sysex and note data for each Juno. Really need a diagram:

-Blokas out 1 even notes output A
-Blokas out 2 odd notes output B
-Juno sysex editor box - Anatek thru 2x
-Anatek Merger 1 - sysex data thru 1 and Blokas even notes TO Alpha Juno 1
-Anatek Merge 2 - sysex data thru 2 and Blokas odd notes TO Alpha Juno 2

The result? A 12-voice alpha Juno with full hardware editing controls in real time.

But!!! Now that I have slept on it…I think there’s a cleaner way.

I dunno how to do it on midihub editor yet but I think I could push the sysex from my Juno editor box into a spare input on the midihub. Then I think I could merge that data into both note stream outputs to each Juno. Hmmmm….need to look at the pipelines and see what could be done. Because right now I’m using an Anatek pocket thru on the output of my Juno editor and TWO Anatek pocket mergers for each Juno to merge the midihub notes with the sysex. If I did everything on midihub I could drastically simplify it.

Say I had sysex coming from my Juno editor box into midihub input C and want it to also come out output A and output B with the parsed notes.

Say I had sysex coming from my Oberheim editor box into midihub input D and want it to also come out output C and output D with the parsed notes.

Would this accomplish that? Maybe? Need to test it.

1 Like

TOTALLY WORKED.

Now no additional Anatek boxes needed.

Notes come in. Sysex comes in. Notes are parsed to both synths and merged with sysex.

Elegant!!!

1 Like

Here’s a video of it in action and a clunky explanation of what’s going on.

2 Likes