layout: default
title: MIDI on Linux
---
+
+The right approach for using MIDI on Linux depends on which version of
+JACK you use. The world divides into:
+
+<dl>
+<dt>Systems using JACK 1, versions 0.124 or later</dt>
+<dd>On these systems, just start JACK with
+ the <code>-X alsa_midi</code> server argument. To support legacy control
+ applications, you can also use the -X seq argument to the ALSA
+ backend of JACK and get the exact same results.</dd>
+<dt>All others</dt>
+<dd>Use a2jmidid to act as a bridge between ALSA MIDI and JACK. Do
+ not use the -X seq or -X raw arguments - the timing and performance
+ of these options is not acceptable.
+</dd>
+</dl>
<h2>a2jmidid</h2>
<p>
<dfn>a2jmidid</dfn> is an application that bridges between the system
<abbr title="Musical Instrument Digital Interface">MIDI</abbr> ports and
- <abbt title="JACK Audio Connection Kit">JACK</abbr>.
+ <abbr title="JACK Audio Connection Kit">JACK</abbr>.
</p>
<p>
First you should make sure that there is no ALSA sequencer support enabled
in JACK. To do that open QJackCtl's <kbd class="menu">Setup</kbd> window.
</p>
<p>
- Set <kbd class="menu">Settings > MIDI Driver</kbd> to <kbd
+ Set <kbd class="menu">Settings > MIDI Driver</kbd> to <kbd
class="input">none</kbd>.
Then uncheck the <kbd class="optoff">Misc > Enable ALSA Sequencer
support</kbd> option.<br />
Linux distribution and try again.
</p>
-<h3>Check surface control MIDI ports</h3>
+
+<h2>Check available MIDI ports</h2>
<p>
- After starting a2jmidid, your control surface MIDI ports should appear in
- qjackctl under <kbd class="menu">Connections > MIDI > a2j</kbd>.
+ If you have correctly configured JACK for MIDI, then your MIDI ports should appear in
+ qjackctl under <kbd class="menu">Connections > MIDI </kbd>.
</p>
+
+<h3>Making it automatic</h3>
+<p>
+Once you've verified that the ports appear in JACK as expected, you
+can make this happen whenever you start JACK.
+</p>
+
+<p>If you use a newer version of JACK 1, just make sure the -X
+alsa_midi or -X seq options are enabled for whatever technique you use
+to start JACK.
+</p>
+
<p>
- You can now add <kbd class="input">a2jmidid -e</kbd> as an "after start-up" script in the <kbd
- class="menu">Setup > Options</kbd> tab of QJackCtl, so that it is
- started automatically whenever you start JACK.
+For other versions of JACK,
+add <kbd class="input">a2jmidid -e &</kbd> as an "after start-up" script
+in the <kbd class="menu">Setup > Options</kbd> tab of QJackCtl, so
+that it is started automatically whenever you start JACK.
</p>