音ファイル

昨夜散歩していたら、どこからがカエルの鳴き声が聞こえてきた。農家の人が田んぼに 水を入れて、田植えの準備に取り掛かったようで、早速彼(女)らが活動を始めたと いう訳。暫く五月蝿いけど、風物詩だから我慢する事にしよう

音をVMWAREの上でも操作したいぞ

昨日は、実機のFreeBSDで録音・再生したけど、FreeBSD on VMWARE(on WindowsXP) でも出来るようにしておこう。何せ、実機はご老体でいつ昇天してもおかしくない やつだから。

えっと、VMWARE上だと、仮想PCが音機能を持っているように設定しておくんだな。 vmwareのconfigファイルに、

sound.present = "TRUE"

と書いてから、VMWAREを起動する。FreeBSD上では、まだ音ドライバーがロード されていないので、昨日の要領で、OSに見繕ってもらう。後は、ドライバー名を 調べて、/boot/loader.confに書いておけばいいんだけど、昨日はmanを調べる とか、面倒な事をしてしまった。もっと、直裁的に(この言葉、RWHの読書会でも 話題になりました)調べる方法が有った。

[sakae@nil ~]$ cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 32bit 2007061600/i386)
Installed devices:
pcm0: <AudioPCI ES1371-A> at io 0x1480 irq 9 kld snd_es137x [MPSAFE] (2p:1v/1r:1v channels duplex default)

実際にどのような、dmesgが現れるかと言うと

pcm0: <AudioPCI ES1371-A> port 0x1480-0x14bf irq 9 at device 18.0 on pci0
pcm0: <Cirrus Logic CS4297A AC97 Codec>
pcm0: [ITHREAD]
pcm0: <Playback: DAC1,DAC2 / Record: ADC>

入力は、ADCが1チャンネルで、出力は、左右独立してる。

録音するぞ

VMWAEW上で、早速録音と再生をしてみよう。何を録音する?

適当に、触りの部分だけを録音しましたよ。また、公平を機すため、Windows上で 録音したものも、用意しました。

[sakae@nil ~/wave]$ file fromWin onVMWARE
fromWin:  RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 22050 Hz
onVMWARE: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 22050 Hz

Windows上で録音したものは、嘘か真か、ステレオになってますねぇ。

Haskell も用意する

サボっていた訳ではないけど、VMWARE上には Haslellを入れてなかった。自前で コンパイルしてもいいんだけど、コンパイルには1GのDisk容量が必要になるので(それと、 十分な時間も)、今回は、楽をしよう。

sysinstallを起動して、ネット上からバイナリーを取り寄せて入れてしまおうと 思ったら、perlのバージョンがミスマッチと言われてしまい、入らなかった。 (何で、Haskellとperlが関係するかは、私には想像できません)面倒なので、バイナリーを 手元に持ってきて

[root@nil ~]# pkg_add -f ghc-6.8.3_3.tbz
pkg_add: warning: package 'ghc-6.8.3_3' requires 'perl-5.8.9_2', but 'perl-5.8.9' is installed

これでも、問題なく動いているよ!

PCMファイルのフォーマットを探る

さて、最後に PCMファイルのフォーマットを探っておく事にしよう。この間買って きた、音本にも解説が出てたけど、資料は複数有った方が何かと便利だと思うからだ。

Waveファイルを入出力してみる と言うサイトがよさそうだ。Cのソースも公開されているので、こちらを参考にしながら やってゆくのが、良かろう。