Using A MIDI Router To Play Simultaneous Instruments

Have you ever been inspired by the sound of many different instruments in a symphony orchestra playing a tune in unison? The theme from the movie Star Wars is like that.

Here's a quick sample you can listen to, by clicking the links below:

O Fortuna, from Carmina Burana, by Carl Orff

Mars, from The Planets, by Gustav Holtz

In the world of MIDI music, with synthesizers, it should be easy to play a tune using several different instrument sounds, simultaneously. Yet it turns out to be surprisingly hard to do, or even set up to do. I created jSynth to do that, but you can do it with just a MIDI router. But the MIDI router is easier to use, and can have less latency.

MIDI synthesizers allow up to 16 different instrument sounds to be played simultaneously, so why can't you hook up the KeyMusician Keyboard to play all 16 MIDI channels simultaneously? After all, you don't have to press the keys any harder to play 16 instruments, than to play one instrument.

In this article, we explain how to use a MIDI Router, taking the notes played on your keyboard, and sending them to whatever MIDI channels, on the MIDI synthesizer you choose. It also lets you easily specify what instrument sounds are used for those other instruments played simultaneously.

What kind of music can you play using this method? I provided the link below to let you listen to a piece I improvised, using the KeyMusician Keyboard, to play 5 instruments at the same time. It's like improvising with an entire symphony orchestra and choir!

In this piece, I work my way through the various performance panes, using Electric Piano, Distortion Guitar, Cello, Oboe, Aah-Choir, Flute, and Piano, all played with both hands on the melody section of the keyboard. Along with those main sounds, I simultaneously play Strings, Space Voice, Orchestral Pad, and Brass Section as background sounds.

Click the link below to listen, and see what you think.

Demo Improvisation, Using 5 Simultaneous Sounds

If you like what you heard, and would like to experiment playing choirs of instrument-sounds simultaneously, read on, as we show you how to do it, and even provide configuration files for doing it.

Layered Sounds, or Simultaneous Instrument Sounds

A layered sound is something like Piano/Strings, available on VST instruments, or high-end synthesizers. In the case of Piano/Strings, the main sound is Piano, but there is something like a string ensemble playing the same notes in the background. With the configurations supplied here, we can easily set up 4 different background instruments.

When you play only the Piano sound, the very high notes are not very useful, because they fade away quickly. But with the layered sound Piano/Strings, those ethereal high notes (though the Piano part of the sound fades quickly) are sustained by the Violin (Strings) sound in the background, so the very high notes become much more useful, and beautiful.

Though String Ensemble is a background sound commonly used, other sounds, such as Aah-Choir, Metal Pad, and Halo Pad also work well for this. This is just a suggestion – you can try anything you like.

You play layered or simultaneous sounds with the MIDI router, by first setting up (in less commonly-used MIDI channels, starting with channel 16, and working downward to channel 13), background-sound instruments, such as 48-Strings, 52-Ahh Choir (or 54-Synth Voice), 93-Metal Pad, or 94-Halo Pad.

With the configuration files provided (and described) here, the following performance panes are used for the background sounds:


You can configure whatever instruments you want in those four panes, and the Drums pane doesn't have to be drums, because we use MIDI channel 15 for it, and we clear its “Percussion” check-box.

Then, you select a primary instrument sound to play (such as Grand Piano), in the other performance panes, using a higher volume setting (so it stands out among the other sounds).

Connecting The KeyMusician Keyboard To The MIDI Router

Connecting the MIDI router depends on the operating system you use, and the MIDI router you use.

For this article, we're using “QMidiRoute” as the MIDI router, on Linux, and we're connecting qmidiroute the very same way we did in the article on Composite (Layered) Voices. If you've already set up your system as described in the Composite (Layered) Voices article, it's already set up for you, and you don't need to do anything more to connect it.

If not, click the link below to learn how to connect the qmidiroute router, on Linux:

Connecting The MIDI Router On Linux

Downloading The Configurations Supplied For The Article

For the QMidiRoute configuration, right-click on the link below, and choose “Save Link As” (or whatever your browser presents that's similar) in the pop-up menu. Save it in (or copy it to, after downloading), your home folder:

Ensemble.qmr

For the KeyMusician Keyboard configuration, right-click on the link below, and choose “Save Link As” (or whatever your browser presents that's similar) in the pop-up menu. Save it in (or copy it to, after downloading), the “KeyMusician-Keyboard” folder, of your home folder:

Ensemble-1.kmk

The KeyMusician Keyboard Configuration

Here is a screen-shot of the “F1 (Help/Setup)” pane:


Notice that the “Ensemble-1.kmk” configuration file is loaded (which you downloaded and copied to the “KeyMusician-Keyboard” folder of your home folder. The “MIDI Output To” drop-box specifies to connect it to Qsynth1, but you could connect it somewhere else, if desired.

The Foreground-Instrument Performance-Panes

Here are screen-shots of each of the foreground instrument performance-panes. Notice the MIDI channel each pane sends-on. Also, notice that the “ASSIGNABLE” slider is set to “101-Undefined1”. That is the control-code the MIDI router configuration expects to be used to control the relative loudness of the background voices, which lets you change their volume while playing the foreground voice. Also notice (near the lower right of the screen-shot) the instrument-sound used:























The above performance pane lets you play chords on the numeric keypad, and the chord notes will also be played on all of the background instruments. When you do this, you are actually playing 6 instruments simultaneously, since the chords MIDI channel is distinct from the other foreground panes. Since the background instruments have a sustained sound, using the piano sound for the chords gives the chords a crisp attack sound.

The Background-Instrument Performance-Panes

Here are screen-shots of each of the background instrument performance-panes. Notice the MIDI channel each pane sends-on. Also, notice that the “ASSIGNABLE” slider is set to “101-Undefined1”. That is the control-code the MIDI router configuration expects to be used to control the relative loudness of the background voices, which lets you change their volume while playing the foreground voice. The “Volume” and “Velocity” sliders are set softer than the (non-chord) foreground sounds, so the foreground sound stands-out from the background. Also notice (near the lower right of the screen-shot) the instrument-sound used:








Notice the “Percussion” check-box is clear, making it a melodic (not percussion) instrument. Also notice it doesn't use MIDI channel 10 (reserved for percussion). Also, the “Orchestral Pad” instrument is found in bank 8 (rather than bank 0).




The QMidiRoute Configuration

Each of the tabbed-panes configured for QMidiRoute are shown below, with a description of what each tab does:


This tab ensures that any MIDI messages not matched by the other tabs, are sent out on its “out 1” port.


All notes for MIDI channels 1 thru 8 are sent out to channel 13 of its “out 1” port.


All notes for MIDI channels 1 thru 8 are sent out to channel 14 of its “out 1” port.


All notes for MIDI channels 1 thru 8 are sent out to channel 15 of its “out 1” port.


All notes for MIDI channels 1 thru 8 are sent out to channel 16 of its “out 1” port.


All control 101 messages for MIDI channels 1 thru 16, are sent out as control 11 (Expression change) to channel 13 of its “out 1” port.


All control 101 messages for MIDI channels 1 thru 16, are sent out as control 11 (Expression change) to channel 14 of its “out 1” port.


All control 101 messages for MIDI channels 1 thru 16, are sent out as control 11 (Expression change) to channel 15 of its “out 1” port.


All control 101 messages for MIDI channels 1 thru 16, are sent out as control 11 (Expression change) to channel 16 of its “out 1” port.


All sustain-pedal control messages from MIDI channels 1 thru 8, are sent to channel 13 of its “out 1” port.


All sustain-pedal control messages from MIDI channels 1 thru 8, are sent to channel 14 of its “out 1” port.


All sustain-pedal control messages from MIDI channels 1 thru 8, are sent to channel 15 of its “out 1” port.


All sustain-pedal control messages from MIDI channels 1 thru 8, are sent to channel 16 of its “out 1” port.

Playing Simultaneous Voices

Here are the steps to get started:

  1. Run QJackCtl (JACK).

  2. Run Qsynth.

  3. Run QMidiRoute, and load the “Ensemble.qmr” configuration file into it (you might want to create a desktop launcher for doing that in one step).

  4. Run the KeyMusician Keyboard.

  5. Load the “Ensemble-1.kmk” configuration file into it.

  6. With QJackCtl, either make sure a patch-bay connecting the components is active, or click QJackCtl's “Connect” button, and connect the components you need.

  7. In the KeyMusician Keyboard, click on the “F9”, “F10”, “Drums”, and “F12” tabs (which will configure the background voices – if you neglect this step, it will sound strange when you start playing).

  8. Press the function-key for the desired foreground voice you want to play, and start playing. As you play, you can adjust the volume of the background voices using the up-arrow, or down-arrow keys.

Potential Problems

I hope this proves to be a useful tool for you in the world of MIDI music, and that it lets you experiment with some wonderful new sounds!

You can return to the index of newsletter articles by clicking below:

Index Of All Newsletter Articles