Patchage is a click-and-drag interface that mimics the intuitive act of plugging one device's output cable into another device's input port. It doesn't take an experienced sound engineer to understand that to hear a synth sound, you have to plug the synth into the speaker.
The Patchage interface combines all sound devices into one unified panel, and gives you plenty of space to arrange everything exactly as you please. Compared to more structured interfaces (like QJackCtl), this is a very flexible and malleable environment where everything is out where you can see it.
Since Patchage combines everything into one panel, it can be frustrating to find that a [red] ALSA device cannot be plugged into a [green] JACK device, and no [purple] MIDI device can be plugged into ALSA or JACK. There is no visual representation of how these disparate audio subsystems connect.
Connecting devices is as simple as a drag-and-drop, but disconnecting them requires a right-click and a contextual menu.
While some find Patchage's unified interface liberating and clear, others find it cluttered, messy, and confusing.
Install Patchage from http://slackbuilds.org or pre-compiled from studioware.org/packages/slackware"$ARCH"-XX.Y/audio/system/.
Launch Patchage from the K Menu or from a terminal:
Patchage starts in a disconnected state. To connect to a running JACK session, use the System menu → Connect to JACK.
Patchage's environment is determined by the running audio systems on your computer. If you have JACK running, then when you connect to it, Patchage will create nodes for each JACK port on each JACK device you have configured. This means that if you are using
seq as your MIDI sequencer, then JACK ports appear with both MIDI and JACK Audio ports available to you as route-able objects.
The different protocols for MIDI are colour coded:
- Audio ports are green
- JACK MIDI ports are red
- ALSA MIDI ports are purple
If you are colour-blind, you can re-assign colours by clicking on the boxes next to their labels in the top menu bar.
Each node has significant alignment: a port meeting the left edge of a node is an input port, and a port meeting the right edge of a node is an output port. You cannot connect output to output or input to input.
You cannot connect two ports of differing colour categories, because those two systems do not connect at a lower level. They are presented in one screen because you may need to manipulate them in tandem, but never together.
To connect two devices, just click and drag from one to another. As you drag, a “cable” follows your mouse to the destination port. As long as you drag to a valid port, the cable “plugs in” to the device and the objects are routed.
To disconnect, right-click on either the sender or the receiver and select Disconnect.
If you are new to audio production, you might wonder how you know what should get connected to what. Ultimately, that is entirely up to you, but a common starting point is that all nodes that make sounds (a DAW with synth plugins, soft synths, samplers, drum machines) should get plugged into the
system playback node. If you have two speakers on your desk, then the ports you want to plug into are probably
2. If you aren't sending your audio output to a speaker, then you won't be able to hear it.
A common variation on this is that certain audio nodes get pulled from
system playback and plugged first into an effects filter (reverb, EQ, delay, gate, and other things provided by Jack Rack or calf), and then the output of that effect gets plugged into
system playback. If you want to avoid using stand-alone racks, use effects within your DAW or synth.
MIDI, of course, does not send audio signals at all, it sends digital signals which trigger [usually] audio.
To get the most out of MIDI, read all about it in the MIDI appendix.
You should have launched
jackd such that it uses the
seq MIDI driver; for example:
$ jackd -R -d alsa -X seq
seq, MIDI captured by your system is available throughout JACK.
If you are using a MIDI controller connected to your computer (that is, not a virtual keyboard, but a physical device on your desk) then you must connect the MIDI data being delivered by that controller to the MIDI Thru port of your system.
Do this by dragging-and-dropping a virtual cable from the (purple) output of your MIDI controller to the (purple) input of the MIDI Thru node.
This connection ensures that MIDI signals from your controller are echoed into your JACK system by way of the
seq driver, which bridges ALSA MIDI (the subsystem receiving MIDI signals through USB) and JACK MIDI.
On real world hardware, it would be expensive and bulky to have a dozen MIDI Out ports, so devices are daisy-chained from MIDI Thru ports to MIDI In ports. In the virtual MIDI world, there is no such limitation, so you can run as many cables as you want from your MIDI device (your controller and/or the DAW or sequencer you are using to trigger MIDI events) to any number of virtual devices.
The source of MIDI events for your controller is bridged from the (purple) ALSA Thru port into your System Capture node (you can think of it as a Line In or Mic In, but for MIDI), so MIDI events are sent from the (red) output port of System Capture. This can be sent to any other node with a (red) MIDI In port.
JACK only spawns one MIDI port for each device because one MIDI port is all any device needs to receive any MIDI channel it is listening for. JACK-aware MIDI ports are red by default and exist in a node named for the process to which they belong. These are the MIDI ports you want to use.
The routing is relatively simple from a high level application like Patchage; connect a MIDI source (like your USB controller, or a DAW or sequencer into which you have written MIDI data in, for instance, the piano roll editor) to something that can be triggered by MIDI (such as a synth or sampler). Then route the audio output of that instrument to your System Playback port. Play a sequence and you should hear the instruments playing along.
The catch is that the instruments must be told what MIDI channel they should listen to. This is not done in Patchage, but in the instrument (synth, sampler, DAW plugin, etc) itself.
For example, if you have two instances of Yoshimi open, each receiving MIDI data from your controller or from your DAW, then both of them are probably set to MIDI channel 1. This is probably not what you want, unless you really do want the two to play in unison. Setting one to Channel 1 and the other to Channel 2, for example, will split their response to those two signals, and play separate parts (assuming you have set your DAW to broadcast Channels 1 and 2).
See the documentation for the application of your choice here on Slackermedia to learn how to set which MIDI channel is broadcast and/or responded to when received.
Read the MIDI appendix for more information on MIDI in general.