次のページ 前のページ 目次へ

7. MIDI デバイスの設定

MIDI デバイスはサウンドカードと一体になっていることもあれば、 独立したデバイスになっていることもあります。 外部 MIDI インタフェースは、シリアルポートか USB ポートのどちらかに 取り付けることができます。

最初にやるべきであり、なおかつ「最も重要な」ことは、 お使いのカードがサポートされているかどうかチェックすることです!

http://www.alsa-project.org/soundcards.php3

http://www.4front-tech.com/osshw.html

MIDI デバイスの設定法は、Linux ディストリビューションによって様々です。 よくサポートされているカードだと、OS のインストール時に設定できます。

(訳注: 2.4 以前の)Linux カーネルには OSS ドライバが、2.5 のカーネルには ALSA ドライバが含まれています。たいていのディストリビューションには (おもにサウンドカード向けの) 設定ツールが用意されています。 でも、サウンドカードについている MIDI ポートを使うのなら、 MIDI ポート向けの設定をする必要があるでしょう。Red Hat では sndconfig を、 SuSE では yast を、Mandrake では DrakConf を使います。

上記のツールでお使いの MIDI インタフェースを設定できない、もしくは 問題がある場合は、次の段階を踏むべきです。

lsmod で MIDI 関係のモジュールが表示されますか? OSS ベースの システムでの典型的な出力はこのようなものです。


[root@beatbox]# lsmod
Module                  Size  Used by
lockd                  32208   1  (autoclean)
sunrpc                 54640   1  (autoclean) [lockd]
autofs                  9456   2  (autoclean)
usb-ohci               12624   0  (unused)
usbcore                43632   1  [usb-ohci]
hisax                 470096   0  (autoclean) (unused)
isdn                  104208   0  (autoclean) [hisax]
slhc                    4544   0  (autoclean) [isdn]
eepro100               16144   1  (autoclean)

#---- Soundcard modules
    opl3                   11376   2 
    mad16                   7968   1 
    ad1848                 16848   1  [mad16]
    sb                     34752   1  [mad16]
    uart401                 6384   1  [mad16 sb]
    sound                  58368   0  [opl3 mad16 ad1848 sb uart401]

soundlow                 464   0  [sound]
soundcore               2800   6  [sb sound]
nls_cp437               3952   2  (autoclean)
vfat                    9408   1  (autoclean)
fat                    30432   1  (autoclean) [vfat]
ide-scsi                7664   0 

mpu401, olp3, uart401, oss を探してください。

USB デバイスをお使いなら、USB モジュールがあるかどうかチェックするのを 忘れずに。

設定をチェックするには、sndstat ファイルを cat します:


[root@beatbox]# cat /dev/sndstat 
OSS/Free:3.8s2++-971130
Load type: Driver loaded as a module
Kernel: Linux mega 2.2.17-21mdk #1 Thu Oct 5 13:16:08 CEST 2000 i686
Config options: 0

Installed drivers: 

Card config: 

Audio devices:
0: MAD16 WSS (82C930) (DUPLEX)

Synth devices:
0: Yamaha OPL3

Midi devices:
0: Mad16/Mozart

Timers:
0: System clock

Mixers:
0: MAD16 WSS (82C930)

ここで MIDI デバイスが mad16 ひとつであることがわかります。上記 lsmod の出力にも リストアップされていましたね。

もし MIDI 関連のデバイスが見当らなければ、/etc/modules.conf ファイルの 内容をチェックしてみましょう。


[root@beatbox]# cat /etc/modules.conf
alias net-pf-4 ipx 
pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start 
alias usb-interface usb-ohci 
alias parport_lowlevel parport_pc 
alias block-major-11 scsi_hostadapter 
pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq 
alias scsi_hostadapter ide-scsi 
alias eth0 eepro100 
alias eth1 hisax 

#---- Soundcard
    alias sound-slot-0 mad16 
    options sound dmabuf=1 
    alias midi opl3 
    options opl3 io=0x388 
    options sb support=1 
    options mad16 io=0x530 irq=5 dma=0 dma16=1 mpu_io=0x300 mpu_irq=7 joystick=1

MIDI のモジュールがカーネルにロードされているかどうかを、/proc/modules を 出力してチェックします。


[root@mega /proc]# cat modules
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)

#---- MIDI device
    0300-0303 : MPU-401 UART

0376-0376 : ide1
0388-038b : Yamaha OPL3
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0530-0533 : MAD16 WSS config
0534-0537 : MAD16 WSS
de00-de1f : Intel Speedo3 Ethernet
f000-f007 : ide0
f008-f00f : ide1

あなたのところでも、上記に似た結果になったはずです。そうでなければ、 MIDI ドライバをインストールする必要があります。

ALSA 0.5x ドライバを使うのはやめたほうがいいですが、 どうしても使う予定があるなら、 下記リンクで入手できる Valentijn Sessink 著の Alsa-sound-mini-HOWTO をよく読むことをおすすめします。

http://www.tldp.org/HOWTO/Alsa-sound.html

バージョン 0.9 より新しい ALSA を使うことを、強く推奨します。 0.9 より後の ALSA ドライバ向けには、Madhu Maddy 著の ALSA-HOWTO を よく読むとよいです。

http://www.alsa-project.org/alsa-doc/alsa-howto/

7.1 ALSA 0.9 の手早いインストール法

以下は、ALSA 0.9 ドライバと、たいていの MIDI アプリケーションが 必要とするライブラリをとても手早くインストールする手順です。


[root@beatbox] # tar jxvf alsa-driver....tar.bz2
[root@beatbox] # cd alsa-driver.....
[root@beatbox] # ./configure

messages - no errors

[root@beatbox] # make

messages - no errors

[root@beatbox] # make install

messages - no errors

[root@beatbox] # ./snddevices

次に、/etc/modules.conf を編集する必要があります。もしくは、 ディストリビューションによっては、modules ディレクトリにある ALSA 向けファイルを編集する必要があります。

他にも、MIDI 以外のデバイス向けのエントリがあるかもしれないので、 ファイルを編集する際は注意してください。 典型的なシステムには、ファイル中に古い ALSA か OSS の設定があるかもしれないので、 消すか、コメントアウトする必要があります。

以下は modules.conf ファイル中の、典型的な OSS 互換 ALSA の設定箇所です。


alias char-major-116 snd
alias char-major-14 soundcore

alias snd-card-0 (MIDI/サウンドカード)
alias sound-slot-0 snd-card-0

alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-12 snd-pcm-oss

(MIDI/サウンドカード) のエントリをお使いのカードのものに変更します。 ここの情報は通常、ALSA のウェブサイトで見つかります。

ALSA ドライバをインストールしたら、次に ALSA ベースのプログラムに必要な ヘッダとライブラリファイルをインストールする必要があります。これは、 alsa-libs パッケージに含まれています。


[root@beatbox] # tar jxvf alsa-libs....tar.bz2
[root@beatbox] # cd alsa-libs.....
[root@beatbox] # ./configure

messages - no errors

[root@beatbox] # make

messages - no errors

[root@beatbox] # make install

お使いのシステムの設定が完了しました :)

簡単な C のプログラムで、設定がうまくいったかチェックできます。 コンパイルと実行ができたら、システムはうまくいっているはずです。


// Compile this test program like so: gcc alsatest.c -o alsatest -lasound

#include <stdio.h>
#include <alsa/asoundlib.h>

int main (int argc, char *argv[])
{
  snd_seq_t *seq_handle;

  if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
    fprintf(stderr, "Error opening ALSA sequencer.\n");
    exit(1);
  }

printf("The ALSA libraries are installed.\n");
return 0;
}


7.2 レイテンシ

MIDI はリアルタイムのプロトコルなので、レイテンシは重大な問題です。

現在、応答時間短縮のための作業をしている何人かの開発者がいます。 カーネルの応答時間が短縮されると、Linux は MIDI 向けのすばらしい プラットフォームになっていきます。

標準の Linux ディストリビューションでも満足に動作するかもしれませんが、 プロ向けの機器にはロウレイテンシパッチをあてるべきです。

より詳細な情報はここで入手できます:

http://www.gardena.net/benno/linux/audio/

http://www.linuxdj.com/audio/lad/resourceslatency.php3

ロウレイテンシ Mini Howto

http://www.djcj.org/LAU/guide/Low_latency-Mini-HOWTO.php3


次のページ 前のページ 目次へ