Multiple instruments + midi file read - basic setup - tricky config?

Hi Zynthian community, while waiting for my full Zynthian kit to arrive, I started to play a bit with a raspberry only setup (internal headphones + hdmi screen). Please note that I am a Linux confirmed user/admin.

I’m trying to setup something for playing at 2 persons:

  • 1 drumpad midi
  • 1 clavier midi

Both devices have same midi channel (1).

I managed to map each instrument to a specific synth thanks to mod-ui where the routing can be done at midi input port level.

Afterwhile I was wanting to play a midi file that would be used to train alone (battery person not there or pianist not there). I have found how to upload the midi files thanks to the web interface under library -> capture.

But when I read the file with zynthian-ui, I need to connect another port from mod-ui to route the output (Hardware Zynthian main out). But then I have also all the instruments inputs that get routed through this one… So not good for me.

Basically I want to do something this that can be configured/changed by a non advanced user through zynthian-ui:

  • conf 1: human duo
  • conf 2: midi file + 1 instrument

It seems to me to be quite a basic need but seems hard to setup. Do you have any solution for me that could be switched by any human from zynthian-ui?

I know how to develop so if needed to do something for the project I would be pleased to contribute.

I was expecting in the basic zynthian-ui something not only related to midi channels but also to midi inputs routing (as I do on a computer thanks to catia software). Also I was expecting a midi player layer that could be mapped to a specific instrument.

Maybe I missed the point of Zynthian design? I don’t know if I’m clear with what I wish to do? Any pointer to what has to be done to make this easy to do for non technical people??

I can do this in using catia as I get each individual inputs and I can put them in the synth I want but I would really like to be able to do this with zynthian-ui…

Hi @zguig . Welcome to the community. I am sure you will find a friendly and helpful bunch of guys here.

Zynthian uses the concept of snapshots to allow different configurations to be saved and reloaded. You could try to save your modui configuration as a snapshot and then set up a normal session (without using modui) which might allow you to do the other workflow. Save that as another snapshot then recall the snapshot to suit the workflow of the day.

I haven’t fully followed all of your requirement but try this out and let us know what issues you have with it.

Cheers

Hi @riban, thanks for your inputs!

I have tried these snapshots, but sadly they are only saving the configuration done through Zynthian inputs. When I manually “hack” the jack routing matrix to be able to achieve my result and that I save this, the snapshot is then unusable and crash when I try to load it.
Another point that I have seen is that I never managed to have different sounds for different inputs. I have seen this thread a bit related: How to play 2 different synths simultaneously

But there seems to be no native way to play on jack routing. From what I have understood yet, Zynthian takes all inputs and put them in the ZynMidiRouter, and might only be able to produce different sound based on different midi inputs channels.

I will post after a picture of how I have modelized a generic setup to discuss about its feasibility / ways to achieve it / develop Zynthian to be able to do so through its UI.

But again maybe there are concepts / designs considerations that I might have not understood that may solve my needs? :slight_smile:

The Zynthian tries to simplify workflow for normal users by automatically routing many signals. There is the ability to perform some manual routing from within the Zynthian user interface and such routing is saved as part of the snapshot. Manual routing is done by bold press of SELECT after highlighting a layer which shows a context menu including routing options.

Audio or MIDI layers can be added which each have their own signal paths and routing options. MIDI routing is currently less capable than audio routing but I believe there is work ongoing to improve it. Check out what is currently implemented.

Under the bonnet, JACK allows pretty much limitless routing options but presenting that to a user in a sufficiently simply presentation within the constraints of the Zynthian UI may prove challenging but much work was done recently to provide much of that.

I couldn’t remember off the top of my head where we were with saving MOD-UI configs. I thought they should be saved in snapshots. If not, report a bug in github.

Ensure you read the user guide fully. It is quite well written and covers core functions and methodologies.

Your picture does look pretty similar to the Zynthian implementation so you can probably achieve (most of) what you want out of the box.

You can use Zynthian as a multitimbral device, i.e. each MIDI channel may play a different layer / engine. There was recently some discussion on how we handle different physical devices that are both using the same MIDI channel. I don’t think we yet have a solution for that so if possible, configure each MIDI input device to use a different MIDI channel. There are some possible workarounds, e.g. if the devices do not overlap MIDI notes then using keyboard split may help.

I would add to @riban analysis that USB implementation and selection of sources is an area of zynth development, especially audio, that is developed almost by stealth.
The original zynthian take was to treat USB audio as a little bit second rate. The kit included an excellent DtoA so USB was only really used as a test mechanism. It was, for a while, the only way of getting audio in, but even this was used by people and quickly became a must have ( I record stuff with a USB Yeti Mic which makes for a very convenient little rig).
Quite how we allocate USB within the zynthian world as multiple devices start to appear and switching decisions need to be made is something that probably requires some work, but these are success problems so we should be grateful!

The truth is we can do pretty much anything, and if we can lay such developments down so that ‘normal’ users ( We’ve got dungeons full of them … :thinking:) can use the research then so much the better.

I will of course lay in wait for a :face_with_monocle: at the end of all this. . .

Hi @zguig!

MIDI Device filtering is on my “desk” as a high priority task, so you should expect having this implemented in the next weeks, i hope :wink:

My proposal is adding a new “MIDI input devices” layer option on the Zynthian-UI. By default, a new layer have “checked” all input devices, but you can uncheck/check from this new submenu. Of course, this selection would be saved on snapshots. Easy and zynthianic :zynlogo:

Until this is implemented, i would suggest trying to change the MIDI channel of some of your MIDI input devices. Most of devices allow to change the MIDI channel.

Regards!

1 Like

Excellent approach. Can we have a hook in the driver to run so we code on start up to set some devices up? (see duo piano discussion for example)

I see some challenges…

Will the config use device name?
What if two devices have identical identifiers?
What if a device is temporarily not available?

I was looking at udev to create unique, consistent names for devices but you may wish that USB port 1 always does something or you may wish that USB device always does something no matter which port it is plugged to. Complex user workflows should be avoided.

If you like a device there is an increased possibility you might have more than one of them.

I’d push these definition right back to existing mechanisms. Having identifiers for a single encoder & switch is a recognizable Zynthian object and four of them constitute a full if minimal interface.

Trying to keep track of all the possible official Manufacturer MIDI Ids seems doomed to failure, so perhaps we are better to make the generation of an appropriate file easy and viciously parsed to ensure you get it right or don’t do it at all.

Could it ultimately be put into an LV2 wrapper & generalized to allow some standardization of approach ?

We would not require a database of IDs. We use the IDs that are detected and store those. We don’t really need to know what they are, just that they are uniquely identifiable.

Agreed, but if we could get a db of them It might significantly ease the process of distributing the details for others . . .

A db in the zynthian name space might build in an interesting fashion . .

Thanks for all these replies.

@riban:

  • I haden’t found before the “Manual routing is done by bold press of SELECT”. With my setup, I had to press shift and enter (keyboard mapping yet). Thanks for pointing this out, it was not an interaction I had found before and I think this will open me to a lot of options I hadn’t found yet :slight_smile:
  • MOD-UI conf is properly saved in the snapshot, no bug to open, I had manually changed jack routing matrix with third party software like Qjackctrl (Catia) so for me there is no link with Zynthian and a ugly hack only. The only small point I might have to say about MOD-UI is that it is losing my inputs usb mapping (the drum input midi is always going to power save mode)

@riban and @jofemodo:

  • I don’t think changing the midi channel from the midi controller is an option (M-Audio Hammer 88 keypad and Alexis Turbo Drum module). By the way, this Hammer 88 keyboard is so good for an old pianist like I am, touch sensitivity is clearly like an analog piano!

@wyleu, @riban and @jofemodo:

  • Regarding the evolution of Zynthian, I would be really pleased to contribute to this functionality. I did some drawing again to suggest a simple UI design that could cope with the generic approach and be quite flexible for discussion
  • I just received few minuts ago my Zynthian kit, so I will have the good HW reference, thanks a lot @jofemodo!!
  • I will also have a look to the code itself to get familiar with software architecture

1 Like

1 Like

Have you tried with the editor app? This keyboard allows to create 4 key-zones and assign them to different MIDI channels, so i’m pretty sure you can set the MIDI channel for the zone “0”.

This module sends MIDI on channel 10, so probably you have your zynthian on “stage mode”. Please, navigate to the Admin menu and “uncheck” the “stage mode”.

After that, you should have your Hammer 88 on channel 1 and the turbo drum on channel 10.

Once you have your devices on different MIDI channels, you could use the “MIDI channel map”, if still needed, for remapping the notes from the MIDI file player to the right ones.

Regards,

Well seen, thanks a lot !! I was effectively not in multi-timbral mode based on this I can simply configure my 2 devices with different sounds. Still have to dig a bit with the midi file player and it might fit totally the setup I was expecting to do for beginning!

Just finished to assemble the Zynthian kit, congratulations for the work done and the final quality, it is really impressive! I just had a small doubt when pluging the Hifi module based on the pictures and because I haven’t read the note after, so I was close to take my soldering stuff and plug back RCA and jack connectors lol…

Software run much better with it than when using a nude raspberry with HDMI external screen and keyboard, I had lots of screens restart, which for the time being I haven’t see on the Zynthian v4!

1 Like

Nice … i hope you enjoy a lot with your new toy :wink:
BTW, i suppose you already know what is the price you have to pay for our precious advice …
:face_with_monocle:

I have a similar problem. I have two keyboards, a digital piano and a midi controller.

The digital piano is allways in channel 1. The midi controller have the option to change channel but is very obscure.

In my old days I made a Python Script that allows me to make quick changes in Jack connections. But that days are in a distant past. And I don’t really think that my script is very useful for other people besides me.

I’m looking for a way to connect several midi hardwares to diferent synth layers and quickly change all the conections at the same time. Maybe, I only need more time to discover all the options on zynthian.

My main goal is to make covers of 70’s rock keyboard players like Hearbie Hancock, Joe Zawinul and Keith Emerson. I don’t know if it is posible only with two keyboards and one zynthian.

I strongly suggest you to configure your keyboards on different MIDI channels. Currently is the way to go. You only have to do it once … and it will work forever.

Nice! I think 2 keyboards and 1 zynthian is a good enough setup for that. Having a few CC knobs and PC button/PADs on some of the keyboards could be useful too.
In fact, using the “Stage Mode” and “ZS3” (aka subsnapshots), a single keyboard could be enough:

https://wiki.zynthian.org/index.php/Zynthian_UI_Users_Guide#MIDI_Program_Change_.26_ZS3_.28SubSnapShots.29

Regards,

1 Like