2006年5月17日水曜日

(VMware)FreeBSDで音を鳴らす

vmxファイルに、

sound.present = "TRUE"
sound.virtualDev = "es1371"

という記述があるし、VMware PlayerのウィンドウにAudioというボタンがついていたので、たぶん、VMwareでオーディオデバイスがエミュレーションされるんだろうな、とは思っていました。しかし、host OSがWindowsで、guest OSがFreeBSDの場合には、

わざわざFreeBSDで音楽を聴いたり、ビデオを再生したいとは思わないよな・・・

という理由からこれまで試していませんでした。



今回は、ネタということで、わざわざ、このオーディオデバイスを使ってみました。ネタといっても、ちゃんとまともに使えます。



☆ ☆ ☆ ☆ ☆ 



FreeBSDのGENERICカーネルには、オーディオ用のデバイスドライバは組み込まれていないので、カーネルモジュールをロードします。VMwareの中のFreeBSDでは、snd_es137x.koです。

freebsd# kldload /boot/kernel/snd_es137x.ko

コンソールにはこんな感じで、認識されたデバイスが表示されます(dmesgコマンドでも見られます)。



pcm0: <AudioPCI ES1371-A> port 0x1400-0x143f irq 10 at device 17.0 on pci0
pcm0: <Cirrus Logic CS4297A AC97 Codec>
pcm0: <Playback: DAC2 / Record: ADC>



こんな感じでモジュールがロードされてます。

freebsd# kldstat
Id Refs Address    Size     Name
1    5 0xc0400000 691928   kernel
2    1 0xc0a92000 58554    acpi.ko
3    1 0xc28b7000 6000     snd_es137x.ko
4    1 0xc28bd000 1c000    sound.ko

/dev/sndstatで、デバイスの状態を確認できます。

freebsd# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <AudioPCI ES1371-A> at io 0x1400 irq 10 kld snd_es137x (1p/1r/0v channels
duplex default)



ためしに、MP3ファイルを再生してみたり・・・



使ったのはmadplayというportsからインストールした、簡易MP3プレーヤー。/usr/ports/audio/madplayにあります。

% madplay Comics_Image_Album_05.mp3
MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 2000-2003 Robert Leslie et al.

Fbsdsnd1





VMware Playerのウィンドウの上の方にあるAudioというボタンで、音のオン/オフが切り替えられます。



音が聞こえないときは、ボリュームが小さくなっているのが原因かもしれません。



音量の調節は、ゲストOSのFreeBSD側の調整と、ホストOSのWindows側の調整の、両方が効いてきます。



FreeBSDの場合、mixerコマンドで音量が調整できます。



「mixer」だけで実行すると、現在の設定が表示されます。

% mixer
Mixer vol      is currently set to  75:75
Mixer pcm      is currently set to  75:75
Mixer line     is currently set to  75:75
Mixer mic      is currently set to   0:0
Mixer cd       is currently set to  75:75
Mixer rec      is currently set to   0:0
Mixer igain    is currently set to   0:0
Mixer line1    is currently set to  75:75
Mixer phin     is currently set to   0:0
Mixer video    is currently set to  75:75
Recording source: mic

volがマスターボリュームのことで、音量は0~100の数値で指定するので、

% mixer vol 95
Setting the mixer vol from 75:75 to 95:95.

とかやれば、大きくできます。



☆ ☆ ☆ ☆ ☆ 



FreeBSDを起動するときに、自動的にドライバをロードするようにするためには、/boot/loader.conf に以下のように書いておきます。

snd_es137x_load="YES"

ほかにも、「man snd」すると、vchanとかいろいろ有益な情報が見つかるでしょう。





☆ ☆ ☆ ☆ ☆ 



FreeBSDには、/dev/speakerというビープ音専用のデバイスもあります。

# kldload speaker

してから、

# echo "CDE" >/dev/speaker

すると、ドレミが鳴ります。知ってる人は知っている、8ビットパソコン時代のBASICで使われていた、あのMMLが使えます。man speakerすると、詳しい情報がのっています。



まずは、/usr/sbin/spkrtestというコマンドを実行してみれば、どんな音がなるか試してみることができますよ。



Fbsdsnd2





/dev/speakerにアクセスするためのパーミッションが落ちているので、一般ユーザーでは使いづらいのですが、/etc/devfs.confを見ると、ヒントがかかれています。



# Allow members of group operator to cat things to the speaker
#own    speaker root:operator
#perm   speaker 0660



0 件のコメント:

コメントを投稿