A PC speaker is a loudspeaker built into some IBM PC compatible computers. The first IBM Personal Computer, model 5150, employed a standard 2.25 inch magnetic driven (dynamic) speaker. More recent computers use a tiny moving-iron or piezo speaker instead. The speaker allows software and firmware to provide auditory feedback to a user, such as to report a hardware fault. A PC speaker generates waveforms using the programmable interval timer, an Intel 8253 or 8254 chip.

Use cases

BIOS/UEFI error codes 

The PC speaker is used during the power-on self-test (POST) sequence to indicate errors during the boot process. Since it is active before the graphics card, it can be used to communicate "beep codes" related to problems that prevent the much more complex initialization of the graphics card to take place. For example, the Video BIOS usually cannot activate a graphics card unless working RAM is present in the system while beeping the speaker is possible with just ROM and the CPU registers. Usually, different error codes will be signalled by specific beeping patterns, such as e.g. "one beep; pause; three beeps; pause; repeat". These patterns are specific to the BIOS/UEFI manufacturer and are usually documented in the technical manual of the motherboard.

Software 
Several programs, including music software, operating systems or games, could play pulse-code modulation (PCM) sound through the PC speaker using special Pulse-width Modulation techniques explained later in this article.

Games 

The PC speaker was often used in very innovative ways to create the impression of polyphonic music or sound effects within computer games of its era, such as the LucasArts series of adventure games from the mid-1980s, using swift arpeggios.  Several games such as Space Hulk and Pinball Fantasies were noted for their elaborate sound effects; Space Hulk, in particular, even had full speech.

However, because the method used to reproduce PCM was very sensitive to timing issues, these effects either caused noticeable sluggishness on slower PCs or sometimes failed on faster PCs (that is, significantly faster than the program was originally developed for). Also, it was difficult for programs to do much else, even update the display, during the playing of such sounds. Thus, when sound cards (which can output complex sounds independent from the CPU once initiated) became mainstream in the PC market after 1990, they quickly replaced the PC speaker as the preferred output device for sound effects. Most newly-released PC games stopped supporting the speaker during the second half of the 1990s.

Other programs 
Several programs, including MP (Module Player, 1989), Scream Tracker, Fast Tracker, Impulse Tracker, and even device drivers for Linux and Microsoft Windows, could play PCM sound through the PC speaker.

Modern Microsoft Windows systems have PC speaker support as a separate device with special capabilities – that is, it cannot be configured as a normal audio output device. Some software uses this special sound channel to produce sounds. For example, Skype can use it as a reserve calling signal device for the case where the primary audio output device cannot be heard (for example because the volume is set to the minimum level, the amplifier is turned off or headphones are plugged in).

In the 1990s, a computer virus for Microsoft DOS named "Techno" appeared, playing a melody through the PC speaker while printing the word "TECHNO" on the screen until filled.

Pinouts

In some applications, the PC speaker is affixed directly to the computer's motherboard; in others, including the first IBM Personal Computer, the speaker is attached by wire to a connector on the motherboard. Some PC cases come with a PC speaker preinstalled. A wired PC speaker connector may have a two-, three-, or four-pin configuration, and either two or three wires. The female connector of the speaker connects to pin headers on the motherboard, which are sometimes labeled  or .

Pulse-width modulation
The PC speaker is normally meant to reproduce a square wave via only 2 levels of output (two voltage levels, typically 0 V and 5 V), driven by channel 2 of the Intel 8253 (PC, XT) or 8254 (AT and later) Programmable Interval Timer operating in mode three (square wave signal). The speaker hardware itself is directly accessible via PC I/O port 61H (61 hexadecimal) via bit 1 and can be physically manipulated for 2 levels of output (i.e. 1-bit sound).  However, by carefully timing a short pulse (i.e. going from one output level to the other and then back to the first), and by relying on the speaker's physical filtering properties (limited frequency response, self-inductance, etc.), it is possible to drive the speaker to various intermediate output levels, functioning as a crude digital-to-analog converter.  This technique is called pulse-width modulation (PWM) and allows approximate playback of PCM audio.  (A more refined version of this technique is used in class D audio amplifiers.)

With the PC speaker this method achieves limited quality playback, but a commercial solution named RealSound used it to provide improved sound on several games.

Obtaining a high fidelity sound output using this technique requires a switching frequency much higher than the audio frequencies meant to be reproduced (typically with a ratio of 10:1 or more), and the output voltage to be bipolar, in order to make better use of the output devices' dynamic range and power. On the PC speaker, however, the output voltage is either zero or at a Transistor-Transistor Logic (TTL) level (unipolar).

The quality depends on a trade-off between the PWM carrier frequency (effective sample rate) and the number of output levels (effective bit depth).  The clock rate of the PC's programmable interval timer which drives the speaker is fixed at 1,193,180 Hz, and the product of the audio sample rate times the maximum DAC value must equal this.  
Typically, a 6-bit DAC with a maximum value of 63 is used at a sample rate of 18,939.4 Hz, producing poor but recognizable audio.

The audio fidelity of this technique is further decreased by the lack of a properly sized dynamic loudspeaker, specially in modern machines and particularly laptops that use a tiny moving-iron speaker (often confused with piezoelectric). The reason for this is that PWM-produced audio requires a low-pass filter before the final output in order to suppress switching noise and high harmonics. A normal dynamic loudspeaker does this naturally, but the tiny metal diaphragm of the moving-iron speaker will let much switching noise pass, as will many direct couplings (though there are exceptions to this, e.g. filtered "speaker in" ports on some motherboards and sound cards).

This use of the PC speaker for complex audio output became less common with the introduction of Sound Blaster and other sound cards.

See also
 Intel 8253
 RealSound
 Loudspeaker enclosure

Notes

External links
Smacky Open-source C++ software for playing (monophonic) music on the PC speaker.
Site for old PC without sound cards.
Programming the PC Speaker, by Mark Feldman for PC-GPE.
Programming the PC Speaker, by Phil Inch: part 1, part 2 (includes a very detailed explanation of how to play back PCM audio on the PC speaker, and why it works)
Bleeper Music Maker A freeware to use the PC speaker to make music (superseded by BaWaMI)
Beep for Linux and Windows, by Frank Buß. APIs for beeping.
Commandline PC speaker program for LinuxFTP
Practical article on implementing a Linux Kernel Driver 
 Timing on the PC family under DOS (Sections 7.5, 7.29, 7.30, and 10.7 – 10.7.4 in particular)

Legacy hardware
Loudspeakers
Computer-related introductions in 1981
PC 스피커()는 일부 IBM PC 호환 컴퓨터에 내장된 스피커이다. 최초의 IBM 개인용 컴퓨터인 모델 5150 모델에는 표준 2.25인치 자기 구동 스피커를 이용하였다. 더 최근에 출시된 컴퓨터들은 압전소자(피에조) 방식의 스피커를 대신 이용한다. 이 스피커는 소프트웨어와 펌웨어가 사용자에게 소리로 하드웨어 실패와 같은 보고를 하기 위해 피드백을 전달할 수 있다. PC 스피커는 프로그래머블 인터벌 타이머(PIT), 인텔 8253, 8254 칩을 사용하여 파형을 만들어 내보낸다.

용도

바이오스 오류 코드 

PC 스피커는 시동 자체 시험(POST) 시퀀스 중에 부팅 오류를 지시하기 위해 사용된다. 그래픽 카드 이전에 활성화되기 때문에 훨씬 더 복잡한 그래픽 카드의 초기화를 방해하는 문제들에 관한 "비프 코드" 통신에 사용할 수 있다. 이를테면, 비디오 바이오스는 작동 중인 램이 시스템에 존재하지 않을 경우 일반적으로 그래픽 카드를 활성화할 수 없는 반면, 스피커의 비프음은 ROM과 CPU 레지스터만 있어도 동작할 수 있다. 일반적으로 각기 다른 오류 코드들은 특정한 비프음 패턴에 의해 인지할 수 있는데, 이를테면 "하나의 비프음, 잠시 정지, 세 개의 비프음, 잠시 정지, 반복"과 같은 형태이다. 이러한 패턴들은 바이오스 제조업체마다 다르며 일반적으로 메인보드의 기술 문서에 문서화되어 있다.

게임 

PC 스피커는 당시 1990년대 중순의 루카스아츠 시리즈의 어드벤처 게임과 같은 컴퓨터 게임의 폴리포니 음악이나 효과음을 만드는데 매우 혁신적인 방법으로 종종 사용되었다. 《스페이스 헐크》와 《핀볼 판타지》와 같은 여러 게임들이 이러한 효과음을 내기 위해 PC 스피커를 사용했으며, 스페이스 헐크는 특히 완전한 사람의 언어도 출력이 가능했다.

그러나 PCM 재생에 사용된 방식이 타이밍 문제에 매우 민감했기 때문에 이 결과로 저속의 PC에서는 눈에 띄게 느려지고, 고속의 PC(프로그램 개발 당시의 것보다 더 빠른 PC)에서는 완전히 재생을 실패하는 일이 가끔 있다. 또, 프로그램들이 소리 등을 재생하는 중에 디스플레이 업데이트하는 일이 어려운 편에 속했다. 그러므로 1990년 이후 사운드 카드(초기화 시 CPU와 독립적으로 복잡한 소리를 출력할 수 있음)가 PC 시장의 주류로 되었을 때 선호되는 출력 장치로서 빠르게 PC 스피커를 대체해나갔다. 최신의 PC 게임들은 1990년대 중순 PC 스피커 지원을 중단하였다.

기타 프로그램 
MP(모듈 플레이어, 1989년), 스크림트래커, 패스트 트래커, 임펄스 트래커를 포함한 여러 프로그램들, 심지어는 리눅스 및 마이크로소프트 윈도우용 장치 드라이버는 본문에 나중에 기술될 특수 기법을 사용하여 PC 스피커를 통해 펄스 부호 변조(PCM)를 재생할 수 있다.

현대의 마이크로소프트 윈도우 운영 체제들은 특수 기능을 갖춘 별도의 장치로서 PC 스피커를 지원하고 있는데, 즉 일반 오디오 출력 장치로 구성이 불가능함을 뜻한다. 일부 소프트웨어는 이 특수한 사운드 채널을 사용하여 소리를 출력한다. 이를테면 스카이프는 주 오디오 출력 장치를 들을 수 없을 때(이를테면 볼륨이 최소 수준으로 설정되었다든지 앰프가 꺼져있는 경우)를 대비해 리버스 콜링 시그널(reserve calling signal) 장치로 PC 스피커를 사용할 수 있다.

핀 출력 

일부의 경우 PC 스피커는 컴퓨터의 메인보드에 직접 부착되어 있다. 최초의 IBM PC를 포함한 그 밖의 경우 스피커는 메인보드의 단자에 선을 통해 연결된다. 일부 PC 케이스들은 PC 스피커가 미리 설치되어 있는 경우가 있다. 유선 PC 스피커 단자는 2, 3, 4핀 구성일 수 있으며 2~3개의 선일 수 있다. 스피커의 암(female) 단자는 메인보드의 SPEAKER, SPKR로 표시되곤 하는 핀 헤더에 연결한다.

펄스폭 변조 
PC 스피커는 일반적으로 오직 2 레벨의 출력을 통해 방형파를 재생하는 것을 의미한다. (스피커는 오직 2개의 전압 레벨로 구동되는데, 일반적으로 0 V와 5 V이다) 그러나 짧은 펄스의 타이밍을 조심스럽게 조절함으로써(예: 출력 레벨에서 다른 레벨로 이동하고 다시 처음으로 되돌아올 때), 또 스피커의 물리적 필터링 특성에 의존함으로써(제한된 주파수 반응, 자기 인덕턴스 등) 최종 결과는 중간의 사운드 레벨과 일치하게 된다. 이는 효율적으로 스피커가 대체적인 6비트 DAC로 기능할 수 있다는 것을 의미하므로 PCM 오디오의 대략적인 재생을 가능케 한다. 이 기법을 펄스 폭 변조(PWM)라 부르며 특히 클래스 D 앰프에서 사용된다.

PC 스피커를 사용하면 이 방식은 제한된 품질의 재생을 달성할 수 있다. 즉, 품질은 PWM 반송 주파수(효율적인 샘플레이트)와 출력 레벨의 수(효율적인 비트레이트) 간에 타협을 보며 결정된다. 스피커를 구동하는 PC의 프로그래머블 인터벌 타이머(PIT)의 클럭 속도는 1,193.18 kHZ로 고정된다. 이렇게 상대적으로 낮은 변조 주파수는 제한된 해상력의 인지는 가능한 저품질 오디오를 만들어낸다.

사운드 블라스터와 기타 사운드 카드의 등장에 힘입어, 복잡한 소리 출력에 PC 스피커를 사용하는 일은 흔치 않다.

같이 보기 
 인텔 8253
 리얼사운드

각주

외부 링크 
 Smacky Open-source C++ software for playing songs on the PC speaker.
 Site for old PC without sound cards.
 PCGPE article on programming the PC Speaker.
 Part 1 of another article about programming the PC speaker.
 Part 2 of the article(includes a very detailed explanation of how to play back PCM audio on the PC speaker, and why it works)
 Bleeper Music Maker  A freeware to use the PC speaker to make music (superseded by BaWaMI )
 Article about programming PC speaker using C++
 Commandline PC speaker program for LinuxFTP
 Practical article on implementing a Linux Kernel Driver
 Timing on the PC family under DOS (Sections 7.5, 7.29, 7.30, and 10.7 – 10.7.4 in particular)

스피커
레거시 하드웨어