Sending MIDI on track change (new Midi Remote)

I use an external device to control expression maps, and it needs to know when different tracks are selected to know which articulations to display.

With the old Generic Remote feature, each time a track was selected I used to be able to intercept a message from the remote in the MIDI send, assign my own value for each track, and send that out of a different MIDI port (to the external device).

I spent some time with the new Midi Remote, and I’m not finding a good way to implement that. I think it may be possible to get the raw track/channel number, but that doesn’t work for my use case, as adding/removing/importing tracks would completely break everything. I need some way to manually set a value for each track.

Part of the problem is that data sent from the Midi Remote is not available for filtering/transform in the MIDI send, while with the old generic remote you could intercept a message there. I understand if it’s not practical for the new Remote to work that way, but some way to achieve the same result with the new system would be nice.

The only workaround that I have found is using per-track PAN and/or VOLUME values to act as an ad-hoc “expression map ID” for the remote device. That’s not ideal as I then have to disable sending PAN/VOLUME to that actual instrument.

I’ve been through the Remote API reference documentation in detail and not seen anything else that could work.

Hi, while the ability to get the unique ID for each track has been already requested, and though I’m pretty sure this will be implemented in the near future, for now a workaround I would suggest is to append a unique string to the tracks’ names, by using a PLE like this one:

We obviously have to re-trigger this one, whenever we insert new tracks, and also the uniqueness will fail in the case that the name of the new track is the very same with the one of another track added in the same date+time (i.e. in the same minute) just some seconds ago, i.e. not in the very same PLE execution cycle.

Now, whenever the selected tracks function is triggered, we can treat these names accordingly in the mOnTitleChange event of the page.mHostAccess.mTrackSelection object.

Thanks! That’s an interesting method that had not occurred to me.

Also, good to hear that this has already been talked about, and a simpler method may be in the works.