· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Sound-HOWTO

리눅스에서 사운드는 어떻게

리눅스에서 사운드는 어떻게

Jeff Tranter, tranter@pobox.com

v1.20, 1999년 3월 24일 유성태 alloying@nownuri.net 1999년 6월 30일
이 글은 리눅스의 사운드 지원에 관한 것이다. 지원되는 하드웨어와 커널 드라이버를 어떻게 구성(configure)하는지 그리고 빈도가 높은 질문에 대한 답변 등이 포함될 것이다. 이 글의 목적은 새로운 사용자의 수준을 좀 더 빨리 어느정도 이상으로 끌어올리고 또한 뉴스그룹과 메일링 리스트에 폭주하는 질문을 줄이고자 하는 것이다.

1. 시작하면서

이 글은 Linux Sound HOWTO 문서이다. 리눅스에서의 사운드 지원을 위해 필요한 설정과 설치에 관한 모든 것을 다루고 있으며 가까이에 두고서 참고자료로 활용 할 수 있을 것이다. 리눅스에서 사운드 카드 사용과 관련하여 자주 질문되는 문제에 대한 답변을 담고 있으며 사운드 카드와 컴퓨터 음악등에 관련된 다양한 주제에 대한 정보는 참고문헌을 읽어보기 바란다.

이 글에서 다루는 내용은 리눅스에서 사운드 카드를 사용하는 방법에 대한 것이다. 사운드 카드 또는 컴퓨터 음악등에 대한 일반적인 내용은 참고문헌의 자료들을 참고하기 바란다.

1.1 감사의 말

이 글의 많은 부분이 사운드 드라이버 소스 코드와 함께 제공된 문서를 참고하였으며 이를 작성한 Hannu Savolainen ( hannu@opensound.com)에 감사의 말을 전하고자 한다. 뿐만 아니라 Alan Cox 씨와 그 외 리눅스 커널 사운드 드라이버와 유틸리티를 개발한 많은 다른 사람들에게도 감사를 표한다.

그리고 SGML-Tools 패키지(이전 이름:Linuxdoc-SGML) 덕분에 이 HOWTO 문서가 여러가지 형식의 문서로 변환이 가능하게 되었음을 고맙게 생각한다.

1.2 이 문서의 새로운 개정판

이 문서의 새로운 개정판은 정기적으로 comp.os.linux.answers 뉴스그룹에 게시된다. 또한 ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/를 비롯한 여러군데의 anonymous ftp 사이트에서도 찾을 수 있을 것이다.

http://metalab.unc.edu/LDP을 포함한 많은 웹사이트에서 하이퍼텍스트 형식의 리눅스 HOWTO 문서를 찾을 수 있을 것이다. CD-ROM으로 제공되는 리눅스 배포판에는 HOWTO 문서가 포함되어 있으며 /usr/doc/ 에서 찾을 수 있다. 그리고 인쇄된 HOWTO 문서를 살 수도 있다. 때로는 여러분이 입수한 HOWTO 문서가 오래된 것일 수도 있다. 문서에 적혀 있는 날짜가 6개월 이상 지난 것이라면 아마도 내용이 개정된 새로운 것을 인터넷을 통하여 구할 수 있을 것이다.

인터넷은 항상 변하고 있다. 따라서 이 문서에 수록된 모든 web, ftp 링크 또한 변할 수 있음을 주지하기 바란다.

이 문서는 아래의 몇가지 언어로 번역되어 있다.

중국어: http://www.linux.org.tw/CLDP/Sound-HOWTO.html

불어: http://www.freenix.org/unix/linux/HOWTO/

일본어: http://yebisu.ics.es.osaka-u.ac.jp/linux/

한국어: http://kldp.org/HOWTO/html/Sound/Sound-HOWTO.html

러시아어: http://www.phtd.tpu.edu.ru/~ott/russian/linux/howto-rus/Sound-HOWTO.html

스페인어: ftp://ftp.insflug.org/es

이 문서를 포함한 대부분의 HOWTO 문서들을 http://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/ 에서 찾을 수 있다.

만일 여러분이 또 다른 언어로 이글을 번역한다면 저자에게도 그 사실을 알려주기 바란다. 그러면 이 글의 다음 개정판에 여러분의 번역판에 대하여 언급할 것이다.

1.3 Feedback

여러분들이 제안하고 싶은 것이나 수정해야 할 것이 있다면 나에게 보내달라, tranter@pobox.com, 그러면 다음 개정판에 그 내용을 포함 시키도록 할 것이며, 그렇게 하므로서 이 문서이 활용도는 더 높아질 것이다.

저자는 리눅스와 사운드 카드에 대한 일반적인 질문에 최선을 다하여 답변하려 노력하고 있다. 그러나 질문을 하기전에, 이 HOWTO를 모두 읽어보라, 그 후에도 여전히 해답을 찾을 수 없다면 여러분의 문제에 대한 자세한 내용을 나에게 보내달라. 그리고 리눅스 이외의 오퍼레이팅 시스템에서 사운드 카드를 어떻게 사용하는지에 대한 질문은 정중히 사절한다.

이 문서를 CD-ROM에 담거나 또는 인쇄본의 형태로 공개한다면 저자에게도 그것을 제공해주면 고맙게 생각할 것이다. 저자의 우편주소를 모를 경우 메일을 보내면 알려주겠다. 또한 Linux Documentation Porject에 기증하는 것도 한 번 고려해 달라. 더 자세한 것은 Linux HOWTO 코디네이터인 Tim Bynum ( linux-howto@metalab.unc.edu) 과 접촉해보라.

1.4 Distribution Policy

Copyright (c) 1995-1999 by Jeff Tranter. This document may be distributed under the terms set forth in the LDP license at http://metalab.unc.edu/LDP/COPYRIGHT.html.

2. 사운드 카드 기술 (Sound Card Technology)

이 글의 뒤에 사용될 개념을 이해하는데 도움을 주기 위해 컴퓨터 오디오 기술에 관한 매우 개략적인 설명을 하겠다. 더 많을 것을 배우려면 디지털 오디오 또는 디지탈 신호 처리에 관한 책을 참고 해야할 것이다.

소리는 아날로그 (analog) 이다; 임의의 소리는 정해진 연속적인 범위내의 임의의 값에 해당한다. 컴퓨터는 디지털 (digital) 이다; 컴퓨터는 불연속적인 (단속적인) 값을 다루기를 좋아한다. 사운드 카드는 Analog to Digital Converter (A/D 또는 ADC) 이라고 하는 장치를 사용한다. 이것이 하는 역할은 아날로그인 소리 (정확하게는 그기에 해당하는 전압) 를 메모리에 저장할 수 있는 디지털 또는 수치값으로 변환시키는 것이다. 비슷하게, Digital to Analog Converter (D/A 또는 DAC) 는 수치값을 아날로그 전압으로 바꾸어 주며 우리는 이를 스피커를 통하여 들을 수 있는 것이다.

샘플링 (sampling) 이라고 알려져 있는 아날로그를 디지털로 변환 시키는 과정은 약간의 에러를 수반한다. 샘플링된 신호가 원음에 얼마나 가까운가를 결정짓는 두가지 요소가 있다. 그 첫번째는 샘플링 속도 (Sampling rate) 이며 단위 시간당 얻어진 샘플의 갯수를 나타낸다 (일반적으로 samples per second 또는 Hertz 로서 표시한다). 샘플링 속도가 낮으면 원음을 정확하게 나타내기 어렵다. 두번째는 샘플 크기 (sample size) 이며 하나의 샘플을 표현하기 위해 사용되는 값의 범위를 의미한다. 일반적으로 비트 (bits) 로서 표시한다. 샘플 크기가 크면 클수록 디지털 신호는 더 정확해질 정확해질 것이다.

사운드 카드는 대개 8 또는 16 비트의 샘플 크기와 4000 에서 44000 Hertz 사이의 샘플링 속도를 사용한다. 샘플은 하나의 채널(mono) 또는 두개의 채널(stereo)을 포함할 수 있다.

FM Synthesis 소리를 만들어 내는 좀 오래된 기술이다. 이 기술은 여러가지 파형(sine, triangle, square 등)을 결합하는데 그 바탕을 두고 있다. FM synthesis는 D/A 변환에 비해 하드웨어적인 측면에서는 간단 하지만 프로그래밍 하기가 어렵고 유연성이 떨어진다. 많은 사운드 카드가 더 오래된 카드 및 소프트웨어와의 호환성을 위해 FM synthesis를 제공한다. 몇가지 독립적인 소리생성기 (sound generator) 또는 voices가 대개 제공된다.

Wavetable Synthesis는 D/A 변환의 유연성과 FM synthesis의 다중 채널(multiple channel) 기능을 결합한 것이다. 이 기술을 이용하면 CPU에 부담을 적게 주면서 동시에 디지털화된 목소리(voice)를 메모리에 저장하여 재생 하거나 또는 수정할 수 있다. 현재의 기술을 채용한 사운드 카드는 모두 wavetable synthesis 기능을 제공한다.

대부분의 사운드 카드는 여러가지 음원으로부터 얻어진 신호를 mixing (믹싱), 합성하는 기능과 함께 gain level을 조절하는 기능을 제공한다.

MIDI란 Musical Instrument Digital Interface의 약자이다. 전자악기를 외부에서 제어하기 위한 하드웨어 및 소프트웨어의 표준 프로토콜이다. 전자오르간의 건반을 누르는 등과 같은 어떤 사건은 MIDI 버스(bus)를 통하여 전달되며 MIDI 파일로 저장하여 다시 편집하거나 재생할 수 있다. 많은 사운드 카드가 MIDI 인터페이스를 제공하며, 그렇지 않은 카드라 하더라도 카드 자체의 기능을 이용하여 MIDI 파일을 연주할 수 있다.

MOD 파일은 컴퓨터 음악을 위한 공통의 파일 형식이다. 연주될 음표에 대한 정보 뿐만 아니라 악기 (또는 목소리)로부터 얻어진 디지털 샘플까지도 담을 수 있다. MOD 파일은 Amiga computer로 부터 유래되었지만 적당한 소프트웨어만 있으면 리눅스를 포함한 여타 시스템에서도 연주될 수 있다.

3. 지원되는 하드웨어

이 장에서 현재 리눅스에서 지원되는 사운드 카드와 인터페이스의 종류를 이야기 하겠다. 여기에 있는 정보는 이 글을 쓰는 당시의 최신 리눅스 커널(2.2.4)에 바탕을 둔 것이다. 이 문서의 내용은 표준 리눅스 커널에 포함되어 있는 사운드 드라이버에 대한 것이다. 리눅스에서 사용할 수 있는 다른 사운드 드라이버도 있다 (또 다른 사운드 드라이버 절을 참고하기 바란다).

지원되는 사운드 카드에 대한 최신 정보를 원한다면 리눅스 커널 소스에 포함되어 있는 파일들을 읽어보기 바란다. 일반적으로 /usr/src/linux/Documentation/sound 디렉터리에 있다.

이 정보는 Intel 플랫폼에서 작동하는 리눅스에 대하여 적용 가능하다.

Alpha 플랫폼의 경우 대부분의 사운드 카드를 사용할 수 있다. 그러나 일부 사운드 카드의 경우 그것들이 비록 i386 머쉰에서 완벽하게 작동한다 하더라도 Alpha 시스템에서는 다른 장치의 I/O 포트와 충돌을 일으킬 수 있다. 그래서 해보기 전에는 어떤 사운드 카드가 제대로 작동할지, 그렇지 않을지를 말하기 어렵다.

PowerPC 버전의 리눅스에서는 사운드 드라이버가 아직 제대로 돌아가지 않는다고 한다. 그러나 미래에는 지원될 것이다.

MIPs에 이식된 리눅스의 경우, 커널내에 사운드 기능을 집어 넣을 수 있다. 그러나 일부 MIPs 머쉰은 EISA 슬롯을 가지고 있거나 사운드 장치를 내장하고 있다. Linux-MIPs 그룹은 사운드 지원을 추가하는 것에 관심을 갖고 있다고 저자에게 이야기하였다.

리눅스 커널에는 리눅스의 Atari 와 Amiga 버전에 대한 별도의 드라이버가 포함되어 있다. 따라서 (Intel 플랫폼상의 사운드 드라이버의 compatible subset으로서) 이들 머쉰에 내장된 사운드 하드웨어를 사용할 수 있다.

SPARC에 이식된 리눅스의 경우, 일부 썬 워크스테이션 모델에 대해서는 사운드가 지원된다. 내장된 사운드 장치는 작동하지만 외장 DSP 오디오 박스의 경우는 썬에서 스펙을 공개하기 않았기 때문에 지원하지 않는다고 들었다.

3.1 사운드 카드

리눅스 커널 사운드 드라이버에 의해 지원되는 사운드 카드는 다음과 같다. 아래의 목록 중에서 일부는 사운드 카드의 모델을 표기한 것이 아니라 오디오 칩셋을 표기한 것이다. 아래의 목록이 완벽한 것은 아니다. 아래 목록에 있는 사운드 카드와 호환되는 것들은 열거하지 않았다. 일부 제조업체의 경우 카드의 디자인을 주기적으로 변경하여 결과적으로는 이전 카드와 호환성이 떨어지는데도 계속해서 같은 모델로 판매하기도 하기 때문에 혼란을 더하는 경우도 있다.

  • 6850 UART MIDI Interface
  • AD1816/AD1816A based cards
  • ADSP-2115
  • ALS-007 based cards (Avance Logic)
  • ATI Stereo F/X (no longer manufactured)
  • Acer FX-3D
  • AdLib (no longer manufactured)
  • Audio Excel DSP 16
  • AudioDrive
  • CMI8330 sound chip
  • Compaq Deskpro XL onboard sound
  • Corel Netwinder WaveArtist
  • Crystal CS423x
  • ESC614
  • ESS1688 sound chip
  • ESS1788 sound chip
  • ESS1868 sound chip
  • ESS1869 sound chip
  • ESS1887 sound chip
  • ESS1888 sound chip
  • ESS688 sound chip
  • ES1370 sound chip
  • ES1371 sound chip
  • Ensoniq AudioPCI (ES1370)
  • Ensoniq AudioPCI 97 (ES1371)
  • Ensoniq SoundScape (and compatibles made by Reveal and Spea)
  • Gallant SC-6000
  • Gallant SC-6600
  • Gravis Ultrasound
  • Gravis Ultrasound ACE
  • Gravis Ultrasound Max
  • Gravis Ultrasound with 16 bit sampling option
  • HP Kayak
  • Highscreen Sound-Booster 32 Wave 3D
  • IBM MWAVE
  • Logitech Sound Man 16
  • Logitech SoundMan Games
  • Logitech SoundMan Wave
  • MAD16 Pro (OPTi 82C928, 82C929, 82C930, 82C924 chipsets)
  • Media Vision Jazz16
  • MediaTriX AudioTriX Pro
  • Microsoft Windows Sound System (MSS/WSS)
  • MiroSOUND PCM12
  • Mozart (OAK OTI-601)
  • OPTi 82C931
  • Orchid SW32
  • Personal Sound System (PSS)
  • Pinnacle MultiSound
  • Pro Audio Spectrum 16
  • Pro Audio Studio 16
  • Pro Sonic 16
  • Roland MPU-401 MIDI interface
  • S3 SonicVibes
  • SY-1816
  • Sound Blaster 1.0
  • Sound Blaster 2.0
  • Sound Blaster 16
  • Sound Blaster 16ASP
  • Sound Blaster 32
  • Sound Blaster 64
  • Sound Blaster AWE32
  • Sound Blaster AWE64
  • Sound Blaster PCI 128
  • Sound Blaster Pro
  • Sound Blaster Vibra16
  • Sound Blaster Vibra16X
  • TI TM4000M notebook
  • Terratec Base 1
  • Terratec Base 64
  • ThunderBoard
  • Turtle Beach Maui
  • Turtle Beach MultiSound Classic
  • Turtle Beach MultiSound Fiji
  • Turtle Beach MultiSound Hurricane
  • Turtle Beach MultiSound Monterey
  • Turtle Beach MultiSound Pinnacle
  • Turtle Beach MultiSound Tahiti
  • Turtle Beach WaveFront Maui
  • Turtle Beach WaveFront Tropez
  • Turtle Beach WaveFront Tropez+
  • VIA chip set
  • VIDC 16-bit sound
  • Yamaha OPL2 sound chip
  • Yamaha OPL3 sound chip
  • Yamaha OPL3-SA1 sound chip
  • Yamaha OPL3-SA2 sound chip
  • Yamaha OPL3-SA3 sound chip
  • Yamaha OPL3-SAx sound chip
  • Yamaha OPL4 sound chip

호환가능에 대해서: 대부분의 사운드 카드가 "사운드블래스터 호환" 이라고 주장하더라도 현재 판매된 사운드 카드중에서 리눅스 사운드블래스터 드라이버와 충분히 호환되는 것은 거의 없다. 이들 카드들은 일반적으로 MSS/WSS 또는 MAD16 드라이버를 사용할 경우 더 잘 작동한다. Creative Labs에 의해 만들어진, Creative's custom chips를 (예, SoundBlaster16 Vibra) 사용하는, 진짜 사운드블래스터 카드나 또는 MV Jaz16 그리고 ESS688/1688 based 카드 만이 사운드블래스터 드라이버를 제대로 사용할 수 있다. "SoundBlaster Pro compatible 16 bit sound card"에 사운드블래스터 드라이버를 적용하려는 것은 시간 낭비일 가능성이 크다.

리눅스 커널은 일부 사운드 카드(예: ProAudioSpectrum 16)가 제공하는 SCSI 포트와 일부 CD-ROM 드라이브(예: Soundblaster Pro)만을 위한 전용 인터페이스를 지원한다. 더 자세한 정보는 리눅스 HOWTO 문서인 SCSI HOWTOCDROM HOWTO를 참고하기 바란다.

일부 사운드 카드는 조이스틱 포트도 함께 제공한다. 이를 포함하여 조이스틱 포트에 대한 드라이버가 커널 2.2에 포함되어 있다.

SCSI, CD-ROM, joystick 그리고 사운드 드라이버는 커널에서 완전히 서로 독립적이라는 것을 주지하기 바란다.

3.2 또 다른 사운드 드라이버

리눅스 커널의 사운드 부분은 원래 Hannu Savolainen이 작성하였다. 그리고서 Hannu는 오픈 사운드 시스템을 개발하게 되었다. 이는 4Front Technologies에서 판매하는 상용의 사운드 드라이버이며 여러가지 유닉스 시스템에서 사용할 수 있다. 레드햇 소프트웨어는 Alan Cox씨로 하여금 커널의 사운드 드라이버를 개선시키면서 또한 완전한 모듈로 만들도록 후원하였다. 그외 많은 사람들이 버그를 고치고 새로운 종류의 사운드 카드를 위한 드라이버를 개발하는데 기여하였다. 레드햇에서 발표한 5.0에서 5.2까지의 배포본에는 커널의 표준 드라이버 대신에 이들 수정된 드라이버가 포함되었다. 현재는 모두 커널에 통합된 상태이다. Hannu 또한 여전히 상용 드라이버의 코드를 정기적으로 제공하고 있긴 하지만 현재 커널의 사운드 드라이버 부분을 관리하고 있는 사람은 Alan Cox이다.

4Front Technologies에서 판매하는 상용의 오픈 사운드 시스템 드라이버는 보다 용이하게 설정할 수 있고, 더 많은 종류의 (특히 신형의) 사운드 카드를 지원한다. 또한 커널의 표준 사운드 드라이버에 맞추어서 만들어진 응용프로그램도 사용할 수 있다. 불리한 점이라면 돈을 주고 사야하며 소스 코드를 볼 수 없다는 것이다. 구입 여부를 결정하기 전에 평가판을 내려받아서 시험해 볼 수 있다. 더 자세한 것은 4Front Technologies의 웹사이트인 http://www.opensound.com을 참고하기 바란다.

Jaroslav Kysela 와 몇몇 사람들은 커널의 Gravis UltraSound 카드 드라이버를 대체할 수 있는 또 다른 사운드 드라이버를 작성하기 시작했다. 그러다가 프로젝트에 Advanced Linux Sound Architecture (ALSA) 라는 새로운 이름을 붙였다. 그리고 그 프로젝트의 결과는 커널의 사운드 드라이버를 대체할 수 있을 정도의 더욱 일반적 사용이 가능한 사운드 드라이버를 작성으로 이어졌다. ALSA 드라이버는 여러 종류의 많이 사용되는 사운드 카드를 지원하고, full duplex를 지원하며 완전히 모듈화 되어 있다. 그리고 커널의 사운드 아키텍쳐와 호환된다. ALSA 프로젝트의 웹사이트는 http://www.alsa-project.org 이다. "Alsa-sound-mini-HOWTO"에서 이 드라이버를 컴파일하고 설치하는 방법에 대하여 설명하고 있다.

Markus Mummert ( mum@mmk.e-technik.tu-muenchen.de)는 Turtle Beach MultiSound (classic), Tahiti 그리고 Monterey 사운드 카드의 드라이버 패키지를 제작하였다. 자료의 내용을 인용하면:

busy system에서도 동기성(sync)의 상실 없이 하드 디스크 기록/재생이 고품질로 이루어지도록 설계되었다. wave synthesis, MIDI 그리고 디지털 신호 처리(DSP) 등은 사용할 수 없다. 또한 기록과 재생이 동시에 이루어질 수 없다. 현재 VoxWare 대신 사용되며 1.0.9 와 1.2.1 사이의 몇몇 커널에서 시험하였다. 또한 UN*X SysV386R3.2 system에도 설치 가능하다.

http://www.cs.colorado.edu/~mccreary/tbeach를 참고하기 바란다.

Kim Burgaard ( burgaard@daimi.aau.dk)는 Roland MPU-401 MIDI 인터페이스의 디바이스 드라이버와 툴(utilities)을 제작하였다. Linux software map entry 에 있는 설명을 인용하면:

Roland MPU-401 호환 MIDI 인터페이스(Roland SCC-1 과 RAP-10/ATW-10 포함)의 디바이스 드라이버. Standard MIDI File player 와 recorder를 포함한 유용한 도구 모음.

버전 0.11a 이후로 몇가지 개선된 것이 있다. 그 중에서도 특히 IRQ 공유와 모듈로서 컴파일 가능한 점을 꼽을 수 있다. 또한 메트로놈 기능, 싱크로나이징 할 수 있는 가능성(예: 정확성을 유지하면서 단위 비트를 기초로한 그래픽), 진일보한 replay/record/overdub 인터페이스 등등을 들 수 있다.

ftp://metalab.unc.edu/pub/Linux/kernel/sound/mpu401-0.2.tar.gz 에서 찾을 수 있다.

리눅스에서는 사운드 카드를 amateur packet radio를 위한 변복조 장치(modem)로서 활용할 수 있다. 2.1 이상의 커널에는 SoundBlaster 및 Windows Sound System 호환 카드에 적용되는 드라이버를 포함하여 이를 지원하고 있으며 1200bps AFSK 와 9600 bps FSK packet protocol을 만족시킨다. 더 자세한 내용은 Linux AX25 HOWTO를 참고하라. (저자도 아마츄어 무선 기사이다, 호출신호는 VE3ICH).

3.3 PC Speaker

사운드 하드웨어를 따로 장착할 필요가 없는 사운드 드라이버가 있다; PC 내부의 스피커를 사용하는 것이다. 사운드 카드 드라이버와 소프트웨어적으로 거의 호환 가능하다. 그러나 소리의 질이 떨어지며 CPU에 부하를 더 많이 준다. 그 결과는 스피커에 따라 약간씩 다르다. 더 자세한 것은 드라이버와 함께 제공되는 문서를 보라.

아래의 ftp 사이트에서 찾을 수 있으며 마지막으로 갱신된 후로 시간이 좀 지난 상태이다. ftp://ftp.informatik.hu-berlin.de/pub/Linux/hu-sound/

3.4 병렬 포트

병렬 프린터 포트와 몇 가지 부품을 사용하여 D/A 변환이 가능하다. 이것은 PC 스피커 보다 소리의 질이 더 좋지만 여전히 CPU에 주는 부하는 크다. 위에서 언급한 PC Sound driver 패키지가 이를 지원하며 필요한 하드웨어등에 대한 안내서가 함께 들어있다.

4. 설치(Installation)

사운드를 지원하도록 리눅스를 설정하려면 다음 단계를 거쳐야 한다:

  1. 사운드 카드 설치
  2. (해당하는 겨우에만) Plug and Play 설정
  3. 사운드를 지원하도록 커널의 설정 및 생성
  4. 디바이스 파일의 생성
  5. 새로이 생성된 리눅스 커널로 부팅 및 작동 확인

레드햇 리눅스에는 sndconfig라는 유틸리티가 있으며, 이를 이용하면 대부분의 경우 사운드 카드를 감지하고 해당 드라이버를 로딩하기 위해 필요한 설정 파일을 만들어 준다. 레드햇 리눅스를 사용한다면 먼저 이를 이용해 보기 바란다. 그래서 제대로 된다면 이 장의 나머지 부분을 읽을 필요가 없다.

sndconfig를 이용하여 실해한 경우, 다른 리눅스 배포본을 사용하는 경우, 또는 무엇을 어떻게 하는지 더 자세히 알고 싶은 경우라면 다음 절에서 설명하는 각 단계를 읽어보기 바란다.

4.1 사운드 카드 설치

판매자에게 설치를 맡기거나 제조업체의 설치 설명서에 따라 설치하라.

오래된 사운드 카드는 IRQ, DMA 채널, 등의 세팅에 필요한 스위치나 점퍼를 가지고 있다. 정확하게 모른다면 공장에서 출하될 때 세팅된 채로(factory defaults) 사용하라. 다른 디바이스(예:ethernet 카드, SCSI 호스트 어댑터, 직렬 그리고 병렬 포트 등)와의 충돌을 피해야 한다.

일반적으로 DOS 에서 사용했던 I/O 포트, IRQ 그리고 DMA setting 을 사용해야 한다. 일부 경우에 (특히 PnP 카드) 다른 세팅을 사용할 필요가 있을 수도 있다. 몇 번의 실험이 필요할 것이다.

4.2 Plug and Play 설정

요즘의 사운드 카드는 대부분 플러그앤플레이 프로토콜을 이용하여 i/o 주소, 인터럽트, DMA 채널을 설정한다. 구형의 카드는 이런 설정이 고정되어 있거나 점퍼를 이용하여 바꾸도록 되어있다. 이런 구형의 카드를 사용한다면 이 절을 읽을 필요가 없다.

버전 2.2의 커널에서도 플러그앤플레이에 대한 지원이 완벽하지 않다. 대부분의 리눅스 배포본에 들어 있는 isapnp tools를 사용하는 것이 좋은 해결 방안이다. isapnp tools는 레드햇 웹사이트인 http://www.redhat.com/에서 내려받을 수도 있다.

먼저 여러분의 리눅스 배포본에 있는 문서를 점검하기 바란다. 플러그앤플레이를 지원하도록 이미 설정되어 있을 수도 있고, 또는 여기의 설명과는 약간 다를 수도 있다. 여러분이 직접 설정해야 할 경우 자세한 것은 isapnp tools의 맨 페이지를 참고하기 바란다. 일반적으로 거쳐야 할 과정을 간단히 설명하면:

  • pnpdump를 이용하면 모든 플러그앤플레이 장치의 가능한 설정을 알아낼 수 있으며 그 결과를 /etc/isapnp.conf 파일에 저장한다.
  • /etc/isapnp.conf 파일을 적당한 편집기로 읽어 들인 후, 사운드 카드에 대한 가능한 설정 중에서 시스템에 설치되어 있는 다른 장치와 충돌하지 않는 설정을 선택하여 코멘트 처리를 지운다. 선택한 설정의 마지막의 (ACT Y) 행에 있는 코멘트 처리를 그대로 두는 일은 없도록 한다.
  • 시스템이 부팅할 때 isapnp가 작동하는지 확인한다. 일반적으로 시스템 시작 스크립트에 의해 이루어진다. 시스템을 재부팅 시키거나 isapnp를 직접 실행시킨다.

isapnp tools를 사용할 수 없거나 사용하기를 원하지 않는다면 다른 선택도 가능하다. 마이크로소프트 윈도즈 95 또는 98에서 사운드 카드를 사용한다면 장치관리자를 이용하여 카드를 설정한 다음 LOADLIN 프로그램을 이용하여 리눅스로 부팅한다. 사운드 카드의 설정이 윈도즈와 리눅스 모두 같은지 확인한다.

도스에서 카드를 사용한다면 SoundBlaster16 PnP 카드와 함께 제공되는 icu utility를 사용할 수 있다. 그런 후에 LOADLIN 프로그램을 사용하여 리눅스로 부팅한다. 위에서와 마찬가지로 사운드 카드의 설정이 도스와 리눅스 모두 같은지 확인한다.

일부 사운드 카드 드라이버는 플러그앤플레이를 초기화 하는데 필요한 소프트웨어를 포함하기도 한다. 자세한 것은 카드 드라이버의 문서를 참고하기 바란다.

4.3 커널 설정(Configuring the Kernel)

리눅스를 처음 설치할 때 이미 컴파일된 커널을 사용하였을 것이다. 이들 커널에는 사운드 지원이 포함되어 있지 않은 경우가 종종 있다. 여러분이 필요로하는 드라이버를 포함하도록 커널을 다시 컴파일하는 것이 최선이다. 새로운 버전으로 커널을 업그레이드 하거나 또는 커널의 크기를 줄여서 필요한 메모리 자원을 줄이고자 할 때도 커널을 컴파일 해야 할 것이다. 사운드 카드가 제대로 작동하는 것을 확인한 후 사운드 드라이버를 모듈화 하기 위해 커널을 재컴파일 하고자 할 수도 있다.

Linux Kernel HOWTO는 커널 컴파일에 대한 자세한 정보를 제공한다. 여기서는 사운드 카드와 관련된 것에 대해서만 언급할 것이다.

사운드를 지원하도록 커널을 설정해 본적이 없다면 커널 사운드 드라이버에 포함되어 있는 관련 파일들을, 특히 여러분의 카드에 관련된 정보를, 읽어 보는 것이 좋다. 그 파일들은 커널 문서 디렉터리에 있으며 일반적으로 /usr/src/linux/Documentation/sound에 있다. 이 디렉터리가 없다면 매우 낮은 버전의 커널이거나 커널 소스 코드가 설치되어 있지 않은 경우이다.

커널을 설정하고 컴파일하는 일반적인 과정을 따라하면 된다. 커널을 설정하는 방법이 현재 세가지 있다. X 윈도우(X11)에서 멋있는 그래픽 화면으로 커널을 설정하려면 make xconfig 하면 되고. 텍스트 화면에서 메뉴 방식으로 커널을 설정하려면 make menuconfig 하면 되며, 예전부터 사용되던 명령행(command line) 입력 방식을 선호한다면 make config 하면 될 것이다.

커널을 설정할 때 사운드 카드의 종류도 선택해야 하고 드라이버 옵션도 선택해야 한다. 각 옵션에 대한 설명을 온라인 도움말로 제공하니 잘 읽어보고 적당한 옵션을 선택하기 바란다.

커널 설정을 한 후 컴파일하고 새로운 커널을 설치해야 한다. 이 과정은 Kernel HOWTO를 참고하기 바란다.

4.4 디바이스 파일의 생성

사운드 카드가 제대로 작동하기 위해서는 사운드 디바이스 파일을 만들 필요가 있다. 이들 파일은 일반적으로 리눅스 시스템을 처음에 인스톨할 때 이미 생성된다. 아래의 명령을 이용하여 간단히 점검할 수 있다. 출력이 아래와 같이 나오면 (출력되는 날짜는 바뀔 수 있다) 디바이스 파일에 대한 걱정은 거의 할 필요가 없다.

% ls -l /dev/sndstat
crw-rw-rw-   1 root     root      14,   6 Apr 25  1995 /dev/sndstat

디바이스 파일이 정확하게 생성되는 것과 그들 파일의 소유문제는 별개라는 것을 명심하라.

디바이스들이 제대로 작동하기 위해서는 그전에 커널 드라이버가 커널속에 로딩 또는 컴파일 되어 있어야 한다.

드문 경우이지만, 디바이스 파일이 잘못 되었다고 믿는다면 디바이스 파일을 만들 수 있다. 이를 위해 대부분의 리눅스 배포본에서 제공하는 /dev/MAKEDEV 스크립트를 이용할 수 있다.

여러분이 PC 스피커 사운드 드라이버를 사용할 경우 패키지에 따라오는 문서를 읽어 보면 어떤 종류의 디바이스 파일을 생성해야 할지 알 수 있을 것이다.

4.5 새로운 커널로 부팅하여 시험하기

여러분은 이제 새로운 커널로 부팅하여 사운드 드라이버를 테스트할 준비가 된 것이다. 새로운 커널을 설치하고 재부팅 하라 (물론 문제가 발생할 경우를 대비하여 이전의 커널을 보존해야 할 것이다).

부팅 동안에 다음과 비슷한 어떤 메세지가 화면에 나오는지 확인하라 (스크롤 속도가 너무 빨라서 읽을 수 없다면 부팅 후에 "dmesg" 명령으로 다시 볼 수 있다.):

Sound initialization started
<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete

이것이 여러분 카드의 종류 및 (만일 있다면) 점퍼 세팅과 맞아야 한다.

사운드 드라이버를 탈착식 커널 모듈로 만들었을 때는 (insmod sound trace_init=1 과 같이 하여 사운드 드라이버를 사용 가능하게 하지 않는 한) 위의 메세지가 나타나지 않는다는 것을 명심하라.

사운드 드라이버가 커널에 연결 (link) 될 때 Sound initialization started, Sound initialization complete 라는 메세지가 나타날 것이다. 이들 메세지가 나타나지 않는다면 커널에 사운드 드라이버가 없다는 뜻이다. 이 경우에는 사운드 드라이버를 포함하도록 컴파일된 커널이 실제로 작동중인지 확인해야 한다.

Sound initialization startedSound initialization complete 사이에 아무것도 표시되는 것이 없다면 인식된 사운드 디바이스가 아무것도 없다는 것을 의미한다. 거의 대부분, 사운드 드라이버가 정확하지 않거나, 카드가 지원되지 않거나, I/O 포트의 지정이 틀렸거나, 하드웨어 설정이 잘못된 (또는 되지 않은) PnP 카드인 경우 등이다.

부트할 동안 에러 또는 경고 메세지가 표시될 수도 있다. 사운드 드라이버 설정 후 첫번째 부팅 때 그러한 메세지가 표시되는지 그렇지 않은지 주의해서 지켜보라.

다음으로 device 파일인 /dev/sndstat를 읽어보라. 사운드 드라이버가 제대로 초기화 되었는지에 대한 추가 정보를 제공한다. 아래와 비슷한 내용을 볼 수 있을 것이다:

% cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root,
Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586)
Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586
Config options: 0

Installed drivers: 
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401

Card config: 
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0

Audio devices:
0: Sound Blaster 16 (4.13)

Synth devices:
0: Yamaha OPL-3

Midi devices:
0: Sound Blaster 16

Timers:
0: System clock

Mixers:
0: Sound Blaster

위의 명령이 에러 메세지를 보여줄 수도 있다. "No such file or directory" 라는 에러 메세지는 디바이스 파일을 정확하게 생성시킬 필요가 있음을 의미한다 (4.3 절을 보라). "No such device" 는 사운드 드라이버가 커널속에 로딩 또는 연결 (link) 되지 않았음을 의미한다. 4.2 절로 돌아가라.

/dev/sndstat 의 "Card config:" 부분에서 표시된 내용이 ( "(SoundBlaster at 0x220 irq 5 drq 1,5)" 와 같이) 괄호 속에 들어있다면 디바이스 설정은 되었지만 인식은 되지 않았다는 것을 의미한다.

이제 여러분은 간단한 사운드 파일을 연주할 준비가 된 셈이다. 사운드 출력의 기본적인 점검을 위해 사운드 샘플 파일을 구하여 사운드 디바이스로 보내보라. 예를 들어,

% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio

(위의 명령에서 ">"를 빼먹지 않았는지 확인하라.)

일반적으로 cat을 사용하는 것이 오디오 파일을 연주하는 올바른 방법이 아니라는 것을 명심하라. 단지 빨리 점검하기 위한 것일 뿐이다. 여러분은 적당한 (뒤에 설명할) 사운드 연주 프로그램을 구하고자 할 것이다.

이 명령은 /dev/sndstat의 audio devices 부분에 하나의 디바이스만 있어도 실행될 것이다. audio devices 부분에 아무것도 없다면 디바이스가 왜 인식되지 않았는지 점검해야 할 것이다.

위이 명령이 "I/O error" 를 표시한다면 "dmesg" 명령을 사용하여 커널 메세지를 한 번 읽어보라. 아마도 어떤 에러 메세지를 발견할 수 있을 것이다. 가능성이 높은 메세지는 "Sound: DMA (output) timed out - IRQ/DRQ config error?" 이다. 위의 메세지는 여러분이 드라이버에 알려준 사운드 카드의 interrupt가 실제로 사운드 카드에 설정되어 있는 interrupt 와 틀리다는 것을 의미한다. 대부분의 경우 드라이버에 설정해준 IRQ 와 DMA channel이 작동하지 않는다는 나타낸다. 이를 해결하는 가장 좋은 방법은 사운드 카드가 지원하는 모든 DMA 와 IRQ를 시험해 보는 것이다.

또 다른 가능성은, 디바이스와 그 디바이스를 위해 설정해준 드라이버가 호환되지 않는 것일 수도 있다. "SoundBlaster (Pro/16) compatible" 사운드 카드는 사운드블래스터 드라이브와 호환되지 않는 경우와 같은 것이다. 이 경우에는 여러분의 사운드 카드가 어떤 디바이스와 호환되는지 알아야한다 (이를 위해 예를 든다면, comp.os.linux.hardware 뉴스그룹에 물어보라).

몇가지 샘플 사운드 파일을 ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z 에서 구할 수 있다.

이제 녹음(sound recording)을 확인해 보자. 소리를 입력할 수 있다면 다음과 같은 명령을 사용하여 테스트해 볼 수 있다:

# record 4 seconds of audio from microphone
EDT% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# play back sound
% cat sample.au >/dev/audio

위와 같이 하기 위해서는 사운드 카드에 연결된 마이크가 필요하고 마이크에 대고 말을 해야한다. 마이크를 입력 장치로서 세팅하고 녹음 게인 레벨을 조절하려면 믹서 프로그램이 필요할 수도 있다.

이들 시험을 통과하면 여러분의 사운드 D/A, A/D 하드웨어와 소프트웨어가 제대로 작동한다고 믿어도 된다. 문제가 있다면 다음 장을 참고하라.

4.6 문제해결(Troubleshooting)

이 HOWTO 문서에서 지시한대로 따라 했는데도 문제가 있다면 점검해야 할 것이 몇가지 있다. 점검해야 할 사항을 간단한 것 부터 복잡한 순서로 열거하겠다. 점검 사항에 문제가 있다면 다음 단계로 넘어가기 전에 그 문제부터 해결하라.

단계 1: 현재 작동하는 커널이 조금전에 여러분이 컴파일한 커널인지 확인하라.

현재 실행되고 있는 커널이 사운드를 지원하도록 컴파일된 커널인지 알고 싶으면 커널에 찍혀 나오는 날짜(date stamp)를 점검해 보라. uname 명령으로 이를 확인할 수 있다:

% uname -a
Linux fizzbin 2.2.4 #1 Tue Mar 23 11:23:21 EST 1999 i586 unknown

또는 /proc/version 파일을 읽어보라:

% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT

날짜가 여러분이 커널 컴파일한 시기와 일치하지 않는다면 현재 실행되고 있는 커널은 이전 것이다. 정말 리부트 했는가? 여러분이 LILO를 사용한다면 LILO를 다시 설치하였는가 (대개는 LILO를 설치하기 위해 lilo를 실행)? 플로피로서 부팅한다면 새로운 부트 플로피를 만들었는가 그리고 부팅할 때 그것을 사용하였는가?

단계 2: 커널 사운드 드라이버가 컴파일 되었는지 확인하라.

이를 점검하는 가장 쉬운 방법은 앞에서 설명하였듯이 /dev/sndstat의 출력을 보는 것이다. 출력이 기대와 다르다면 커널 설정에서 뭔가 잘 못된 것이다. 커널 설정과 컴파일등을 처음부터 다시 시작하라.

단계 3: 부팅하는 동안 커널이 사운드 카드를 감지 하였는가?

부팅될 때 커널이 감지 되었는지 확인하라. 부팅시 화면에 표시되는 메세지를 유심히 보라. 스크롤 속도가 빨라서 확인하기 곤란하다면 dmesg 명령으로 다시 볼 수 있다:

% dmesg

또는

% tail /var/log/messages

여러분의 사운드 카드를 발견하지 못하였다면 뭔가 잘못된 것이다. 사운드 카드가 정확하게 인스톨 되었는지 확인하라. DOS에서 여러분의 사운드 카드가 작동한다면 하드웨어에는 문제가 없다고 믿어도 된다. 커널 설정에 문제가 있을 것이다. 사운드 카드를 엉뚱한 걸로 지정했거나 변수 설정이 틀렸을 수도 있다. 또는 여러분의 사운드 카드가 리눅스 커널 사운드 드라이버와 호환되지 않을 수도 있다.

한가지 가능성은 사운드 카드가 도스 드라이버로서 초기화 해야 할 필요가 있는 호환 카드중의 하나일 경우이다. 도스로 부팅하여 도스용 사운드 드라이버를 로딩하라. 그런 후에 Control-Alt-Delete를 사용하여 리눅스로 부팅하라. 사운드 카드의 I/O address, DMA 그리고 IRQ 세팅이 리눅스의 경우와 도스의 경우가 일치하는지 확인하라. 여러분의 카드 종류에 따른 설정에 대한 몇가지 힌트를 Readme.cards 파일에서 찾을 수 있을 것이다.

지원되는 카드 목록에 여러분의 사운드 카드가 없다면 리눅스 드라이버가 그것을 지원하지 않을 가능성도 있다. 이 문서의 끝부분에 있는 몇가지 참고문헌이 여러분에게 도움이 될 수도 있다.

단계 4: dsp 디바이스로부터 데이타를 읽을 수 있는가?

앞서 언급한 dd 명령을 사용하여 /dev/audio 디바이스로부터 읽기를 시도해 보라. 에러 없이 실행되어야 한다.

이것이 제대로 작동하지 않는 다면 가능성 있는 원인은 디비이스 파일이다. /dev 디렉토리에 있는 디바이스 파일의 주, 부 번호 (major and minor number)가 정확한지 확인하라. 디바이스 파일에 대한 읽기와 쓰기 권한을 점검하라.

상당히 가능성 없긴 하지만 하드웨어 문제일 수도 있다. 하드웨어 문제인지 확인하기위해 가능하다면 도스에서도 점검해 보라.

여전히 문제가 있다면 마지막으로 시도해 볼 것들이 있다:

  • 주의를 기울여 이 HOWTO 문서를 다시 한 번 읽어보라.
  • 참고문헌을 읽어보라, 특히 관련된 리눅스 커널 소스에서 제공하는 문서 파일들을 참고하기 바란다.
  • comp.os.linux 또는 다른 뉴스그룹에 질문해 보라. (comp.os.linux.hardware 가 좋다; 이들 그룹은 매우 혼잡하므로 제목에 "sound" 를 넣어두면 전문가들이 읽도록 하는데 도움이 될 것이다)
  • 적절한 검색어를 이용하여 web/Usenet search engine을 사용하면 좋은 결과를 빨리 얻을 수 있다. 그러한 search engine (검색엔진)의 하나로 http://www.altavista.com 를 들 수 있다
  • 최신 리눅스 커널을 사용해 보라 (최후의 수단이며, 최신의 개발 커널은 불안정할 수도 있다)
  • 사운드 드라이버 저자에게 메일을 보내라
  • 사운드 HOWTO 저자에게 메일을 보내라
  • fire up emacs and type Esc-x doctor :-)

5. 사운드를 지원하는 응용프로그램

몇가지 응용프로그램의 종류에 대해서 이야기 하겠다. Linux Software Map, Internet archive sites 그리고 여러분의 리눅스 CD-ROM을 점검해 보라.

최소한 여러분은 다음에 열거하는 사운드 응용프로그램을 구하고자 할 것이다:

  • audio file format conversion utility (예: sox)
  • mixer utility (예: aumix or xmix)
  • digitized file player/recorder (예: play or wavplay)
  • MOD file player (예: tracker)
  • MIDI file player (예: mp)

이들 응용프로그램의 대부분은 text-based 버전 뿐만 아니라 GUI-based 버전도 있다. 여러분들이 사용하고 싶어할 더욱 esoteric한 응용프로그램 (예: 음성 합성 과 인식) 도 있다.

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 (여러개 사용하기)가 허용되지 않는다:

  • GUS (driver limitation)
  • MAD16 (hardware limitation)
  • AudioTrix Pro (hardware limitation)
  • CS4232 (hardware limitation)

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

  • 더 낮은 샘플링 속도 또는 mono mode로 연주해 보라
  • 다른 프로세서의 실행을 멈추어라
  • 더 빠른 컴퓨터를 구입하라
  • 더 강력한 사운드 카드 (예: Gravis UltraSound)를 구입하라

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 자원이 필요한가?

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

  • PCM 샘플링 또는 FM synthesis를 사용하는가
  • 샘플링 속도 와 샘플 크기
  • 연주와 녹음을 위해 어떤 응용 프로그램을 사용하는가
  • disk I/O rate, CPU clock speed, cache size, 등

일반적으로 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 사운드를 연주할 수는 있지만 기록할 수 없다.

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

  • 올바른 디바이스 (예: microphone)를 선택하여 믹서 프로그램을 사용하라
  • 입력 게인 (input gain)을 최대로 세팅하여 믹서를 사용하라
  • 하드웨어 문제가 아닌지 결정하지 위해 가능하다면 MS-DOS에서도 sound card recording을 시험해 보라

때때로 연주 (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에서 내려받을 수 있다.

7. 참고문헌

CD-ROM 또는 SCSI 인터페이스를 지원하는 사운드 카드를 가지고 있다면 SCSI HOWTO and the Linux CD-ROM HOWTO는 여러분에게 유용한 정보를 제공할 수도 있다.

Sound Playing HOWTO 는 여러가지 형태의 사운드 와 음악 파일을 어떻게 연주하는지 설명한다.

Linux SoundBlaster AWE32/64 Mini-HOWTO에는 사운드블래스터 32 또는 64 카드를 리눅스에서 사용하는 방법이 설명되어 있다.

4Front Technologies의 웹사이트인 http://www.opensound.com/pguide에서 프로그래밍 정보를 얻을 수 있다.

다음 FAQ 는 news.announce 에 정기적으로 게시되며 또한 ftp://rtfm.mit.edu/pub/usenet/news.answers 에서도 찾을 수 있다:

  • PCsoundcards/generic-faq (Generic PC Soundcard FAQ)
  • PCsoundcards/soundcard-faq (comp.sys.ibm.pc.soundcard FAQ)
  • PCsoundcards/gravis-ultrasound/faq (Gravis UltraSound FAQ)
  • audio-fmts/part1 (Audio file format descriptions)
  • audio-fmts/part2 (Audio file format descriptions)

FAQs에는 몇몇 제품의 특정 메일링 리스트 와 archive sites (ftp 사이트 등)에 대한 목록을 담고 있다. 다음은 사운드 또는 음악에 관한 것들을 논의하는 유즈넷 뉴스그룹이다:

http://viswiz.gmd.de/MultimediaInfo/ 에서 멀티미디어에 관련된 웹사이트를 찾을 수 있다. 리눅스 미디와 사운드 응용그로그램에 대한 또 다른 괜찮은 사이트로는 http://sound.condorow.net/이 있다. Creative Labs의 웹사이트는 http://www.creaf.com/ 이다. MediaTrix 의 웹사이트는 http://www.mediatrix.com/ 이다.

리눅스 메일링 리스트에는 사운드를 포함한 여러가지 주제를 다루는 수많은 "channel"이 존재한다. 메일링 리스트에 가입하는 방법을 알고 싶으면 메세지 내용에 "help" 를 적어서 majordomo@vger.rutgers.edu 에 메일을 보내라 (주의: 이들 메일링 리스트에는 사운드 카드 셋업 등과 관련된 질문은 보내지 말라. 이들은 개발과 관련된 토론을 다루는 메일링 리스트이다)

앞에서도 몇번 말하였지만, 사운드 카드 드라이버에 대한 유용한 정보를 담고 있는 많은 Readme 파일이 커널 사운드 드라이버에 포함되어 있다. 이들 파일은 /usr/src/linux/drivers/sound에 있다.

OSS(리눅스와 여타 Unix 운영체제를 위한 상용의 사운드 드라이버)에 대한 정보는 http://www.opensound.com/에 있는 4Front Technologies의 웹사이트 에서 찾을 수 있다.

Linux Software Map (LSM)은 리눅스 소프트웨어를 찾기 위한 말할 수 없이 귀중한 참고자료이다. 사운드 하드웨어와 관련된 응용프로그램을 확인하려면 sound와 같은 키워드 (keywords)를 사용하여 LSM을 탐색하는 것이 좋은 방법이다. ftp://meatlab.unc.edu/pub/Linux/docs/LSM을 포함한 여러군데의 anonymous FTP 사이트에서 LSM을 찾을 수 있다. 또한 리눅스 응용프로그램에 대한 데이타베이스를 만들어 관리하는 웹사이트도 몇 군데 있다. 그 중 하나가 http://www.freshmeat.net이다.

Linux Documentation Project는 Linux Installation and Getting Started를 포함하여 리눅스에 관한 몇 권의 책을 발간하였다. 이들 책은 주요 리눅스 archive 사이트에서 anonymous FTP로 접속하여 구할 수 있으며 또한 제본된 책을 구입할 수도 있다.

마지막으로 염치없는 광고 한가지: 여러분들이 리눅스에서의 멀티미디어 (특히 CD-ROM 과 사운드 카드 응용프로그램 및 프로그래밍) 에 대하여 더 많은 것을 배우고자 한다면 O'Reilly and Associates 에서 발간된 나의 책 Linux Multimedia Guide (ISBN 1-56592-219-0)를 한 번 보라. 이제는 불어판과 일본어판도 존재한다. 더 자세한 것은 북아메리카의 800-998-9938에 전화를 하거나 그들의 웹사이트인 http://www.ora.com/catalog/multilinux/noframes.html 또는 저자의 홈페이지 http://www.pobox.com/~tranter를 방문해 보라.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:30
Processing time 0.0167 sec