• 対象とするUbuntuのバージョン

    • 全て

本Tipsは下記のトピック、 https://forums.ubuntulinux.jp/viewtopic.php?id=7803&p=1 での内容を纏めたものです。初版の編集者は本Tipsで扱う機器を所持していないため、コードや設定の妥当性検証が不十分である可能性があります。内容については適宜関連サイトの情報などと併せて参照願います。

本Tipsでは、ハードウェアMIDI音源として、Roland社製のSC-55MK2を例にとり、設定方法を解説します。

なお、うまくいかない場合は下記トピックを参照して、timidity、および、Fluid (R3) General MIDI SoundFontなどのソフトウェアMIDI音源での再生を検討下さい。

【HowTo】TiMidity++の基本的な使い方とちょっとしたTips

Warning /!\ Alert

--->8--->8--->8--- (snip) --->8--->8--->8---

は出力を省略し、一部だけ表示することを表します。 $で始まる行はコマンドを表します。端末を開いてコマンドを入力して下さい。

ALSAの仕様確認

本Tipsでは、ALSA(Advanced Linux Sound Architecture)のsnd-serial-u16550モジュールでハードウェアMIDI音源を駆動します。下記を参照し使用しようとしているデバイスがサポートされているかを確認して下さい。

ALSA WikiのSerialのページ

併せて、書式なども確認して下さい。

setserialによるシリアルポートの設定、および、snd-serial-u16550のロード

端末を開き、

$ which setserial

を実行し、setserialがインストールされているか、確認して下さい。もし入っていなければ、パッケージマネージャなどを使って、setserialパッケージを導入して下さい。 シリアルポートは/dev/ttyS0を使用すると仮定します。

$ sudo /bin/setserial /dev/ttyS0 uart none

を実行し、続いて、

$ sudo /bin/setserial /dev/ttyS0

を実行して、/dev/ttyS0のPort Address、IRQを確認します。 ここでは、

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4

であったと仮定します。

次に、確認したPort Address、IRQで、snd-serial-u16550をロードします。一例を下記に示します。

$ sudo /sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 speed=38400

カーネルモジュールが正常にロードされたかを

$ cat /proc/asound/cards

を実行して、確認して下さい。出力例を下記に示します。

 1 [UART16550A     ]: Serial - Serial MIDI (UART16550A)                       Serial MIDI (UART16550A) [Soundcanvas] at 0x3f8, irq 4 

ここまでで、特にエラーがなければ設定はひとまず完了です。

ハードウェアMIDI音源のClient番号、Port番号の確認

それでは、認識されているか確認してみましょう。端末で、

$ cat /proc/asound/seq/clients

、もしくは、

$ aplaymidi -l

を実行して、Client番号、および、Port番号を確認します。

$ cat /proc/asound/seq/clients 実行時の出力例

Client info --->8--->8--->8--- (snip) --->8--->8--->8--- Client  20 : "Serial MIDI (UART16550A)" [Kernel]   Port   0 : "Serial MIDI 1" (RWeX) --->8--->8--->8--- (snip) --->8--->8--->8--- 

$ aplaymidi -l 実行時の出力例

 Port    Client name                      Port name --->8--->8--->8--- (snip) --->8--->8--->8---  20:0    Serial MIDI (UART16550A)         Serial MIDI 1 --->8--->8--->8--- (snip) --->8--->8--->8--- 

この場合は、Client番号が20、Port番号が0となります。

MIDIファイルの再生確認

確認したClient番号とPort番号で、$ aplaymidiを起動しファイルを再生してみます。-pオプションに続く一つ目の数値がClient番号で、:で区切られた二つ目の番号がPort番号です。[midifile_name]には再生するMIDIファイルのフルパス名に置き換えて下さい。

$ aplaymidi -p20:0 [midifile_name]

設定の恒久化

音がでることが確認できたら、起動時にシリアルポートやALSAの設定がされるようにするのも良いでしょう。

シリアルポート設定

$ gksudo gedit /etc/serial.confなどとして管理者権限で/etc/serial.confをテキストエディタで開き、1行目に

###AUTOSAVE###

と書いて改行し、保存して下さい。

その後、シリアルポートの設定コマンドを実行し、再起動して、/etc/serial.confが更新されていることを確認して下さい。 コマンドの一例を下記に示します。

$ sudo /sbin/setserial /dev/ttyS0 uart none

ALSA設定

$ gksudo gedit /etc/modprobe.d/alsa-base.confなどとして管理者権限で/etc/modprobe.d/alsa-base.confをテキストエディタで開き、設定内容を記述して下さい。下記に一例を示します。

options snd-serial-u16550 port=0x3f8 irq=4 speed=38400 index=1 alias snd-card-1 snd-serial-u16550 alias snd-slot-1 snd-card-1 install snd-serial-u16550 /bin/setserial /dev/ttyS0 uart none; /sbin/modprobe --ignore-install snd-serial-u16550 $CMDLINE_OPTS 

次に、$ gksudo gedit /etc/modulesなどとして管理者権限で/etc/modulesをテキストエディタで開き、

snd-serial-u16550

を追記して保存して下さい。

UbuntuJapaneseWiki: UbuntuTips/Hardware/HowToSetupHardwareMidi (最終更新日時 2012-01-10 11:49:20 更新者 匿名)