다음 위로 이전 목차 리눅스 프로그래머를 위한 가이드

7.2 사운드 카드 프로그래밍 (programming a sound card)

프로그래머인 당신을 위해, 현재 리눅스 시스템이 사운드 카드를 장착하고 있는지를 아는 것은 중요하다. 확인하기 위한 한방법은 /dev/sndstat 를 검사하는 것이다. /dev/sndstat 를 여는데 실패하고 errno=ENODEV이면 사운드 카드가 활성화되어 있지 않다는 것으로 이는 당신이 커널 사운드 드라이버로 부터 아무런 도움도 받을 수 없음을 의미한다. pcsnd 드라이버에 연결되어 있지 않는 동안 open()는 실패하지 않으므로 /dev/dsp 를 열고자 시도하는 것으로도 같은 결과를 얻을 수 있다.

하드웨어 수준에서 사운드 카드를 가지고 혼합하기를 원한다면, outb()와 inb() 호출의 몇몇 조합이 찾고자 하는 사운드 카드를 발견해 줄 것이다.

몇몇 영리한 사람들이 리눅스,isc,FreeBSD와 대부분의 다른 i386 기반의 시스템에서 같은 드라이버를 사용하도록 결정한 이후, 프로그램에서 사운드 드라이버를 사용하는 것에 의한 변경사항은 다른 i386 시스템에서도 작동될 것이다. 다른 양식(architecture)의 리눅스가 같은 소리 장치 인터페이스(sound device interface)를 제공한다면, 프로그램을 포팅(porting)하는데 도움이 될 것이다. 사운드 카드는 리눅스 콘솔(console)의 부분이 아니라 특수한 장치이다. 사운드 카드는 세개의 주요 특징을 갖는다.:

이러한 특징의 각각은 그들 자신의 장치 드라이버 인터페이스 (device driver interface)를 갖는다. 디지탈 표본(digital sample)는 /dev/dsp, 주파수 변조는 /dev/sequencer, 미디 인터페이스는 /dev/midi 이다. 사운드 세팅(볼륨, 밸런스, 베이스 같은)은 /dev/mixer 인터페이스를 통해 통제될 수 있다. 호환성을 위해 SUN을 읽을 수 있는 /dev/audio 장치가 존재한다.

이러한 장치들을 조종하기 위해 ioctl()을 사용한다고 추측했다면, 맞았다. ioctl() 요청들은 <linux/soundcard.h>에 정의되어있고 SNDCTL_로 시작한다.


이전:7.1 내부 스피커 프로그래밍 다음:8 문자단위 그래픽스

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Nov 28,1997
Created Nov 28,1997