#title RS232C接続のハードウェアMIDI音源を設定する手順 * '''対象とする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音源での再生を検討下さい。 [[https://forums.ubuntulinux.jp/viewtopic.php?id=2869|【HowTo】TiMidity++の基本的な使い方とちょっとしたTips]] /!\ Alert {{{--->8--->8--->8--- (snip) --->8--->8--->8---}}} は出力を省略し、一部だけ表示することを表します。 $で始まる行はコマンドを表します。端末を開いてコマンドを入力して下さい。 === ALSAの仕様確認 === 本Tipsでは、ALSA(Advanced Linux Sound Architecture)のsnd-serial-u16550モジュールでハードウェアMIDI音源を駆動します。下記を参照し使用しようとしているデバイスがサポートされているかを確認して下さい。 [[http://alsa.opensrc.org/index.php/Serial|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}}} を追記して保存して下さい。