다음 이전 차례

6. 빈도가 높은 질문에 대한 답변 (Answers To Frequently Asked Questions)

뉴스그룹 과 메일링 리스트에서 흔하게 볼 수 있는 질문에 대한 답변을 이 장에서 하겠다.

더 많은 질문과 답변을 OSS 사운드 드라이버 웹 페이지에서 찾을 수 있다.

6.1 여러가지 사운드 디바이스 파일은 무엇인가?

아래의 것들은 가장 표준적인 디바이스 파일 이름이다. 일부 리눅스 배포본의 경우 약간 다른 이름을 사용할 수도 있다.

/dev/audio

normally a link to /dev/audio0

/dev/audio0

Sun workstation compatible audio device (only a partial implementation, does not support Sun ioctl interface, just u-law encoding)

/dev/audio1

second audio device (if supported by sound card or if more than one sound card installed)

/dev/dsp

normally a link to /dev/dsp0

/dev/dsp0

first digital sampling device

/dev/dsp1

second digital sampling device

/dev/mixer

normally a link to /dev/mixer0

/dev/mixer0

first sound mixer

/dev/mixer1

second sound mixer

/dev/music

high-level sequencer interface

/dev/sequencer

low level MIDI, FM, and GUS access

/dev/sequencer2

normally a link to /dev/music

/dev/midi00

1st raw MIDI port

/dev/midi01

2nd raw MIDI port

/dev/midi02

3rd raw MIDI port

/dev/midi03

4th raw MIDI port

/dev/sndstat

displays sound driver status when read (also available as /proc/sound)

PC 스피커 드라이버는 다음 디바이스를 제공한다:

/dev/pcaudio

equivalent to /dev/audio

/dev/pcsp

equivalent to /dev/dsp

/dev/pcmixer

equivalent to /dev/mixer

6.2 사운드 샘플을 어떻게 연주하는가?

Sun 워크스테이션 (.au) 사운드 파일은 연주하려면 /dev/audio 디바이스에 그 파일을 보내면 된다. Raw 샘플은 /dev/dsp 디바이스로 보내라. play 와 같은 프로그램을 사용하는 것이 좋다. 그것은 대부분의 파일 형식을 인식할 것이고 정확한 샘플링 속도로 사운드 카드를 세팅하는 등의 역할을 수행 할 것이다.

wavplay 또는 vplay (in the snd-util package) 와 같은 프로그램은 WAV 파일을 연주하는데 좋다. 그러나 이들은 Microsoft ADPCM compressed WAV 파일을 인식하지 못한다. 또한 play (from the Lsox package) 의 더 오래된 버전은 16 비트 WAV 파일을 연주하지 못한다.

snd-util 패키지에 포함되어 있는 splay 명령의 경우 명령행에 적당한 변수들만 주어진다면 대부분의 사운드 파일을 연주하는데 사용될 수 있다.

6.3 샘플을 어떻게 녹음하는가?

/dev/audio 또는 /dev/dsp 를 읽는다는 것은 샘플 데이타를 되돌려 준다는 것을 의미하고 그 샘플 데이타는 리다이렉션 기능을 임의의 파일에 저장될 수 있다. vrec 같은 프로그램을 사용하면 샘플링 속도, duration 등을 조절하기가 쉽다. 적당한 입력 장치를 선택하기 위해 믹서 프로그램을 필요로 할 수도 있다.

6.4 하나 이상의 사운드 카드를 사용할 수 있는가?

현재의 사운드 드라이버로서 하나의 시스템에서 여러개의 사운드블래스터, 사운드블래스터 프로, 사운드블래스터16, MPU-401 또는 MSS 카드를 동시에 사용하는 것이 가능하다. local.h 파일을 편집하여 SB2_BASE, SB2_IRQ, SB2_DMA (일부 경우) SB2_DMA2 마크로 (macros)를 define 해주면 두개의 사운드블래스터 카드를 사용하는 것이 가능하다. 또한 PAS16 과 사운드블래스터를 동시에 사용하는 것이 가능하다.

2.0 이상의 커널을 사용하는 경우, 여러개의 사운드 카드를 사용하려면 local.h 파일을 수정하는 대신에 /usr/include/linux/autoconf.h 파일을 편집하면 된다. 먼저 아래의 내용이 있는 위치를 찾는다.

#define SBC_BASE 0x220
#define SBC_IRQ (5)
#define SBC_DMA (1)
#define SB_DMA2 (5)
#define SB_MPU_BASE 0x0
#define SB_MPU_IRQ (-1)

위의 내용 다음에 아래의 내용을 넣어준다. 물론 IRQ 등의 값은 자신의 사운드 카드에 맞는 것이야 할 것이다.

#define SB2_BASE 0x330
#define SB2_IRQ (7)
#define SB2_DMA (2)
#define SB2_DMA2 (2)

다음 드라이버들은 multiple instances (여러개 사용하기)가 허용되지 않는다:

6.5 Error: No such file or directory for sound devices

사운드 드라이버 디바이스 파일을 생성시킬 필요가 있다. 디바이스 파일의 생성에 대한 내용을 다루는 장(section)을 보라. 디바이스 파일이 있다면 주, 부 번호가 정확한지 확인하라 (일부 오래된 CD-ROM 배포본의 경우, 정확한 디바이스 파일이 생성되지 않을 수도 있다).

6.6 Error: No such device for sound devices

사운드 드라이버를 포함하는 커널로 부팅하지 않았거나 I/O address 설정이 여러분의 사운드카드와 맞지 않는다. 현재 실행되는 커널이 새로 컴파일한 커널인지 확인하고 사운드 드라이버 설정변수가 여러분의 하드웨어 셋업과 일치하는지 점검하라.

6.7 Error: No space left on device for sound devices

/dev/audio 또는 /dev/dsp 와 같은 필요한 디바이스 파일은 생성되어 있지도 않은데 그들 디바이스 파일에 데이타를 기록하려고 할 경우 발생할 수 있는 에러이다. 사운드 디바이스는 정식으로 확정된 파일이며 여러분의 디스크 파티션에 존재해야 한다. 디바이스 파일의 생성 에서 설명한 스크립트를 실행시킬 필요가 있다.

리눅스 커널 2.0 이상인 경우, 디바이스를 열려고 할 때 시스템상에 free RAM이 충분하지 않으면 이러한 에러가 발생할 수 있다. audio 드라이버는 각 DMA channel에 대하여 최소한 연속적으로 두 페이지의(8k) 실제 RAM (physical RAM)이 필요하다. 이것은 RAM이 16 메가 이하이거나 장시간 시스템을 켜놓았을 때 가끔 발생한다. 장치를 다시 열기 전에 다음 C 프로그램을 컴파일하고 실행시키면 약간의 RAM을 free한 상태로 만들 수 있다:

main() {
  int i;
  char mem[500000];
  for (i = 0; i < 500000; i++)
    mem[i] = 0;
  exit(0);
}

6.8 Error: Device busy for sound devices

사용하고자 하는 사운드 디바이스가 이미 다른 프로세서에 의해 사용되고 있는 경우이다. fuser 명령을 사용하여 확인할 수 있다:

% fuser -v /dev/dsp
/dev/dsp:             USER       PID ACCESS COMMAND
                      tranter    265 f....  tracker

위의 예에서 프로세서 265에 의하여 디바이스가 사용중인 것을 알 수 있다. 그 프로세서가 끝나길 기다렸다가 디바이스를 사용하거나 또는 그 프로세서를 죽이고서 디바이스를 사용하면 된다. 그런데 다른 사용자가 디바이스를 사용할 수도 있으므로 root의 권한으로 fuser 명령을 실행하여야지만 자신을 포함한 다른 사용자가 디바이스를 사용중인지 아닌지를 알 수 있을 것이다.

일부 시스템에서는 다른 사용자의 프로세스를 보기 위해 fuser 명령을 실행시키려면 root이어야 할 필요가 있다.

6.9 여전히 device busy error 가 표시된다

Brian Gough의 보고에 따르면, DMA channel 1을 사용하는 사운드블래스터 카드의 경우 역시 DMA 1을 사용하는 QIC-02 tape 드라이버과 충돌할 가능성이 있으며 그래서 "device busy" 에러를 일으킬 수 있다고 한다. 여러분이 FTAPE을 사용한다면 QIC-02 tape 드라이버를 작동하도록 해 놓았을 수도 있다. FTAPE-HOWTO에 따르면 FTAPE을 사용하기 위해 QIC-02 tape 드라이버가 필수적인 것은 아니며 QIC-117 드라이버만 있으면 된다고 한다. QIC-02가 아니라 QIC-117을 사용하도록 커널을 재설정하면 FTAPE 과 사운드 카드를 함께 사용할 수 있을 것이다.

6.10 Partial playback of digitized sound file

일반적으로 증상은 다음과 같다. 샘플 사운드 파일이 몇초 정도 연주 되다가 완전히 멈춰 버리거나 또는 "missing IRQ", "DMA timeout" 과 같은 에러 메세지를 표시하는 것이다. 가장 가능성 있는 것은 IRQ 또는 DMA channel의 세팅의 잘못이다. 사운드 카드의 점퍼 세팅과 커널 설정이 일치하는지 그리고 다른 카드와 충돌은 없는지 확인하라.

또 다른 증상은 사운드 샘플이 반복적으로 끝없이 연주되는 것이다. 일반적으로 IRQ 충돌때문에 발생하는 현상이다.

6.11 MOD 파일을 연주할 때 끊김 현상이 발생한다

MOD 파일의 연주는 많은 CPU 파워를 필요로 한다. 너무 많은 프로세서가 실행되고 있거나 여러분의 컴퓨터가 실시간으로 연주하기에는 너무 느릴 수도 있다:

Gravis UltraSound 카드를 사용한다면 GUS를 위해 특별히 제작된 MOD 파일 연주기 (예: gmod) 중의 하나를 사용해야 한다.

6.12 Compile errors when compling sound applications

버전 1.0c 와 그 이전의 사운드 드라이버는 ioctl() 의 설계가 그 이후의 것과 다르며 호환되지 않는다. 더 새로운 소스 코드를 구하거나 새로운 사운드 드라이버에 맞게 고쳐라. 자세한 내용은 Readme 파일을 보라.

또한 응용프로그램을 컴파일 할때 여러분이 사용하는 soundcard.h 와 ultrasound.h 가 최신 버전인지 확인하라. 이 글의 초반부에 있는 설치 관련 내용을 보라.

6.13 SEGV when running sound binaries that worked previously

이것은 아마도 앞의 질문과 같은 문제일 것이다.

6.14 사운드 드라이버에 알려진 버그나 한계(limitation)가 포함되어 있는가?

커널 소스에서 제공하는 사운드 관련 파일을 참고하기 바란다.

6.15 사운드 드라이버 ioctls() 등은 어디에 있는가?

소스 코드를 제외한 가장 좋은 문서는 4Front Technologies의 웹사이트에서, http://www.opensound.com, 찾을 수 있다. 참고문헌 목록에 있는 Linux Multimedia Guide에서도 사운드 드라이버에 대한 정보를 찾을 수 있다.

6.16 끊김없이 연주나 녹음을 하려면 얼만큼의 CPU 자원이 필요한가?

이 질문에 대한 답변은 쉽지 않다. 다음의 사항에 따라 다르다:

일반적으로 386 또는 그 이상의 컴퓨터의 경우 8 비트 사운드 카드로서 샘플 파일 또는 FM synthesized 음악을 쉽게 연주할 수 있다.

그러나 MOD 파일을 연주하는 것은 상당한 CPU 자원을 필요로 한다. 몇몇 실험에 의하면 44kHz의 속도로 연주하기 위해서는 486/50 속도의 40% 이상을 필요로 하며 386/25의 경우 22kHz 이상의 속도로 연주하기는 거의 불가능하다고 한다 (이 결과는 사운드블래스터와 같은 8 비트 사운드카드로서 실험한 것이다). Gravis UltraSound 카드와 같은 사운드 카드는 하드웨어 기능을 더 많이 수행하기 때문에 CPU 자원을 덜 필요로 한다.

위의 이야기는 CPU가 다른 심한 일을 하고 있지 않다는 가정을 포함하고 있다.

수치보조프로세서를 갖고 있을 경우, sox와 같은 도구(utility)를 사용하여 사운드 파일을 변환하거나 음향효과를 더하는 일을 훨씬 더 빨리 할 수 있다. 커널 드라이버 그 자체는 아무런 실수연산을 하지 않는다.

6.17 PAS16 과 Adaptec 1542 SCSI host 어댑터를 가지고 있을 때의 문제

(다음 설명은 seeker@indirect.com에 의한 것이다)

리눅스는 address 330 (디폴트) 또는 334를 사용하는 1542 만을 인식한다. 그리고 PAS의 경우 MPU-401을 에뮬레이션하기위해 330을 사용해야만 한다. 소프트웨어에서 MPU-401을 죽인다고 하더라도 여전히 충돌은 일어날 것이다. 1542의 address를 334로 옮기면 문제는 사라질 것이다.

게다가, PAS-16 과 1542는 둘다 16-bit DMA를 한다. 그래서 16-bit 44 kHz stereo로 샘플링 하여 1542에 물려있는 SCSI 드라이버에 저장하려 한다면 문제가 생길 것이다. DMA 겹치고(overlap) RAM 재충전에 필요한 시간이 충분하지 않기 때문에 여러분은 무엇이 문제인지도 모른채 "PARITY ERROR - SYSTEM HALTED" 라는 메세지에 부들부들 떨것이다. QIC-117 tape를 제공하는 몇몇 2차 판매자들이 1542의 bus on/off times을 보통보다 더 길게 세팅하라고 권고함으로써 상황은 더 나쁘게 되었다. Adaptec's BBS 또는 인터넷을 통하여 SCSISEL.EXE 프로그램을 구해서 문제가 해결될 때까지 BUS ON time을 감소시키거나 BUS OFF time을 증가시키도록 하라. 그런 후에 그것을 눈금 하나 (ont notch) 또는 그 이상 이동시켜라. SCSISEL은 EEPROM 세팅을 바꾸는 것이기 때문에 CONFIG.SYS 파일의 DOS driver line을 바꾸는 것보다 더 영구적이다. 그리고 리눅스로 곧바로 부팅하면 제대로 작동할 것이다 (DOS patch와는 달리).

마지막 문제 - 오래된 Symphony 칩셋은 버스 접근 (bus accesses) 속도를 높이기 위해 I/O 사이클의 타이밍을 크게 감소 시켰다. 저자가 시험했던 여러가지 보드 중에서 PAS-16을 제외하고서는 어떤 것도 타이밍 감소와 관련된 문제를 일으키지 않았다. Media Vision의 BBS에 SYMPFIX.EXE라는 파일이 있다. 이 파일은 Symphony의 bus controller에 있는 diagnostic bit를 수정하여 문제를 해결할 수 있을 것이라고 여겨진다. 그러나 확실히 보장할 수는 없다. 여러분은 다음 사항을 수행해야할 필요가 있다:

Young Microsystems는 약 30 달러 가량의 비용으로 그들이 수입한 보드를 업그레이드 해 줄 것이다; 다른 판매자들도 비슷할 수 있으니 마더보드를 누가 만들었는지 또는 누가 수입했는지 짐작이 되면 그들과 접촉해 보라 (행운을 빈다). 내가 경험한 바에 의하면 PorAudio의 bus interface chip에 문제가 있다. 120 달러 짜리 사운드 카드를 사서 6MHz AT에 설치하여 사용할려는 사람은 아무도 없을 것이다. 대부분은 25-40 MHz 386/486 컴퓨터를 사용할 것이고 이 정도라면 그리고 칩이 제대로 디자인된 것이라면 최소한 12MHz bus rate를 제어하는 것은 문제가 아니다. Exit soapbox (stage left).

첫번째 문제는 마더보드의 칩셋, bus speed, 다른 바이오스 세팅 그리고 달의 위상에 달려있다. 두번째 문제는 refresh option 세팅 (hidden 또는 synchronous), 1542 DMA rate 그리고 (아마도) bus I/O rate에 달려있다. 세번째 문제는 Symphony 칩의 어느 flavor가 Media Vision의 slow design과 호환되지 않는지를 Media Vision 에 물어보는 것에 따라 결정된다. Be warned, though - 3 of 4 techs I talked to were braon demaged. 저자는 그들이 다른 사람의 하드웨어에 대하여 무엇을 이야기 하더라도 믿기 어렵다. 왜냐하면 그들은 그들 자신의 것조차도 잘 몰랐기 때문이다.

6.18 샘플을 동시에 읽고 쓰는 것이 가능한가?

일부 사운드 카드의 해당 드라이버는 full duples mode를 지원한다. 어떻게 사용하는지는 4Front Technologies에서 제공하는 문서를 참고하기 바란다.

6.19 나의 SB16은 IRQ 2를 사용한다, 그러나 이의 설정이 허용되지 않는다.

286 과 그 이상의 컴퓨터에서 IRQ 2는 second interrupt controller에 cascaded 되어 있다. 그것은 IRQ 9와 동일하다.

6.20 리눅스를 실행하다가 도스로 부팅할 경우 에러가 나오거나 사운드 응용프로그램이 제대로 작동하지 않는다.

이것은 도스로 soft reboot 하면 발생한다. 때때로 잘못된 CONFIG.SYS 파일로 인해 에러 메세지가 표시되기도 한다.

현재 대부분의 사운드 카드는 IRQ 와 DMA 세팅을 소프트웨어로 한다. 리눅스와 MS-DOS/Windows 간의 세팅이 다르다면 이런 문제가 생길 수도 있다. 일부 사운드 카드는 완벽하게 리셋(reset)하지 않으면 새 설정변수를 받아들이지 않는다 (즉 파워를 껐다가 켜거나 또는 리셋 버튼을 사용하라)

이 문제의 빠른 해결책은 soft reboot (예: Ctrl-Alt-Del)을 사용하는 대신에 컴퓨터를 껐다가 다시 켜거나 리셋 버튼을 사용하는 것이다.

정확한 해결책은 MS-DOS 와 리눅스의 IRQ 와 DMA 세팅을 갖게 하는 것이다 (또는 DOS를 사용하지 않거나 :-).

6.21 리눅스에서 DOOM을 실행시킬 때의 문제

ID software의 게임인 DOOM을 사용하는이는 여기에 관심이 있을 것이다.

정확한 사운드의 출력을 위해서는 실시간 DOOM mode를 지원하는 버전 2.90 이상의 사운드 드라이버가 필요하다.

사운드 샘플은 16 비트이다. 여러분의 사운드 카드가 8 비트라면 ftp://meatlab.unc.edu/pub/Linux/games/doom에 있는 몇가지 프로그램 중에 하나를 이용하여 제대로 된 사운드를 들을 수 있다.

DOOM이 원만하게 실행되지 않을 경우 사운드를 죽여버리면 (sndserver 파일의 이름을 다른 이름으로 바꾸면 된다) 개선될 것이다.

디폴트로 DOOM은 음악을 지원하지 않는다 ( DOS 버전의 경우처럼). 음악까지 즐기려면 musserver 프로그램을 추가해야 한다. 이것은 ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz 에서 구할 수 있다.

6.22 잡음(noise)을 어떻게 하면 줄일 수 있는가?

품질 좋은 쉴드선 (shielded cables)을 사용하고 사운드 카드를 다른 슬롯으로 옮기는 것은 잡음을 줄이는데 도움이 된다. 사운드 카드에 볼륨 조절 기능이 있다면 세팅을 바꾸어 보라 (아마도 maximum이 가장 좋을 것이다). mixer 프로그램을 이용하여 원하지 않는 입력 (예, 마이크)의 게인이 제로로 세팅되어 있는지 확인할 수 있다.

Philipp Braunbeck에 의하면 자신의 ESS-1868 사운드 카드에는 내장 앰프를 끄는 점퍼 스위치가 있으며 이를 이용하여 소음을 줄일 수 있었다고 한다.

어떤 386 시스템의 경우, 커널 명령행 옵션에 no-hlt를 주면 소음이 줄어드는 것을 저자는 발견했다. 이것은 커널로 하여금 idle process loop의 실행시 halt instruction을 사용하지 않도록 하는 조치이다. 부팅시 수동으로 명령행에 적어 줄 수도 있고 LILO 설정 파일 (lilo.conf)에 append = "no-hlt"라고 적어주면 된다.

일부 사운드 카드는 쉴드 (shielding) 와 접지 (grounding)를 잘 하더라도 소음을 줄이기 어려운 경향이 있다.

6.23 사운드를 연주할 수는 있지만 기록할 수 없다.

그렇다면 다음을 시도해보라:

때때로 연주 (playback) 할 때보다 녹음 (recording) 할 때 다른 DMA channel이 이용되는 경우가 있다. 이 경우에 가장 가능성 있는 이유로는 recording DMA의 부정확한 셋업을 들 수 있다.

6.24 나의 "호환" 사운드 카드는 MS-DOS에서 먼저 초기화 시켜야지만 제대로 작동한다.

대부분의 경우에 "사운드블래스터 호환" (SoundBlaster compatible) 카드들은 사운드블래스터 드라이버 보다는 다른 드라이버로 설정하면 더 잘 작동할 것이다. 대부분의 사운드 카드는 호환이라고 주장하지만 (예를 들어, "16 bit SB Pro compatible" or "SB compatible 16 bit") 일반적으로 이 사운드블래스터 모드는 단지 DOS 게임 호환성을 제공하는 하나의 hack 일 뿐이다. 대부분의 카드는 최근의 리눅스 커널에서 (2.0.1 이상) 제공하는 듯한 16 bit native mode를 가지고 있다.

단지 일부 (일반적으로 좀 오래된) 카드의 경우에만 사운드블래스터 모드에서 작동하는지 시험해 볼 필요가 있다. 여기에 예외적인 카드는 Mwave-based 카드이다.

6.25 16 비트 사운드블래스터와 호환되는 사운드 카드가 리눅스에서는 단지 8 비트로 작동한다.

사운드블래스터와 호환이라고 하는 16 비트 사운드 카드의 경우, 실제로는 8 비트 사운드블래스터 프로와 호환될 뿐이다. 대표적으로 그것들은 사운드블래스터 16과 호환성이 없는 16 비트 모드를 사용하며 리눅스 사운드 드라이버와 호환되지 않는다.

MAD16 또는 MSS/WSS 드라이버를 사용하면 여러분의 카드가 16-bit mode에서 작동할 수도 있다.

6.26 리눅스용 사운드 응용프로그램을 어디서 구할 수 있느냐?

여기에 리눅스용 사운드 응용프로그램을 구할 수 있는 ftp 사이트를 몇 군데 소개하겠다:

또한 이 문서의 참고문헌을 보기 바란다.

6.27 사운드 드라이버를 탈착식 모듈 (loadable module)로서 컴파일 할 수 있는가?

최근의 커널에서는 사운드 드라이버를 몇 가지 탈착식 모듈로 만들 수 있다.

더 자세한 내용은 /usr/src/linux/drivers/Documentation/sound에 있는 파일들을 참고하기 바란다. 특히 Introduction과 README.modules 파일을 읽어보라.

6.28 system console beep 대신에 사운드 카드를 사용할 수 있는가?

oplbeep 프로그램을 사용해 보라, ftp://metalab.unc.edu/pub/Linux/apps/sound/oplbeep-2.3.tar.gz에서 찾을 수 있다.

또 다른 것으로는 beep 프로그램이 있다, ftp://metalab.unc.edu/pub/Linux/kernel/patches/misc/modreq_beep.tgz 에서 찾을 수 있다.

modutils 패키지에는 예제 프로그램과 함꼐, 사운드를 생성하는 임의의 프로그램을 커널이 요구할 때 불러들일 수 있도록하는 커널패치가 들어있다.

일부 카드의 경우, PC 스피커 출력을 사운드 카드에 연결 할 수도 있다. 그렇게 되면 모든 소리가 사운드 카드 스피커를 통하여 출력될 것이다.

6.29 VoxWare 란 무엇인가?

4Front Technologies에서 판매하는 상용의 사운드 드라이버는 VoxWare, USS (Unix Sound System), 심지어는 TASD (Temporarily Anonymous Sound Driver)라는 이름으로 알려져 있었다. 현재는 OSS (Open Sound System)라는 이름으로 판매되고 있다. 때로는 리눅스 커널에 포함된 버전을 OSS/Free로 부르기도 한다.

더 자세한 것은 4Front Technologies의 웹사이트인 http://www.opensound.com/를 참고하기 바란다. 1997년 6월호 Linux Journal에 OSS/Linux 관련 기사를 저자가 작성한 적이 있다.

6.30 Sox/Play/Vplay reports "invalid block size 1024"

SNDCTL_DSP_GETBLKXIZE ioctl이 되돌려주는 결과가 4096 보다 큰지를 (부정확하게) 점검하는 일부 사운드 연주 프로그램의 경우, 버전 1.3.67에서 사운드 드라이버의 변화로 인하여 못쓰게 되버렸다. The latest sound driver versions have been fixed to avoid allocating fragments shorter than 4096 bytes which solves this problem with old utilities.

6.31 사운드 드라이버 모듈을 로드할 때마다 믹서 세팅이 리셋된다.

사운드 드라이버를 탈착식 모듈로 만든 다음 kerneld를 사용하여 자동으로 로드, 언로드 (unload)할 수 있다. 여기에 한가지 문제가 있을 수 있다. 커널이 다시 로드될 때마다 믹서 세팅이 디폴트 값으로 되돌아 가버리는 것이다. 일부 사운드 카드의 경우 소리가 너무 크거나 (예: SB16) 또는 너무 작을 수 있다. Markus Gutshke (gutschk@uni-muenster.de)은 이 문제의 해결책을 제시하였다. /etc/conf.modules 파일에 아래의 것을 추가하라:

options sound dma_buffsize=65536 && /usr/bin/setmixer igain 0 ogain 0 vo

이렇게 함으로써 사운드 드라이버가 로드 되자마자 곧바로 믹서 프로그램 (이 경우에는 setmixer)이 실행될 것이다. dma_buffersize는 옵션 명령이 명령행 옵션을 요구하기 때문에 필요한 dummy value 이다. 필요할 경우 믹서 프로그램과 게인 세팅 (gain setting)을 맞추기 위해 위의 내용을 변경하라.

사운드 드라이버를 커널 속에 포함시켰을 경우, 믹서 게인의 세팅을 부트할 때 하고자 한다면 /etc/rc.d/rc.local 과 같은 시스템 시작 파일의 내용을 수정하여 부트할 때 믹서 프로그램을 부르도록 할 수 있다.

6.32 루트의 권한을 가지고 있을 경우에만 사운드를 기록할 수 있다.

버전 2.0.x이 커널에 있던 Readme.linux 파일의 디바이스 파일 생성 스크립트는 루트 (root) 만이 디바이스를 읽을 수 있도록 되어 있다. 이것은 잠재적인 보안 구멍 (potential security hole)을 틀어막기 위한 것이다. 네트워크 환경에서 외부 사용자가 사운드 카드와 마이크로폰 그리고 도청장치 (eavesdrop)를 사용하여 리눅스 PC에 로그인 하는 것을 상상할 수 있다. 이러한 걱정을 하지 않는다면 스크립트의 권한 (permission) 관련 부분을 고쳐 사용하면 된다.

스크립트를 고치지 않고 실행시킨다면 일반사용자의 사운드 파일 연주는 허용된다. 이것은 보안의 위험 정도는 아니지만 약간 성가실 수는 있다.

6.33 IBM ThinkPad 의 사운드 장치가 지원되는가?

IBM ThinkPad laptop computer의 mwave sound card를 리눅스에서 사용하고 싶다면 /usr/src/linux/Documentation/sound/mwave을 참고하기 바란다.

6.34 사운드 카드에 믹서가 없어서 응용프로그램이 작동하지 않는다

일부 구형의 8 비트 사운드블라스터 카드에는 믹서 회로가 없다. 일부 사운드 응용프로그램은 믹서 장치를 열수 없다는 가정을 하지 않기 때문에 제대로 작동하지 않는 것이다. Jens Werner ( werner@bert.emv.ing.tu-bs.de)에 의하면 /dev/mixer/dev/null에 링크 시켜놓는 속임수를 쓰면 문제가 해결된다고 한다.

6.35 SB16 CT4170와 관련된 문제

Scott Manley ( spm@star.arm.ac.uk)에 의하면:

새로운 형태의 사운드블라스터 카드가 있는 것으로 보인다. SB16으로 판매 되었으며 카드에 표시된 모델 번호는 CT4170 이었다. 이 놈에는 DMA 채널이 하나 뿐이라서 16 비트 DMA 사용에 문제가 있다. 해결책은 두번째 DMA를 1로 지정하는 것이다. 그러면 제대로 작동할 것이다.

6.36 사운드 카드에 MIDI 키보드 연결은 어떻게 하나

Kim G. S. OEyhus ( kim@pvv.ntnu.no)에 의하면:

사운드 카드의 미디 입력 단자에 마스터 키보드의 미디 출력 단자를 어떻게 연결하는지 알아보려고 사운드 관련 문서와 인터넷을 뒤져 보았지만 아무런 소득도 없었다. 문제는 둘 다 같은 장치를, /dev/midi, 사용한다는 것이다. 최소한 OSS 사운드 시스템에서는 그렇다. 그래서 공유하는 방법을 찾아냈다. 이렇게 하면 완벽하게 미디를 지원하는 매우 간단한 신디사이저가 된다.

CONNECTING A MIDI MASTER-KEYBOARD DIRECTLY TO A SOUNDCARD WITH MIDI

미디 마스터 키보드에는 신디사이저가 없고 단지 미디 출력 단자 만이 있을 뿐이다. 적당한 케이블을 이용하면 대부분의 사운드카드에서 제공하는 15-pin D-SUB 포트에 미디 출력 단자를 연결할 수 있다.

이런 키보드를 이용하면 미디 신디사이저 장치를 제어할 수 있다. 따라서 키보드로 제어하는 간단한 신디사이저가 되는 것이다.

아래의 프로그램을 컴파일 한 후 실행 시킨다. 컴파일 방법은 gcc -o prog prog.c 라고 하면 된다.

#include <fcntl.h>

main()
{
  int fil, a;
  char b[256];

  fil=open("/dev/midi", O_RDWR);
  for(;;)
    {
      a=read(fil, b, 256);
      write(fil, b, a);
    }
}

6.37 IRQ 15 와 Ensoniq PCI 128의 문제

Matthew Inger ( mattinger@mindless.com)에 의하면:

Ensoniq PCI 128 카드를 제대로 작동시키는데 필요한 정보.

문제는 이 카드가 플러그앤플레이에 의해 인터럽트 15를 기본적으로 사용하려 한다는 것이다. 그러나 이는 세컨더리 ide 콘트롤러가 사용하고 있고 다른 장치와 공유할 수 없는 것이다. 따라서 es1370 카드가 사용할 인터럽트를 강제로 바꾸어야 한다 (윈도즈에서 사용하는 인터럽트 11을 사용하게 한다).

내가 한 것은:

a) BIOS에서 플러그앤플레이 OS는 없다고 설정한다. 나의 경우는 이러한 설정이 advanced 옵션에 있었다.

b) 바이오스의 PCI 세팅에서 인터럽트 15를 leagcy ISA devices로 설정한다. 나의 경우 advanced 옵션에 PCI 세팅 메뉴가 있었다. 그곳의 Resource Exclusion area에서 설정하였다.

다시 리눅스로 부팅하면 사운드를 사용할 수 있을 것이다. (부팅 메세지에 어떤 말이 나왔는지는 기억할 수 없다). 안전하게 sndconfig를 재 실행시킨 후 테스트 메세지를 플레이 시켜보니 소리가 그렇게 좋지는 않았지만 되기는 되었다. 그러나 CD를 돌려보니 완벽하게 연주 되었다.

윈도우즈 대해서는 걱정할 필요가 없다. ISA 모뎀과 사운드 카드를 설치하여 시험해 본 결과 아무런 문제없이 작동하였다.

문제는 여러분의 BIOS가 나의 것과 다를 수 있다는 것이다. 그러나 위 두가지 항목에 대한 설정을 찾아서 하기만 하면 된다. 행운을 바란다.

6.38 Where can I get freely available MIDI patches to run SoftOSS?

SoftOSS는 커널 사운드 드라이버에 포함되어 있는 software-based 웨이브테이블 신디사이저이며 Gravis Utrasound 카드와 호환된다. 이 드라이버를 작동시키려면 GUS 호환 미디 패치 파일이 필요하다. 커널 문서에 "public domain MIDIA patchset available from several ftp sites"라는 말이 있다.

4Front Technologies의 웹페이지 http://www.opensound.com/softoss.html에 설명에 따르면 ftp://archive.cs.umbc.edu/pub/midia/instruments.tar.gz에서 내려받을 수 있다.


다음 이전 차례