Ubuntu Weekly Recipe

第177回 サウンドシステムの使いこなし

この記事を読むのに必要な時間:およそ 4 分

2つのMIDIサブシステムの連携

ここまでは「音を出す」という機能に着目して紹介してきましたが,MIDI規格に基づいて信号をやりとりすることで,第149回第150回第169回第170回第176回で紹介したようなソフトウェアを互いに連携させることができます。これらのソフトウェアは,⁠MIDIポートを通じて他のデバイスやソフトウェアを操作する」⁠MIDI出力)機能と,⁠MIDIポートを通じて他のデバイスやソフトウェアからの操作命令を受け取る」⁠MIDI入力)機能に対応しているため,適切に設定を行うことで「DAWソフトウェアからソフトウェアシンセサイザーを鳴らす」⁠MIDI対応のキーボードからDAWに旋律を入力する」といった使い方ができるようになります。

この際,MIDI信号の扱いに力を発揮するのがALSAシーケンサー機能です。MIDIを扱うハードウェアもソフトウェアもALSAシーケンサー機能にポートを開いてMIDI入出力を行うことができます。

LinuxにはALSA以外に,JACKサウンドサーバーの一機能であるJACKシーケンサー機能があります。Firewire接続のMIDIデバイスやFeSTigeといった一部のソフトウェアは,JACKシーケンサー機能を用いてMIDI入出力を行います。

残念なことに,ALSAシーケンサー機能とJACKシーケンサー機能はそのままでは連携することができません。そこで,この2つのMIDIサブシステムの橋渡しをするソフトウェアであるa2jmididを使います。

起動は端末から行います。その際,あらかじめJACKサウンドサーバーを起動しておくのを忘れないでください。端末を開き,コマンド「$ a2jmidid -e;」を実行します。

図7 a2jmididを起動してからpatchageでMIDIポートを見ると,ALSAシーケンサー上で認識されたポートが,そのままJACKシーケンサーから認識されている状態を確認できる。なお,紺はJACKオーディオ機能,緑はALSAシーケンサー機能,赤はJACKシーケンサー機能で認識されているポートを示し,同じ色のポートのみ接続が可能

図7 a2jmididを起動してからpatchageでMIDIポートを見ると,ALSAシーケンサー上で認識されたポートが,そのままJACKシーケンサーから認識されている状態を確認できる。なお,紺はJACKオーディオ機能,緑はALSAシーケンサー機能,赤はJACKシーケンサー機能で認識されているポートを示し,同じ色のポートのみ接続が可能

MIDIサブシステムのネットワーク機能

JACKシーケンサー機能も,先述したJACKのネットワーク機能により,ネットワークを経由して他のコンピューターにMIDI入出力ポートを提供することができます。また,ALSAシーケンサー機能もパッケージ「alsa-tools」に含まれる「aseqnet」を利用することでネットワーク機能を持たせることができます。

ALSAシーケンサー機能のネットワーキングを行うには,マスターでコマンド「$ aseqnet;」を実行します。この際,マスターのIPアドレスを調べておいてください。スレーブで「$ aseqnet (IPアドレス);」を実行してマスターに接続します(ここでも,IPアドレスの代わりにホスト名を指定して接続が可能かと思います)⁠

図8 Patchageでポートを見ると,NetworkというMIDI入出力ポートがマスター/スレーブ共に開いているのがわかる

図8 Patchageでポートを見ると,NetworkというMIDI入出力ポートがマスター/スレーブ共に開いているのがわかる


このように,一見複雑に見える現在のLinuxのサウンドシステムも,ALSA/PulseAudioの関係を軸に見るとそれなりにすっきりとまとまっています。さらに今回は,音楽制作/編集環境目的で利用されるJACKとMIDI機能も加えて整理してみました。実際はこれらのソフトウェアに加えて,GStreamerSDL ⁠Simple DirectMedia Layer)PortAudioといったマルチメディアフレームワークが多用されているわけですが,ALSAライブラリーを利用している点では同じです。サウンドに関するトラブルに遭遇した際は,それぞれのソフトウェアやマルチメディアフレームワークが何に対して音声入出力を行っているかを調べると,解決が早まることでしょう。

著者プロフィール

坂本貴史(さかもとたかし)

Ubuntuのマルチメディア編集環境であるUbuntu Studioのユーザ。主にUbuntu日本コミュニティとUbuntu Studioコミュニティで活動。いつかユーザ同士で合作するのが夢。