======QJackCtl====== [[http://qjackctl.sourceforge.net|QJackCtl]] is the way that most people experience JACK for the first time, and for some people, it's the //only// way they experience JACK. Broadly speaking, either [[patchage|Patchage]] or QJackCtl are essential if you are using JACK; they are [two popular, but not the only] front-ends of the ''jackd'' process. ===== Strengths [Weaknesses] ===== **Intuitive** QJackCtl is a point-and-click 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. **Structured** Through the use of tabs, QJackCtl makes it very clear what devices can communicate directly with other devices. That is, there is clearly no way to connect an ALSA MIDI device to a JACK MIDI device, because they are in separate tabs. ===== Weaknesses [Strengths] ===== **Segmented** Since QJackCtl uses tabs to divide the different subsystems (ALSA, JACK, and seq), it is not obvious how MIDI signals from one system reach the other. This could be confusing to people who are still learning JACK. **Cluttered** While some find Qtractor's tabbed interface liberating and clear, others find it confusing and inconvenient. The virtual cables between devices are not drag-and-drop, so connecting and disconnecting often takes several clicks. =====Install===== Install QJackCtl from [[http://slackbuilds.org]]. =====Usage===== Read the [[jack|JACK]] section to learn more about JACK and what options are available for its configuration. Launch Qtractor from the **K Menu** or from a terminal: $ qjackctl& QJackCtl starts in a non-active state. To start a JACK session, press the **Start** button. Once started, click the **Connect** button to see connectable devices. If you're like most people, you'll intuitively //want// to call this a "patchbay" but QJackCtl uses that term for an entirely different purpose (saved connection states) so connectable devices are viewed and manipulated in the **Connect** window. There are three tabs in the **Connect** window: [JACK] Audio, [JACK] MIDI, and ALSA [MIDI]. QJackCtl creates entries in each tab for every port on every JACK device you have running. This means that if you are using ''seq'' as your MIDI sequencer, then MIDI ports appear in //both// the [JACK] MIDI and the ALSA tabs. To connect two devices, click on one device in the left column and another in the right column. Right-click on either of the devices and select **Connect** (or press ''alt'' ''c''). The ''seq'' driver (which you should be using) invisibly bridges the [JACK] MIDI and the ALSA tabs. For instance, if you have a USB controller connected to your computer, then you should: - In the ALSA tab: connect the USB controller to System **MIDI Thru** - In the MIDI tab: connect the **System Capture** device to the device you want to control - In the Audio tab, so that you can hear the sound your instrument makes when you play the controller, connect the instrument you're playing to **System Playback**. [{{ qjackctl_audio.jpg | MIDI to MIDI, Audio to Audio. }}] To disconnect, right-click on either the sending or the receiving device and select **Disconnect**. =====Audio Connections===== 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 (soft synths, samplers, drum machines, a DAW with audio or synth plugins) should get plugged into the ''system playback'' entry. If you have two speakers on your desk, then the ports you want to plug into are probably ''1'' and ''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 entries get pulled from ''system playback'' and plugged first into an effects filter (reverb, EQ, delay, gate, and other things provided by [[jackapps|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. This can get a little confusing because it means plugging an instrument into an effect on one side, and then the effect on the other side to **System Playback**. In other words, even single devices, like an effects unit, can get split between two columns if that device has both input and output ports. [{{ qjackctl_fx.jpg | It's less complex than it looks. Yoshimi → PingPongPan → System Playback. }}] ==== MIDI Connections ==== 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|MIDI]] appendix. You should have launched ''jackd'' such that it uses the ''seq'' MIDI driver; for example: $ jackd -R -d alsa -X seq Or you launched JACK from within QJackCtl. QJackCtl, by default, uses ''~/.jackdrc'', if that file exists. If not, you can create one with your preferred JACK command in it. If you haven't got a favourite JACK command then you probably have not read Slackermedia's guide to [[jack|JACK]], or you did but it is not working as expected. Whatever the case, you can configure how JACK launches from the **Setup** button in QJackCtl. Most of the default settings are probably sensible, but make sure that the **MIDI Driver** field is set to ''seq''. With ''seq'', MIDI captured by your system is available throughout JACK. 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. [{{ qjackctl_set.jpg?666 | Use the MIDI driver ''seq'' to send MIDI through all relevant systems. }}] 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 ALSA tab into the **System MIDI Capture** entry in the MIDI tab. The catch is that the instruments must be told what MIDI channel they should listen to. This is not done in QJackCtl any more than you would define it with actual cables on hardware synths; you set the active MIDI channel in the instrument (synth, sampler, DAW plugin, etc) itself. For example, if you have two instances of [[synths|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|MIDI]] appendix for more information on MIDI in general. **See Also** \\ [[patchage|Patchage]] [[projectm|R]] [[start|S]] [[qtractor|Q]]