You are here

Channels in Qsynth

I have an Akai MPK-25 keyboard that have been wanting to try for some time. I'm using Qsynth with Qjactl on a Dell D630 in the current Ubunto Studio. I finally got it to work after figuring out the connections that needed to be made in Qjacktl. I have the general soundfont package that you listed. I understand how to assign each soundfont to a different channel. I'm not entirely clear on how the channels are used. In order to change soundfonts with my setup, I have to change the soundfont listed on channel 1. My keyboard is listed as using MIDI channel 1. Is that why it uses the soundfont on channel 1? If I changed to a different MIDI channel, would Qsynth use the soundfont for that channel?


Bill Giles

rncbc's picture

maybe yes to all accounts :)
Dating from the late previous century;) the soundfont specification is a multi-timbral one which means that you can set or map presets to MIDI channels on a one-to-one basis; each preset, patch or or instrument if you wish to call that either way, is addressed by its corresponding MIDI channel, address or slot (1-16); each slot or preset, mapped on a particular MIDI channel there is, may be changed on the wire by a MIDI program_change message (PC#) or via Qsynth's GUI Channels > Edit... (button or right-click context menu).
From your MPK25 (which btw. I do also have one specimen:)) you can either change the current MIDI channel setting or else try the "Program Change" command to, yes, change the instrument preset/patch which is to be active on the MIDI channel setting there is.

Hello Rui, would you have instructions (or even a picture) for creating
16 MIDI channels from a single MIDI cable going into
The computer, through Qjackctl and then 16 Qsynth Engines?

Each Qsynth Engine to respond to a single Midi channel.

rncbc's picture


that's an all inclusive on the MIDI concept there is! you don't need to create any MIDI channels in any way: it's all there for granted!

each and any MIDI device, port or cable, is inherently conveying all and any of the 16 MIDI channels, because these are not physical rather just logical entities: a MIDI channel is a number (1, 2, ..., 16) or address that is stamped to a MIDI message at the transmitter device (eg. a MIDI keyboard controller) and eventually read on a receiver device (eg. qsynth/fluidsynth); it is on the receiver port that the MIDI message is possibly filtered and routed accordingly to its MIDI channel address (eg. qsynth/fluidsynth respective 1-16 instrument slot or preset if any).


Yes Rui, but how do I physically achieve this in Qsynth and Qjackctl?
I am just using two engines at the moment and they are not separating the Midi.
If there was a button on each Qsynth engine that said MIDI input CH= *, then I could
get it.
Could you give me a concrete example of just say three engines and how to do
the complex routing through Qjackctl and to Qsynth?
Thanks for replying BTW :)

OK, I have setup Qjackctl, assigned sound card and set
MIDI driver to seq, two SF2 files, both Midi channel 1 and two play together
on both engines. Here's a pic which might help.

rncbc's picture

apologies if I wasn't clear enough:

- each Qsynth engine presents you with a separate and unique MIDI input port;
- you don't connect MIDI channels, you do connect MIDI ports instead;
- each MIDI port transmits or receives messages for all and any of the 16 MIDI channels;
- remember: a MIDI channel is just a number or tag on a MIDI message that is transmitted from an output port trough an input port;
- each MIDI channel is logically auto-assigned to each Qsynth engine instrument slot resp. on a one-to-one basis. (exactly 16 slots as seen in Qsynth > Channels window, one for each MIDI channel number resp.);

you just have to connect (possibly via QjackCtl) the MIDI device or application that emits or produces MIDI notes or messages (as source) to the desired Qsynth engine MIDI input port (as target); the soundfont instrument that will be played back is exactly the one that is the respective instrument slot assigned to MIDI channel being transmitted.

you may tell which MIDI channel that is being transmitted only at the source device or appliance (nb. it it's a MIDI keyboard controller for instance then it's usually configured to emit on MIDI channel 1 as default but can be anything else if setup properly).


ps. took the chance to annotate on your screenshot. hth. as follows:

Thanks for annotating.
It seems as though if the 24: USB Midi Cable could have some way of making virtual ports with one midi channel going into each Qsynth Engine instance,
that would achieve the result. When expanded, it just has one socket.
Interestingly, your Qsampler app does it perfectly (midi channel per channel slot) but Prg change is non functional on that. Which is a bummer!
Thanks for your attention Rui.

Just been reading about the detailed explations figuratively explained as well. Thank you for all the "Cues" ;-) Forgive me if I'm asking a silly question. I've read a lot of the Qtractor documentation and about using it alongside QSynth, QJackCTL. I've managed to educate myself about midi channels, ports, trigerring the right channel and routing the channel midi data to the right assigned channel of Qsynth.
Question 1: Is there a way Qsynth can give sepeate outputs for the the synthesised audio? All my audio buses are triggered on my return input into Qtractor, hence forcing me to record the audio generated by Qsynth separately, one track at a time. The objective here vs creating three separate sound engines is to save on CPU resources by utilizing all the sounds generated from one sound engine, two sound fonts and channel assignment. Note: This is not for recordings, its for playing back recorded midi from Qsynth ( external sound engine) from Qtractor.

rncbc's picture

The best you can have is turning Qsynth > Setup > Audio > Multiple JACK Outputs on and up with Audio Channels and/or Audio Groups... but I really can't tell much a thing on that cause I've never use it myself... note all of that are in fact FluidSynth provided options, not quite a Qsynth specific feature at all.


Add new comment