비프음 주파수 & 길이 & 볼륨 조절방법...?

익명 사용자의 이미지

안녕하세요? ^^

리눅스에서 비프음의 주파수, 길이, 볼륨을 설정하고 싶은데요...

Redhat 에는 Control Center 에 그런 기능이 있는데...

구조체나... 함수등이 있나요? ^^? 답변 부탁드립니다~! )

익명 사용자의 이미지

비프음의 주파수와 길이는 조정할 수 있습니다.
하지만 저도 볼륨을 조절하는 방법은 모르겠습니다.
혹시 알아내시면 저에게도 정보를 부탁드립니다.

아래는 리눅스용 스마츠콜을 만들면서 참조한 문서입니다.
스마츠콜을 실행하셔서 환경설정에 sound에 PC Speaker를 보시면 아래의
것을 이용해서 만든 멜로디(캐논과 기타..)가 있습니다.
한번 들어 보시지요...^^

주파수는 아래의 문서를 이용해서 조절하시면 됩니다.
그리고 길이는 sleep으로 조정하시면 되고요.
/dev/console을 오픈하시면 됩니다.
(아래 문서에서 빠진 내용이라 처음에 삽질 했습니다.)

아래와 같은 방법을 사용하지 않으시고 따로 Assembler(outb)를 이용하시
는 방법도 있습니다.

참고문헌 kldp 프로그래밍...(리눅스 프로그래머를 위한 가이드 중에서)
http//users.unitel.co.kr/~sangeun5/linux/lpg_7_1.html

==========================================================

7.1 내부 스피커 프로그래밍 (Programming the internal speaker)
믿거나 말거나, PC 스피커는 리눅스 콘솔(Console)의 부분이고 그러므로
문자장치 (character device)이다. 따라서, ioctl() 요청들(requests)은
그것을 조종하기 위해 존재한다. 내부 스피커에 대해 다음 2개의 요청
(request)이 있다.

KDMKTONE
커널 타이머를 사용하여 지정된 시간에 소리(beep)를 발생시킨다.

예제 ioctl (fd, KDMKTONE, (long) argument)

KIOCSOUND
현재 울리고 있는 소리(beep)를 멈추거나 끝없이 소리(beep)를 발생시킨
다.

예제 ioctl (fd, KIOCSOUND, (int) tone)

아규먼트(argument)는 low word에 있는 톤(tone)과 high word에 있는 지속
성(duration)의 값으로 이루어진다. 톤(tone) 값은 주파수가 아니다. PC
메인보드 타이머 (mainboard timer) 8254는 1.19 MHz의 clock을 사용하고
이는 1190000/주파수 를 의미한다. 지속성(duration)은 타이머의 똑딱임으
로 측정된다. 두개의 ioctl 호출은 즉각적으로 반환됨으로 프로그램을 차
단하지 않고 소리(beep)를 제공하는 방법이 될 수 있다.
KDMKTONE은 소리를 멈추는 것에 대한 걱정이 없기 때문에 경고 신호로 사
용되어져야 한다.
KIOCSOUND는 splay 예제 프로그램에서 보여지는 것처럼 멜로디를 연주하는
데 사용될 수 있다. 소리를 멈추기위해 톤(tone) 값 0를 사용해야만 한다.

익명 사용자의 이미지

다음과 같은 곳에 소스와 참고할 만한 내용이 있군요.
http//www.luv.asn.au/overheads/linux_sound/pcspkr.html

/*---------------------------------------*/
/* A sample program to play C major */
/* through a PC speaker */
/*---------------------------------------*/
/* This won't work if standard output is */
/* re-directed to a non-tty device, or */
/* PC speaker wave output is active */
/*---------------------------------------*/
/* M.G. 27-Nov-99 */
/*---------------------------------------*/
#include
#include
#include
int main(void)
{
int freq[] = { /* C D E F G A B C */
523, 587, 659, 698, 784, 880, 988,
1046 };
int i;

for (i=0; i<8; i++)
{
ioctl(STDOUT_FILENO, KIOCSOUND, 1193180/freq[i]);
usleep(500000);
}
ioctl(STDOUT_FILENO, KIOCSOUND, 0); /*Stop silly sound*/
return 0;
}

다음은 캐논의 주파수 입니다.

200 150 175 200 250 225
200 150 175 200 250 225
200 150 175 200 250 225

150 250 175 225 200 225 175 250 150
200 210 200 210

200 150 175 200 250 225
200 150 175 200 250 225
200 150 175 200 250 225

300 200 250 300 200 250 225 275 300
200 210 200 210
150 250 175 225 200 225 175 250 150

200 210 245
220 230 275
240 250 300
260 270 320
280 290 335
300 310 345
320 330 350

340 350
340 350
340 350
320 290 260 230 200 170 140

145 135 150 130 155 125 160 120
170 130 180 140 190 150 200 160
200 150 175 200 250 225
200 150 175 200 250 225
200 150 175 200 250 225

200 210 200 210 200 210 200 210

예전에 도스에서 PC 스피커로 사운드 내는 것과 동일한 방식을 사용합니
다.
스마츠콜에는 좀 더 복잡한 매커니즘으로 동작합니다.
C나 D#과 같은 것을 주파수로 변환해서 플레이 할 수 있습니다.
예전 문서들도 참고해보시면 좋을 것 같습니다.

참고로... 사운드 카드가 없는 사람들을 위해 PC Speaker로 사운드를 플레
이 하는 방법이 있습니다.
pdsp라는 것인데... 아래의 내용을 참고하세요.

PC-speaker driver

originally by Michael Beck.

Allows to send a wave form to a PC-speaker, and control volume.
Sound driver for linux 2.0. Stand alone. No longer maintained.
ftp//metalab.unc.edu/pub/Linux/kernel/sound/pcsndrv-1.0.tgz

A new effort - pc speaker support as a part of Linux sound driver.
The code is based on Michael Beck's driver.
David Woodhouse - patch for 2.2.8
ftp//ftp.uk.linux.org/pub/people/dwmw2/pcsp/

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.