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 server</code> 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>Ensure that a2jmidid is running</h2>
-<p><code>a2jmidid</code> is an application that "bridges" between the system MIDI ports and JACK.</p>
-<p>First you should be sure that there is no ALSA sequencer support enabled in jack. To do that open qjackctl's <em>Setup</em> window.</p>
-<p>In the <em>Settings</em> tab set the <em>MIDI Driver</em> drop down to the <em>none</em> option.</p>
-<p>Then go to the <em>Misc</em> tab and uncheck the <em>Enable ALSA Sequencer support</em> option.</p>
-<p>Now it's time to restart your jack server before going on.</p>
-<h4>Checking for a2jmidid availability</h4>
-<p>First thing is checking if <em>a2jmidid</em> is already installed in your system. To do it first start your jack server and then call</p>
-<pre>a2jmidid -e</pre>
-<p>from the command. If <em>a2jmidid</em> is there go on with <strong>Checking surface control MIDI ports</strong>. Otherwise install the newest <em>a2jmidid</em> available and try again.</p>
-<h4>Checking surface control MIDI ports</h4>
-<p>After starting <em>a2jmidid</em> your control surface MIDI ports should appear in qjackctl's <em>Connections</em> window on the <em>MIDI</em> tab under <em>a2j</em>. If it does go on to the next step: <strong>Automatically calling a2jmidid when starting jack</strong>. If it doesn't you have to troubleshoot why it didn't. <em>(How to troubleshoot a2jmidid?)</em></p>
-<h4>Automatically calling a2jmidid when starting jack</h4>
-<p>It's troublesome to have to manually start <em>a2jmidid</em> by hand each time you start jack. Here is one way to do it automatically. This step isn't mandatory, it's just a convenience. If you are not interested you can go on to the next step <strong>Enabling Ardour's mackie control ports in qjackctl</strong>.</p>
-<p>Create a script that calls jack if you aren't using one yet. In it change the line that calls jack to have an ampersand at it's end like that:</p>
-<pre>
-/usr/bin/qjackctl &
-</pre>
-<p>In this case I call qjackctl that starts jack so I include the ampersand in qjackctl's call. If you call jack directly, put the ampersand at the end of it's call line.</p>
-<p>Now include the following lines after the line that calls jack:</p>
-<pre>
-/usr/bin/sleep 5
-/bin/bash -c "/usr/bin/a2jmidid -e" &
-</pre>
-<p>All you have to do now is use your new script to call jack.</p>
-
+<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
+ <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
+ class="input">none</kbd>.
+ Then uncheck the <kbd class="optoff">Misc > Enable ALSA Sequencer
+ support</kbd> option.<br />
+ Now it's time to restart your jack server before going on.
+</p>
+
+<h3>Check for a2jmidid availability</h3>
+<p>
+ First, check whether a2jmidid is already installed in your system. After
+ starting your JACK server, go to the command line and type
+</p>
+<kbd class="cmd lin">a2jmidid -e</kbd>
+<p>
+ If a2jmidid does not exist, install it with the software manager of your
+ Linux distribution and try again.
+</p>
+
+
+<h2>Check availaibility MIDI ports</h2>
+<p>
+ 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>
+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>
+