pc-speaker 제어 유틸리티 'beep'

kirrie의 이미지

윈도우즈 시절엔 윈도우용 gmail notifier가 있어서 편리하게 gmail을 이용했습니다.
우분투로 이번에 건너와서 보니 *checkgmail이란 유용한 스크립트가 있더군요.
윈도우용의 그것보다 설정할 수 있는 내용도 많고 작동도 비슷하게 합니다.

checkgmail의 설정 가운데 메일 도착시에 내릴 수 있는 커맨드 명령 항목이 있는데,
이걸 보다가 문득 "메일이 왔을때 뭔가 소리를 내게 하면 어떨까?" 싶어서 찾아 본 유틸리티가 바로 beep입니다.

Beep

beep은 매우 심플하게 동작합니다.

shell> beep

이러면 pc-speaker에서 '삑!' 하고 비프음이 납니다. 그러나 이게 다가 아니죠.
beep에는 다양한 파라미터가 존재합니다. 간단하게 몇가지를 소개하자면..

1. -f
-f N은 N Hz의 비프음을 출력합니다. 다음은 각 음계별 Hz입니다. (man beep에 다 있는 내용이에요;;)

       C         261.6
       C#        277.2
       D         293.7
       D#        311.1
       E         329.6
       F         349.2
       F#        370.0
       G         392.0
       G#        415.3
       A         440.0
       A#        466.2
       B         493.9
       C         523.2

2. -r
-r N 은 바로 앞에 출력된 비프음을 N번 반복합니다. 기본은 1번입니다.

3. -l
-l N 은 N 밀리세컨드 동안 바로 앞에 기술된 비프음을 출력합니다.

4. -d, -D
-d N, -D N 은 반복되는 비프음 사이에 N 밀리세컨드 동안 딜레이를 둡니다. -d는 각 비프음 사이에서만 작동하고,
-D는 반복 뿐만 아니라 반복이 종료된 다음까지도 적용됩니다.

5. -n
-n 은 복수의 비프음계 사용을 가능하게 합니다. 예를 들어, '-f 300 -n -f 400'은 300Hz 후에 400Hz의 비프음을 출력하라는
의미입니다.

요정도만 하면 왠만한 곡을 만들어 볼 정도는 될겁니다.

예제로 고전 게임 '너구리'의 오프닝(?)을 만들어 봤습니다. beep이 설치되어 있다면 들어보실 수 있습니다.

shell> beep -f 261.6 -l 500 -n -f 329.6 -l 500 -n -f 392.0 -l 250 -n -f 329.6 -l 250 -n -f 261.6 -l 250 -D 200 -n 
-f 440.0 -l 250 -n -f 392.0 -l 250 -n -f 440.0 -l 250 -n -f 493.9 -l 250 -n -f 523.2 -l 250 -D 200 -n -f 261.6 -l 250

※ 좋은 곡 있으면 공유좀 해주세용!

*checkgmail => http://checkgmail.sf.net
*우분투는 beep이란 패키지가 존재합니다만, 본인의 배포판 패키지에서 찾을 수 없다면 http://www.linux.org/apps/AppId_2367.html 에서 beep을 구할 수 있습니다.

Forums: 
kirrie의 이미지

문득 든 생각인데..
같은 IDC에 입주한 사람들 좀 모아서..
사람이 서버실에 들어가 작업하고 있을때..
오케스트라처럼 각 서버들이 beep으로 곡을 연주하면..

재밌을까요? ;)

--->
데비안 & 우분투로 대동단결!

--->
데비안 & 우분투로 대동단결!

익명 사용자의 이미지

찾아보면 compiz water ping도 있어요.

jachin의 이미지

아아... 다시 들어도 좋은 명곡이군요...(응?)
====
하나는 전부, 전부는 하나

cppig1995의 이미지

예전에 PC 스피커 제어하던 추억이 새록새록 떠오른다니까요.
8253/8254 PIT의 3개 타이머 중 마지막(2번)이 스피커와 연결돼 있었죠.
NTSC의 뭔가랑 관련이 있었던 듯한 3579545/3 MHz에서 다시 소리낼 주파수를 나눠서……

노턴 유틸리티에도 옵션까지 비슷한 녀석이 있었을 겁니다.
(<- 95년생인 네가 그런 걸 왜 알고 있는 게냐?)

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

ironiris의 이미지

윈도우3.1 쓰던 시절에 PC스피커 드라이버가 있어서
그것을 설치하면 사운드카드가 없어도!! wav 출력이 가능했었죠.
ac97 의 원조인가봐요. --;

bushi의 이미지

win95 인지 win98 인지는 모르겠지만... 하여간 그 이후에도 가능했습니다.
별로 특별하게 신경써서 설치한 것도 아닌데,
로그인 효과음악이 저렴한 음질로 pc speaker 로 나와서 조금 감동했었습니다.

linux 는 현재도 가능합니다.
드라이버는 커널소스에서 sound/drivers/pcsp/ 디렉토리에 있고,
fedora 커널 바이너리 패키지에선 빠져있지만 ubuntu 커널 바이너리 패키지에는 snd-pcsp.ko 가 들어있습니다.

bushi@rose2:~$ modinfo snd-pcsp
 
filename:       /lib/modules/2.6.24-23-generic/ubuntu/sound/alsa-driver/drivers/pcsp/snd-pcsp.ko
license:        GPL
description:    PC-Speaker driver
author:         Stas Sergeev <stsp@users.sourceforge.net>
srcversion:     7982F67592462E2AC06A106
depends:        snd-pcm,snd
vermagic:       2.6.24-23-generic SMP mod_unload 586 
parm:           index:Index value for pcsp soundcard. (int)
parm:           id:ID string for pcsp soundcard. (charp)
parm:           enable:dummy (bool)
 
bushi@rose2:~$ sudo rmmod pcspkr
bushi@rose2:~$ sudo modprobe snd-pcsp
 
bushi@rose2:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: STAC92xx Analog [STAC92xx Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: pcsp [pcsp], device 0: pcspeaker [pcsp]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
bushi@rose2:~$ 
 
bushi@rose2:~$ echo -en "pcm.pcsp {\n type plug\n slave {\n  pcm {\n   type hw\n   card 1\n  }\n format U8\n channels 1\n }\n}\n" > ~/.asoundrc
bushi@rose2:~$
 
bushi@rose2:~$ aplay -D pcsp /usr/share/thunderbird/res/samples/test.wav
Playing WAVE '/usr/share/thunderbird/res/samples/test.wav' : Unsigned 8 bit, Rate 22050 Hz, Mono
bushi@rose2:~$ 
아쉽게도 제 노트북엔 PC speaker 가 없어서 beep 고 뭐고 아무런 소리도 들리지 않는군요.

관련은 별로 없지만,
PC speaker 가 아니라 진짜 사운드카드로 alarm sound 를 듣고 싶은데,
mute, volume 등 시스템 설정 때문에 소리가 들리지 않는 현상을 극복하기 위해
.asoundrc 에 pcm.alarm 정도의 가상장치를 만들고 type hooks 로 해서 각종 switch, mixer 값을 고정시키는 팁을 어디선가 봤습니다.
필요하신 분은 잘 검색해보세요.

OTL

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.