winsound 모듈은 Windows 운영체제에 설치된 파이썬에서만 사용할 수 있는 전용 모듈입니다. 외부 라이브러리 설치 없이도 PC 스피커로 비프음을 내거나 WAV 파일을 재생하는 등 다양한 사운드 작업을 손쉽게 처리할 수 있습니다. winsound 모듈은 다음과 같은 핵심 함수들을 제공합니다.
1. Beep() – 단순 비프음 발생
이 함수를 호출하면 PC 스피커에서 비프음이 울립니다. 함수는 두 개의 매개변수를 받습니다.
- frequency(주파수): 소리의 주파수를 지정하며, 반드시 37Hz ~ 32,767Hz 범위 내의 값이어야 합니다.
- duration(지속 시간): 소리가 유지되는 시간을 밀리초(ms) 단위로 지정합니다.
>>> import winsound >>> winsound.Beep(1000, 500)
위 예제는 1000Hz의 비프음을 500밀리초 동안 재생합니다.
2. MessageBeep() – 레지스트리에 등록된 시스템 사운드 재생
이 함수는 Windows 레지스트리에 지정된 사운드를 재생합니다. type 인자를 통해 어떤 소리를 재생할지 지정할 수 있으며, 사용 가능한 값은 다음과 같습니다.
-1, MB_ICONASTERISK, MB_ICONEXCLAMATION, MB_ICONHAND, MB_ICONQUESTION, 그리고 기본값인 MB_OK
값으로 -1을 전달하면 "단순 비프음(simple beep)"이 재생됩니다.
>>> winsound.MessageBeep()
3. PlaySound() – WAV 파일 및 시스템 사운드 재생
이 함수는 플랫폼 API의 PlaySound() 함수를 호출합니다. sound 매개변수에는 파일 이름, 시스템 사운드 별칭, 또는 bytes류 객체 형태의 오디오 데이터를 지정할 수 있으며, 해석 방식은 flags 값에 따라 달라집니다. 주요 플래그는 아래와 같습니다.
| SND_FILENAME | sound 매개변수가 WAV 파일의 이름임을 나타냅니다. |
| SND_LOOP | 사운드를 반복해서 계속 재생합니다. |
| SND_MEMORY | sound 매개변수가 WAV 파일의 메모리 이미지(bytes류 객체)임을 나타냅니다. |
| SND_ASYNC | 즉시 반환되어 사운드가 비동기적으로 재생됩니다. |
| SND_NODEFAULT | 지정한 사운드를 찾을 수 없을 때 시스템 기본 사운드를 재생하지 않습니다. |
| SND_NOSTOP | 현재 재생 중인 사운드를 중단하지 않습니다. |
다음 문장은 지정된 WAV 파일을 재생합니다.
>>> winsound.PlaySound('sample.wav', winsound.SND_FILENAME | winsound.SND_NOWAIT)
SND_ALIAS – Windows 시스템 사운드 별칭 활용
SND_ALIAS 플래그를 사용하면 Windows 레지스트리에 등록된 사운드 이름을 통해 시스템 사운드를 재생할 수 있습니다. 레지스트리에 해당 이름이 존재하지 않으면 SND_NODEFAULT가 지정되지 않은 한 시스템 기본 사운드가 재생됩니다. 모든 Win32 시스템은 다음 별칭을 지원합니다.
| PlaySound() 이름 | 제어판의 대응 사운드 이름 |
|---|---|
| 'SystemAsterisk' | Asterisk (별표) |
| 'SystemExclamation' | Exclamation (느낌표) |
| SystemExit | Exit Windows (Windows 종료) |
| 'SystemHand' | Critical Stop (위험 종료) |
| SystemQuestion | Question (질문) |
예를 들어 다음 문장은 Windows 종료 사운드를 재생합니다.
>>> winsound.PlaySound("SystemExit", winsound.SND_ALIAS)
MessageBeep()용 사운드 상수
winsound 모듈은 MessageBeep() 함수와 함께 사용할 수 있는 다음 상수들도 정의하고 있습니다.
| MB_ICONASTERISK | SystemDefault 사운드를 재생합니다. |
| MB_ICONEXCLAMATION | SystemExclamation 사운드를 재생합니다. |
| MB_ICONHAND | SystemHand 사운드를 재생합니다. |
| MB_ICONQUESTION | SystemQuestion 사운드를 재생합니다. |
| MB_OK | SystemDefault 사운드를 재생합니다. |