7. 미디 장치 설정

7.1. 설정과 디버깅

미디 장치는 사운드 카드에 포함되거나 별도의 장치로 존재한다. 외부 미디 인터페이스는 시리얼 포트나 USB 포트에 연결되기도 한다.

첫번째 가장 중요한것은 당신의 카드가 지원되는 것인지 확인하는 것이다!

http://www.alsa-project.org/src/soundcards.html

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

OSS 드라이버 또는 Alsa를 사용하는 대부분의 배포본들은 설정 도구 (대부분 사운드 카드를 위한 것이지만, 사운드 카드의 미디 포트도 설정할 수 있다)를 사용할 수 있다. 예를 들어 레드헷은 sndconfig, 수세는 yast, 맨드레이크는 DrakConf를 사용한다.

미디 인터페이스를 설정할 수 있는 도구가 없거나 문제가 있다면 다음 단계를 따른다:

lsmod의 출력 결과가 미디 관련 모듈을 포함하고 있는가? 다음은 전형적인 출력 예이다.
[root@mega /root]# 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)

#---- 사운드 카드 관련 모듈
    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 파일을 확인해 본다:

[root@mega /root]# 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)

여기서 mad16이 미디 장치라는 것을 알 수 있으며 이것은 위의 lsmod 출력에서도 볼 수 있었다.

만약 미디와 관련된 것이 아무것도 출력되지 않는다면 /etc/modules.conf 파일을 확인해본다.

[root@mega /root]# 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 

#---- 사운드 카드
    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

다음은 미디 모듈이 로드되었을때 /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)

#---- 미디 장치
    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

위와 비슷한 결과가 확인되어야 한다. 그렇지 않다면 미디 드라이버를 설치해야할 필요가 있다.

만약 ALSA 드라이버를 사용할 것 이라면 Valentijn Sessink가 쓴 Alsa-sound-mini-HOWTO 문서를 참고한다:

http://www.linuxdoc.org/HOWTO/mini/Alsa-sound.html

7.2. 지연(Latency)

미디는 실시간 프로토콜로 latency는 심각한 문제가 될 수 있다.

현재 몇몇 개발자들이 이것과 관련되어 리눅스가 미디 플랫폼으로 사용하기 적합하도록 커널 해킹을 하고 있다.

기존의 리눅스 커널도 별 무리없이 사용가능 하지만 low-latency 패치를 적용하는 것이 좋다. 자세한 정보는 다음 링크에서 찾을 수 있다:

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