Midi Filter/Routing with different interfaces

Hy,

I´m new to Zynthian, and wow its a great project with so much features. Thanks to all.

My question:

I have 2 Keyboard (maybe 3 in future), which all can only send on midi channel 1. The Keyboards are connected via USB (either direct or via USB Midi Cable), so I have a different port for each keyboard.
Is it possible to filter midi events on a specified port or can I route the signals from a port to a other midi channel and the signals from a different port to another channel.

Thanks, Andy

It’s not available using the current filter ruleset that I can see, but it’s not beyond the bounds of possibility. Add a feature request! https://github.com/zynthian/zynthian-issue-tracking

If you let us know the models of the keyboard controllers maybe we can help find a way of manipulating the MIDI output. It feels unlikey that you’d have potentially three USB MIDI capable boards that you can’t change the output channel on at all.

Thanks for the reply. I will make a feature request.
The two Keyboards are Yamaha PSR E423. I havn´t found any way for changing the Midi Out Channel, but maybe I havn´t seen the correct menu settings.
If I could change the Midi channel (via Filter/Routing) I can assign different Voices to the Keyboards.

Thanks for help, Andy

I’ve had a look at the Manual and MIDI Referenceand I think you’re right.

Thanks very much for the help.

I used to have what could be considered a sister model Yamaha keyboard, and yeah despite an otherwise decent MIDI implementation, the keyboard transmit channel can’t be changed. Which is exactly the kind of thing you’d hope a thing like Zynthian could handle and it’s a bit disappointing when it can’t, especially since the underlying OS can, it’s a limit caused by the Zynthian layer.

Port-level filtering and in particular, routing is something I’m missing too. For the record / to support the cause of maybe some day adding such capability to Zynthian, my use-cases are:

  • M-Audio Code controllers expose no less than four virtual USB ports from one physical USB, on top of the DIN connectors. The channels of “normal” Note and CC messages (on DIN and USB 1) can be configured, but then it sends “other stuff” like transport controls via Mackie / HUI messages on the other USB ports, and those are annoyingly always on channel 1. I can work around it to a degree by moving the note/cc channel elsewhere etc but that causes other unwanted artifacts in the setup.
  • MidiHub is a cool little MIDI processor/router box, but sadly lacks USB Host support, so in order to take advantage of its four virtual USB ports you need an USB Host for connecting the dots, so to speak. As there’s also an ARM version of the MidiHub editor software, Zynthian seems like the absolutely perfect pair for it… except for the lack of port-level routing.

It’d be really, really nice if Zynthian supported arbitrary MIDI routing on port level. Heck, if it only remembered and automatically re-established jack-level MIDI connections made outside the UI, it would go a long long way.

Steady on, you’re making sound like there’s been some executive decision on not allowing manually routed connections and we’ve collectively decided we’re never going to do such a thing.

Let’s not forget there is single channel mode for people who are not able to change the transmit channel, and that has worked brilliantly for people who have one fixed channel output keyboard.

We’ve often talked about manual routing but haven’t really gone down the road yet because

  • A: It would add complexity to the UI for everyone, we need a way of accommodating users like @orcas.cc without losing the simplicity of “plug-it-in-and-it-routes” for everyone else.
  • 2: Some bugger has to sit down and code that stuff, git merge requests are welcome. Even I’ve had some accepted.
  • :face_with_monocle:: We didn’t have @orcas.cc join us until now.

This is still a community project.

Oh, apologies if it read like that to you. I’m well aware of the situation (complicating UI, somebody needing to figure it all out and actually implement etc), just thought to share my cases, which seemed like, hmm, missed opportunities for a device “advertised” as a MIDI router among many other things.

I’ve been poking around with various behind-the-scenes solutions myself, including various existing OSS tools and custom solutions ranging from a Python script to a Teensy project to deal with the whole USB host/routing business, but it keeps falling behind something else in my priority table. Doing something in the Zynthian layer would require a second Zynthian as a development box and finding time to familiarize with all that, so more time/money priority issues. And if I don’t find it enough of a priority for myself, why should somebody else?

1 Like

Indeed, this is an request that requires dedication from someone to design and implement a solution acceptable to the majority of users.

I see a couple of high-level use cases which may be considered:

  1. A user wants the Zynthian to process MIDI based on the device type so that every time, the Zynthian routes and filters traffic from each, unique device type consistently.

  2. A user wants the Zynthian to process MIDI based on what USB port it is connected to so that they may plug in their devices as they wish to use them, even if the devices are the same type hence undistinguishable by Zynthian. This is similar to the OP.

In reality we may wish to have some combination of these and most users just want the current behaviour.

This is all possible and may become simpler to implement after some form of manual input routing were added.

I think most of us would welcome such an enhancement but would hazard a guess that few have the skills and time to implement in the short term.