다음 이전 차례

2. 여러 사운드 포맷과 그를 재생하는 프로그램들

이 세상에는 소리를 저장하는 여러 가지 형식들이 있다. 여기서 그 여러 가지 형식과 그 형식으로 저장된 소리를 재생하는 프로그램들을 언급한다.

2.1 MIDI

MIDI는 Musical Instrument Device Interface의 약자이다. MIDI 화일은 보통 .mid의 확장자를 가진다. 이런 화일은 어떤 악기를 언제, 어떻게 연주해야 하는지의 정보를 가지고 있다. 사운드 하드웨어에 따라서 (그리고 어떤 경우에는 음악을 재생하는 소프트웨어에 따라서) 재생되는 음악이 감탄할 경지가 될 수도 있고 잡음이 될 수도 있다.

Voxware 3.5를 쓰기 시작한 1.3.x 커널에서는 (적어도 내 사운드 블래스터16에서는) 부팅 바로 직후에 adagio에 포함된 mp나 게임 Doom에서 나오는 MIDI 출력이 이상할 것이다. 그렇지만 다시 한번 재생하면 출력이 정상으로 돌아온다.

adagio

adagio는 mp (command-line 미디 재생기)와 xmp (XView 미디 재생기)를 포함하고 있다. xmp를 이용하려면 XView에 덧붙여 Slingshot externsions를 가지고 있어야 한다. Adagio score를 재생할 수 있는 다른 여러 프로그램도 같이 있다. (이것에 대해서는 잘 알지 못한다.)

만약 GUS (Gravis Ultrasound) 사운드 카드를 가지고 있다면 mp는 MOD 화일도 재생할 수 있다.

좀 짜증나는 버그가 있다면, 그것은 MIDI 를 거의 다 출력했을 때 마지막 음을 들려주는 것이 아니라 그 바로 전의 음을 길게 재생한다는 버그이다.

adagio 어디에도 (적어도 내가 찾아봤을 때는) 저작권이 언급된 곳이 없다.

adagio는 Greg Lee ( lee@uhunix.uhcc.hawaii.edu)가 CMU MIDI Toolkit 를 Linux 로 이식한 프로그램이다. (근데 더해진 것들을 보아서는 CMU MIDI Toolkit를 기반으로 새로운 프로그램을 만든 거라고 볼 수도 있다.)

ftp://tsx-11.mit.edu/pub/linux/packages/adagio05.tgz 에서 얻을 수 있다. 여기에 포함된 실행 화일들은 태고적 라이브러리와 링크된 a.out 바이너리들이다. 그리고 포함된 xmp의 실행 화일은 X11R6 (XFree86 3.1.1, libc 4.7.2)에서 segmentation fault를 일으킨다. mp의 실행 화일은 별 탈 없이 돌아간다.

이걸 요새의 환경에서 컴파일하기 위해서는 Makefile에서 SHROBJ와 XMPOBJ의 끝에 -lfl 옵션을 첨가해야 한다. 그러고 나면 거기의 지시대로만 하면 된다. 그리고 xmp를 쓰려면 XView 와 Slingshot extensions가 있어야 된다는 것을 명심해야 한다.

timidity

어떤 사람은 이 실험적인 프로그램을 추천한다. 왜냐하면 음질이 매우 좋기 때문이다. (Sound Blaster 16에서 mp의 출력보다 훨씬 좋다. 그렇지만 GUS에서는 별 차이가 나지는 않을 것으로 생각된다). 그러나 이 프로그램은 CPU를 상당히 혹사시킨다. MIDI 화일에서 WAV를 만들어 이 WAV를 재생시켜서 MIDI를 재생한다 (원하면 소리를 재생하지 않고 그냥 MIDI 화일에서 WAV 화일을 만들 수도 있다). 이런 식으로 MIDI를 재생시키기 때문에 CPU가 고생한다.

ncurses, SLang, Motif 세 가지 인터페이스를 가지고 있다. 그런데 내가 알기로는 Motif와 정적으로 링크된 timidity의 실행 화일은 배포해주는 곳이 없다.

이것을 이용하기 위해서는 Gravis Ultrasound 패치 화일들이 필요하다. 이를 조금 모은 것을 ftp://sunsite.unc.edu/pub/Linux/apps/sound/timidity-lib-0.1.tar.gz 에서 얻을 수 있다. 그렇지만 timidity를 제대로 사용하기 위해서는 이보다 패치 화일이 훨씬 많이 필요할 것이다. 이들을 찾고 싶으면 timidity에 포함된 FAQ를 참조하라. timidity 자체는 ftp://sunsite.unc.edu//pub/Linux/apps/sound/timidity-0.2h.tgz 에서 얻을 수 있다.

Tuukka Toivonen ( titoivon@snakemail.hut.fi)가 만들었다.

playmidi

이것은 FM 음원, GUS, 또는 외부 MIDI를 이용해 MIDI를 재생한다. 그런데 OPL3는 제대로 지원하지 않기 때문에 나처럼 GUS나 외부 MIDI가 없을 경우에는 adagio의 mp보다는 음질이 나쁘다. 그렇지만 mp처럼 끝이 이상하게 되는 버그는 없다.

이 프로그램은 ANSI 그래픽을 이용해서 각 채널에서 재생되는 음과 지금까지 재생된 시간을 표시해 줄 수도 있다.

이 프로그램의 소스는 고쳐지지 않는 한 자유로이 배포될 수 있다.

Nathan Laredo가 만들었다. 이 사람은 1995년 1월 이후로 8년 동안 연락을 할 수 없을 것이라고 했다. Alex Mohr ( dzur@u.washington.edu)는 몇 개의 버그를 고쳤다.

ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/playmidi-1.2.tgz 에서 얻을 수 있다.

2.2 Modules

컴퓨터 음악 분야에서는 module이라고 하면 화일 내에 소리 샘플과 어떤 샘플(악기라 생각할 수 있음)을 언제 얼마의 높이로 어떤 효과(예를 들어 떨림음)를 첨가해서 연주할지의 정보를 담고 있다.

MIDI와 비교해면 사람의 목소리를 포함한 거의 어떠한 소리도 연주할 수 있다는 장점이 있다. 또다른 장점으로는 module을 연주하는 하드웨어가 달라도 비슷하게 들린다는 점이 있다. 왜냐하면, 소리 샘플을 하드웨어에 있는 것을 이용하지 않고 화일 자체 내에 포함된 것을 이용하기 때문이다. 단점으로는 MIDI 화일에 비해서 크기가 훨씬 크고, 화일 형식을 제대로 명시한 표준 문서가 없다는 점이 있다. (진짜라고 말할 수 있는 표준은 ProTracker 형식 밖에 없지만, 이와 호환되지 않는 module도 상당히 많다) Module 형식은 아미가에서 처음 만들어졌다.

이런 형식을 가진 화일들은 보통 .mod 확장자를 가진다. 구체적으로 어떤 형식인지에 따라서 또다른 여러 가지 확장자가 있다.

tracker

이 이식성이 뛰어난 프로그램은 Soundtracker와 Protracker module을 재생할 수 있다. 16 bit 스테레오로 음악을 재생하므로 음질이 상당히 좋다. 그렇지만 CPU를 좀 혹사시키는 경향이 있다. CPU를 덜 혹사시키기 위해서 -mono 옵션을 이용할 수도 있다.

이 프로그램은 만든 사람의 말을 인용하면 giftware이다. Marc Espie ( Marc.Espie@ens.fr)가 만들었다.

Linux에 맞추어서 Makefile이 조절된 것을 ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/tracker-4.3-linux.tar.gz 에서 구할 수 있다.

s3mod

이는 4/6/8 track MOD와 Scream Tracker 3 module을 재생할 수 있다. 디폴트로 8 bit 모노 22000 Hz 출력을 이용한다. -s 옵션은 스테레오를 이용, -b는 16 bit 출력 이용, -f는 샘플링 주파수를 지정해 준다. 그러나 tracker에 비해 음질이 나쁘기 때문에 (약간의 잡음이 있음) 딸리는 CPU를 가지고 있지 않는 한 tracker를 이용해 보통 MOD 화일을 재생하는 것을 권장한다. tracker에 비하면 CPU 이용량이 상당히 작다.

이는 Daniel Marks와 David Jeske ( jeske@uiuc.edu)가 저작권을 가지고 있다. 하지만 다른 사람이 만들었다고 속이는 것 말고는 마음대로 다룰 수 있다.

ftp://sunsite.unc.edu/pub/linux/apps/sound/players/s3mod-v1.09.tar.gz 에서 구할 수 있다.

gmod

이것은 GUS에서 module을 연주한다. 4/6/8 channel MOD, 669, MultiTracker, UltraTracker, S3M 포맷을 지원한다.

이는 3.0 버전 이상의 Voxware가 필요하다. 그리고 GUS도 당연히 필요하다.

이 프로그램은 자유로이 배포될 수 있다. Hannu Savolainen이 원래 만들었고, 지금은 Andrew J. Robinson ( robinson@cnj.digex.net)가 유지, 보수하고 있다.

ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/gmod+x-2.1.tgz 에서 구할 수 있다.

mod

이 베타 프로그램은 GUS에서 MOD (15/31-instrument, up to 32 voices), MTM, ULT and S3M를 연주할 수 있다. 이는 ncurses 인터페이스를 쓴다. gzip, lha 또는 lharc, unzip, unarj가 있으면 packed module (압축된 module)도 연주할 수 있다. Powerpacked module 또는 아미가의 몇 개 프로그램에서 만든 packed module ("PACK" signature을 가진다 함)은 연주할 수 없다.

이 프로그램은 3.0 버전 이상의 Voxware 드라이버가 필요하다. 1.2.x 커널에 포함된 2.90-2 Voxwared에서는 실행이 되지가 않는다.

텍스트 인터페이스를 사용하려면 ncurses가 필요하다. Tcl/Tk를 이용하는 X 인터페이스도 있다.

Mikael Nordqvist ( mech@df.lth.se또는 d91mn@efd.lth.se)가 만들었다.

ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/mod-v0.81.tgz 에서 구할 수 있다.

pmod

이 프로그램은 XM, S3M, MTM, MOD, 669 module을 GUS에서 연주한다. 이것은 Voxware 드라이버를 사용하지 않고 같이 딸려서 오는 베타 드라이버를 이용한다. GUS MAX가 있으면 module을 연주하는 것과 Doom을 실행하는 것을 동시에 할 수 있다고 한다.

ncurses를 이용하는 텍스트 인터페이스가 있다.

Jaroslav Kysela ( perex@pf.jcu.cz)가 만들었다. pmod를 위한 mailing list도 있다 ( pmod@pf.jcu.cz). pmod에 관한 질문은 여기에 하는 것이 좋을 거라고 생각된다.

ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/pgmod-1.25e.tgz 에서 구할 수 있다.

2.3 MPEG audio streams

MPEG는 디지털 매체에 동영상과 그와 같이 있는 소리를 저장하는 방식을 지정하는 표준이다. MPEG는 보통 비디오에 관한 표준으로 알지만, 소리 부분을 따로 쓸 수도 있다. MPEG에서 소리를 저장하는 방식으로 layer I, II, III를 정의한다. 더 높은 layer를 재생할 수 있는 프로그램은 더 낮은 layer도 재생할 수 있다 (예를 들어 layer III를 재생할 수 있는 프로그램은 layer II도 재생할 수 있다). layer II 화일은 보통 .mp2 확장자를 가지고 있고, layer III 화일은 보통 .mp3 확장자를 가진다. MPEG audio 화일은 보통 상당히 크다 (2에서 6 메가바이트). 그렇지만 음질이 그만큼 좋다. 2 메가바이트짜리 layer II 화일을 같은 음질의 PCM 데이타로 변환하면 약 25 메가바이트가 필요할 것이다.

maplay

이 프로그램은 layer I, II MPEG audio를 재생할 수 있다. layer III는 재생할 수 없다 (적어도 버전 1.2에서는). 16 bit 사운드카드를 지원한다. (하지만 누군가가 자기 것에서는 되지 않는다고 들은 적이 있다)

이 프로그램은 CPU를 고문시킨다. 60 MHz 펜티엄에서는 55% CPU를 쓴다. 66 MHz 486에서는 재생할 수 없다. 왜냐하면 CPU가 도저히 소리 출력을 따라잡지 못하기 때문이다. 이런 경우에는 스테레오로 듣지 말고 모노로 들으면 된다. 모노로 듣기 위해서는 -r 또는 -l 옵션을 쓰면 된다.

이것을 컴파일하려면 어떤 화일을 조금 바꿔주어야 할 지도 모른다. 구체적으로 말하자면, configuration.sh의 맨 앞에

#!/bin/sh

를 집어 넣어야 할 지도 모른다.

Tobias Bading ( bading@cs.tu-berlin.de)이 만들었다.

ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/maplay1_2.tar.gz 에서 구할 수 있다.

2.4 WAV

sox의 man page를 인용하면:

These appear to be very similar to IFF files, but not the same. They are the native sound file format of Windows 3.1. Obviously, Windows 3.1 is of such incredible importance to the computer industry that it just had to have its own sound file format.

(윈도우 3.1이 IFF 형식을 가져다가 호환되지 않게 조금 바꾼 것을 비꼰 말)

WAV 형식의 화일은 보통 .wav 확장자를 가진다.

WAV 화일을 재생하는 또다른 프로그램으로 sox가 있다.

wavplay

이 미완성의 프로그램은 WAV 형식으로의 재생과 녹음을 해준다. 이는 command line 인터페이스와 X 윈도우 인터페이스가 있다.

이 프로그램은 저작권이 명시되지 않았다. Andre Fuechsel ( af1@irz.inf.tu-dresden.de)가 만들었다.

ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/wavplay021.tar.z 에서 구할 수 있다.

2.5 기타

sox

이 프로그램은 사실은 변환 프로그램이다. 하지만 play라는 이름으로 실행하면 소리를 스피커로 재생시킨다. (Sound HOWTO에 언급된 play가 이것일 것 같은 생각이 든다.) 이는 raw (즉, 앞에 아무런 정보가 없는 것) 이진 화일 및 텍스트 화일, Sound Blaster .voc, SPARC .au, Mac HCOM, PC/DOS .sou, Sndtool, Sounder, NeXT .snd, Windows 3.1 RIFF/WAV, Turtle Beach .smp, CD-R, Apple/SGI AIFF 8SVX 형식들을 지원한다. (여기서 내가 접해 보지 못한 형식들이 많다. 그저 sox의 man page에서 가져왔다.)

많은 사람들이 이를 만들었으며, 다 각자 저작권이 있다. 이 프로그램은 아무 목적에나 쓸 수 있다.

ftp://sunsite.unc.edu/pub/Linux/sound/Lsox-linux.tgz에서 구할 수 있다.

cat

cat가 사운드와 무슨 관계가 있느냐고 할 지도 모른다. cat가 사운드와 어떤 관련이 있는지 예를 들어서 보여 주겠다.

$ cat sample.voc > /dev/dsp
$ cat sample.wav > /dev/dsp
$ cat sample.au > /dev/audio

.au 화일을 /dev/audio에다 cat하면 항상 소리가 제대로 출력된다. WAV나 VOC 같이 PCM으로 소리를 저장한 화일일 경우 운이 좋아 알맞는 샘플 주파수 등을 가지면 /dev/dsp로 cat한 것이 제대로 출력될 수도 있다.

이렇게 cat를 쓰는 것은 완전히 쓸모없지는 않다. 예를 들어, 자신이 가지고 있는 어떤 프로그램도 어떤 소리 화일의 형식을 인식하지 못하고, 그 화일이 PCM으로 소리를 저장하는 것을 알 경우, 운이 좋으면 이런 방법으로 그 화일이 어떤 소리를 저장했나 알아낼 수 있다.


다음 이전 차례