tail head cat sleep
QR code linking to this page

Man page  — SPKR

명칭

speaker, spkr – 콘솔 스피커의 디바이스 드라이버

내용

서식

pseudo-device speaker
#include <machine/speaker.h>

해설

스피커 디바이스 드라이버는, FreeBSD 하지만 달리고 있다 IBM-PC 호환 PC 상에서, 어플리케이션이 콘솔 스피커를 제어할 수 있도록(듯이) 합니다.

어떠한 때라도, 이 디바이스를 오픈할 수 있는 것은 다만 1 개의 프로세스 뿐입니다. 이 때문에, 이 디바이스의 락과 해방에는, open(2) (와)과 close(2) (을)를 사용합니다. 다른 프로세스가 디바이스를 독점하고 있을 때에 오픈하려고 하면(자), EBUSY 에러를 나타내 -1 를 돌려줍니다. 디바이스에의 기입은, ASCII 캐릭터로 단순하게 멜로디를 표기했다 연주 캐릭터 라인 (`play string')으로서 해석됩니다. ioctl(2) 리퀘스트에 의한 임의의 주파수의 발음도 서포트되고 있습니다.

발음하는 것으로 프로세서를 독점할 것은 없습니다. 실제로는, 드라이버는 PC 하드웨어가 소리를 발하고 있는 동안의 대부분의 시간을 sleeve 해 기다리고 있습니다. 다른 프로세스는 드라이버가 달리고 있는 동안에 beep를 울릴 수가 있습니다.

어플리케이션은, 스피커의 파일 기술자에 대해서 ioctl(2) 호출을 하는 것으로써, 스피커 드라이버를 직접 제어 가능합니다. ioctl(2) 인터페이스에 대한 정의는 /usr/include/machine/speaker.h 에 있습니다. 이러한 호출에 사용된다 tone_t 구조체에는, 주파수 (헤르쯔)와 지속 시간 (1/100 초단위로)을 지정한다 2 개의 필드가 있습니다. 주파수 0 은, 휴부라고 해석됩니다.

현재 그러한 ioctl(2) 호출은 2 개 있습니다. SPKRTONE (은)는, 제 3 인수에 단일의 tone 구조체에의 포인터 1 개를 받아, 그것을 연주합니다. SPKRTUNE (은)는, 단일의 tone 구조체 배열의 선두에의 포인터 1 개를 받아, 그것들을 차례로 연주합니다. 이 배열은 말미가 지속 시간 0 의 멤버로 끝나고 있는 것이 필요합니다.

연주 캐릭터 라인의 어법은 IBM Advanced BASIC 2.0 의 PLAY 문의 습관을 모방하고 있습니다. PLAY 문의 MB, MF, X 요소는 시분할 환경에서는 도움이 되지 않기 때문에 제외해집니다. `옥타브 추종'기능과 연음부 기호는 새롭게 추가된 것입니다.

7 옥타브 84 음이 사용 가능해 1-84 의 번호가 붙어 있습니다. 각각의 옥타브는 C 로부터 B 까지 계속되고 있어 0-6 의 번호가 붙어 있습니다. 음계는 A440 에 맞추어 조율되고 있어, 옥타브 3 은 한가운데의 C 로부터 시작됩니다. 디폴트에서는 연주 기능은 반초의 음표를 발음해, 그 중 마지막 1/16 초는 쉽니다.

연주 캐릭터 라인은 왼쪽에서 오른쪽으로, 연주 명령 그룹의 연속으로서 해석됩니다. 대문자 소문자는 구별되지 않습니다. 연주 명령 그룹은 다음과 같습니다:
CDEFGAB A 로부터 G 까지의 캐릭터는 대응하는 소리를 현재의 옥타브로 울립니다. 음표 캐릭터에는 옵션으로, # + - 의 쳐 어느쪽이든 하나의 " 임시 기호" (을)를 계속할 수가 있습니다. 이 중 최초의 2 개는 소리를 반음 높게 해, 마지막 것은 소리를 반음 낮게 합니다. 또 음표 캐릭터의 뒤에는 음길이를 나타내는 숫자와 부점기호 (후술)를 붙일 수도 있습니다. 음길이는 다음의 L 명령의 경우와 같게 해석됩니다.
O n 만약 n 하지만 숫자라면, 이후의 옥타브를 설정합니다. nL 또는 N 의 어느쪽이든을 지정하는 것으로써, 옥타브 추종을 유효 또는 무효로 할 수가 있습니다 (디폴트에서는 무효입니다). 옥타브 추종이 유효하게 되어 있을 때는, 1 조의 음표를 해석하면(자), 음표간에서의 음정의 차이가 최소가 되도록(듯이) 필요에 따라서 옥타브가 변화합니다. 따라서, ``olbc''는 ``olb>c''와 같이, ``olcb''는 ``olc<b'' 와 같이 연주됩니다. 옥타브 추종은,> 이라고 < 와 O[0123456] 에 계속되는, 1 음표에 대해서는 무효입니다. (옥타브 추종 기능은 IBM BASIC 에서는 서포트되고 있지 않습니다. )
> 현재의 옥타브를 1 개 올립니다.
< 현재의 옥타브를 1 개 내립니다.
N n 음표 n (을)를 연주합니다. n (은)는 1 에서 84 인가, 현재의 음길이의 휴부로서 0 입니다. 부점기호를 계속할 수도 있습니다.
L n 음표의 음길이를 설정합니다. 디폴트는 L4 그리고, 사분 음표입니다. 이 값은 1 에서 64 까지가 인정됩니다. L1 (은)는 전음부에, L2 (은)는 이분 음표에, L4 (은)는 사분 음표에, 등과 설정됩니다.
P n n (을)를 L n (와)과 같게 해석한 휴부입니다. 부점기호를 붙일 수도 있습니다. ~ (이)라고 쓸 수도 있습니다.
T n 1 분 쯤의 사분 음표의 수를 설정합니다. 디폴트는 120 입니다. 자주 있는 템포의 음악명:

                템포분 쯤박수
매우 늦은   Larghissimo     
                Largo           40-60
                Larghetto       60-66
                Grave           
                Lento           
                Adagio          66-76
늦은      Adagietto       
                Andante         76-108
안 정도    Andantino       
                Moderato        108-120
빠른      Allegretto      
                Allegro         120-168
                Vivace          
                Veloce          
                Presto          168-208
매우 빠른   Prestissimo     
M[LNS] 조음을 설정합니다. MN (N (은)는 보통 (normal)을 나타냅니다)이 디폴트로, 음표의 최후 1/8 를 쉽니다. 레가토 (휴일없음)로 하려면 ML (을)를, 스타카토 (1/4 쉰다)로 하려면 MS (을)를 설정할 수 있습니다.

음표 (즉 CDEFGAB 또는 N 명령 캐릭터 그룹)에는 부점기호 (. )(을)를 계속할 수가 있습니다. 각각의 부점기호는 1 개에 대해, 음표의 음길이를 1.5 배로 합니다. 따라서, 부점기호가 1 쿡쿡 찌른 음표는 붙어 있지 않기는 하지만 3/2 의 음길이에, 2 쿡쿡 찌른 음표는 9/4 의 음길이에, 3 쿡쿡 찌른 음표는 27/8 의 음길이가 됩니다.

음표와 부점기호에는 연음부 기호 (_)를 계속할 수가 있습니다. 이것에 의해 음표의 뒤에 평상시 있는 작은 휴일을 묻을 수 있어, 음표를 다음의 음표에 연음부로 연결합니다. (연음부 기능은 IBM BASIC 에서는 서포트되고 있지 않습니다. )

연주 캐릭터 라인중의 공백은 단지 날아가므로, 악절을 나누는데 사용할 수가 있습니다.

버그

음정 테이블의 둥근이나, 발음 하드웨어나 타이머 하드웨어의 넘쳐 흐름 (어느쪽이나 정밀도를 고려하고 있지 않다)이기 때문에, 음정의 정확함이나 타이밍은 수학적으로 엄밀하지는 않습니다. 음량 조절은 없습니다.

2 개(살) 이상의 부점기호의 동작은 표준적인 음악 기호를 반영하고 있지 않습니다. 표준적으로는, 각각의 부점기호는 전의 부점의 반만큼 음길이를 길게 하는 것이어, 부점에 의해 수정된 음표의 반이 아닙니다. 즉, 부점기호가 1 쿡쿡 찌른 음표는 붙어 있지 않기는 하지만 3/2 의 음길이에, 2 쿡쿡 찌른 음표는 7/4 의 음길이에, 3 쿡쿡 찌른 음표는 15/8 의 음길이가 됩니다. 그런데도,3/2 배(C0 해석은 IBM BASIC 메뉴얼에 기록되고 있기 (위해)때문에, 호환성을 위해서(때문에) 그대로 하고 있습니다.

매우 긴 (시스템의 물리 I/O 블록보다 길다) 연주 캐릭터 라인에서는, 블록 경계를 걸치기 위해서(때문에), 음표의 수식이나 수치가 가끔 잘못해 해석되는 일이 있습니다.

관련 파일

/dev/speaker 스피커 디바이스 파일

관련 항목

spkrtest(8)

저자

Eric S. Raymond <esr@snark.thyrsus.com> 1990 년 6 월

이식자

Andrew A. Chernov <ache@astral.msk.su>

역사

speaker 디바이스는 FreeBSD 1.0 에 처음으로 등장했습니다.

FreeBSD SPKR (4) November 7, 1993

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

The Unix phenomenon is scary. It doesn't go away.
— Steve Ballmer