Expression maps won't send channel data through MIDI sends?

I’m trying to use a MIDI track to send MIDI to three other instruments tracks.

This is the main MIDI track setup:

And the MIDI sends section:

I have an expression map set up so that the three different articulations I’m using (legato, staccato and spiccato) are sent on differnet MIDI channels (1,2,3 respectively). Then I have the main output of the MIDI track set to the legato instrument track, send 1 set to the staccato instrument track, and send 2 the spiccato.

The problem is, it doesn’t seem like the expression maps make any difference when using MIDI sends. The MIDI data is constantly outputted from the track on whatever channel you select the send to be - even if I have a note set to output on channel 1 (legato) via the expression map on the MIDI track data, it still outputs on all sends (which are the other articulations).

Interestingly enough, this doesn’t happen on the main MIDI output. Only the MIDI sends.

I tried using a virtual MIDI cable with an input transformer on the receiving instrument tracks, but this created a whole world of latency issues which does not work for me.

Is there a solution to this? My guess is that the MIDI send ‘overrides’ any track-level channel info, and just outputs all MIDI on whatever channel you specify in that particular send.
How do I send MIDI via the MIDI sends only whenever the expression map specifies that send’s articulation/channel?

Hard to be certain based on a couple of pics, but I think you want to change the MIDI Channel settings on the Tracks from a number to “Any”

A lot of folks think a Track’s Channel setting determines what MIDI Channel a track is ‘listening’ to, but it’s not. That setting determines what Channel the Track uses to play back on - independent of whatever Channels the MIDI Data is recorded with. In order to preserve the MIDI Channels on playback set it to “Any” instead. On your Violins I Track your Expression Map is doing all the Channel changes you want but then after that the Inspector setting changes them all to Channel 1.

Gave that a go. Still doesn’t seem to change anything.

This is the track setup for clarification:

Each instrument track is the respective articulation (which then has their own group master tracks).

Currently, each articulation set up on different channels on the expression map is still playing for all instrument tracks.

I have an input transformer set up on each instrument track to discard the irrelevant channels. For example, since staccato is set up as channel 2 on the expression map, this is the subsequent tracks input transformer:

However this doesn’t seem to be filtering out the unwanted channels. They’re still somehow getting through even when the expression map is sending MIDI on channel 1.

At this point I’d probably remove the Expression Map entirely from the situation until you figure out whats happening with the Channel Numbers when using MIDI Sends. Instead build a MIDI Test Part where you have known Notes on known Channels and start experimenting. Stick MIDI Monitors everywhere and test different scenarios step by step - e.g. what happens to a D4 on Channel 2 from Send 3.

I wonder if the MIDI Sends go to a Track post Input Transformer.

This is what I’m thinking, which if so, is really annoying. Based on my testing I just did with an empty project, this would support that theory.

This is the test project I just made:

If I set the main output to the MIDI track as ‘not connected’, and use the MIDI sends to send the MIDI data to ‘Instrument 1’ & ‘Instrument 2’, when armed, the both play simultaneously. Which should be expected.

However, if I add an input transformer onto both instrument tracks, setting one to filter out anything other than channel 1, and the other to filter out anything but channel 2, and then send MIDI on those channels one at a time… they still are both picking up both channels. So i’m guessing for some reason MIDI sends data comes in after the input transformer.

So now i’m back at square one and no idea how i’m gonna get this to work the way I want.

Finally found a way to make it work.

Since I’m using Kontakt as the VST instrument, you can specify the channel each patch is ‘listening’ to. So I just set all the patches for each instrument track/articulation to the respective MIDI channels that the expression map is outputting.

To make this work correctly, the channel output on the MIDI sends also has to be set to ‘any’. I think this is what we missed earlier. That way the expression map can send MIDI on all necessary channels, and when the MIDI data comes into Kontakt player, only the instruments set to pickup the specific channel will receive that data.

Glad you sorted it out. But if you are using this approach, then there is no need to use the MIDI Track or MIDI Sends at all. You can do it on a single Instrument Track for up to 16 different Channels (although for computer performance reasons it’s better to spread the load around a bit).

Yes, that’s primarily why I have it all split up - I have 7+ libraries worth of articualtions on each Kontakt instance, and I don’t always use those articulations, so I like to be able to enable/disable them on a per-project basis depending on whether I need them or not. Saves a lot of CPU and memory that way