Windowsでは運がよければインストールしただけで起動時にジャカジャ音が出てきます。運が悪くてもメーカーの用意しているデバイスドライバを入れたら大抵 音がでます。これに対して FreeBSD では自分の所有しているデバイスを把握した上でカーネルオプションに長い呪文を書いて必要ならパッチを当ててようやく動くようになるので、普通の人は音を出せるようにならない・・・と思っていました。FreeBSD2.xのころにPnPなISAサウンドカードを苦労して動かせなかった(^^;)経緯があるからです。
ところが、ひとさまのWWWページを見ていると、みなさんわりと簡単に動かせている場合が多いのですねー。最近は自動で動くようになったのかな~と思いつつも、うちの機械ではブートメッセージに pcm とか出てこないので『私の機械では動かないのだろう』と思っていたのです。が、何気なくハンドブックをみますと、『カーネルオプションに device pcm を追加しなくてはならない』と書いてあるんですねー。うちのFreeBSDで音が鳴らなかったのは GENERICカーネルに device pcm が入っていなかったからでした(笑)。
てなわけで、さっそく ThinkPad T20(FreeBSD5.1) にてカーネル再構築です。よしよし、ちゃんと
pcm0: <CS461x PCM Audio> on csa0と表示されました。ジュークボックス用に WAV ファイルが山ほどありますから、ports/audio/waveplay にて試しに演奏です。
pcm0: <Cirrus Logic CS4297A AC97 Codec>
スピーカから音が鳴ります
おぉぉ、歴史的な瞬間!! と思ったのですが、時々ズズズズとノイズが入ります。定期的に鳴っているようなので計ってみるとほぼ30秒おきにノイズが入るようです。プレーヤの問題かな~と思って ports/audio/amp にて mp3 ファイルを再生してみましたが、こちらも30秒問題が発生します。どうやらデバイス側に問題があるようです。さて、内蔵音源が動いたのなら・・・ということで、今度はUSB-光アダプタ(D2Link)を差し込んでみました。
pcm1: <USB Audio> on uaudio0お、なかなかいい感じではないか。てことで、早速再生してみました。
uhid0: I-O DATA DEVICE,INC. D2Link USB Audio Device, rev 1.10/1.00, addr 2, iclass 3/0
すごいノイズです(笑)
さきほどのノイズとは違い、もとの曲のテンポでざらざらノイズが再生されます。でもって面白いことに、このUSB-光アダプタは48kHz出力専用なはずなのですが、外付けDAコンバータには44.1kHzと表示されています。明示的に48kHzを指定しなくちゃいかんのかな~と思って# waveplay -f /dev/dsp1 -S 48000 ファイル名としてみますと、確かにざらざらノイズはなくなって音楽が演奏されるのですが、テンポが早くなって音程が少し高くなります(笑)。どうやらこのデバイスはソフトウェアでサンプリングレート変換をしてから48kHzで出力してあげないといけないようです。なお、音楽が鳴るといっても30秒ノイズは同じように発生していました。
USB光アダプタが動くのなら・・・ということで、いつもジュークボックスで使っている Sound Blaster Digital Music で試してみました。うまくいけば44.1kHz出力も可能なはずです。
pcm1: <USB Audio> on uaudio0うんうん、いいですねー。で、音を鳴らしてみますと、聴きなれた綺麗な音が出てきます。おぉぉ、完璧!! と思っていると、30秒ノイズが(笑)。う~む、デバイス固有の問題でもなさそうですねー。なんだか意味不明です。
uhid0: Creative USB Audio, rev 1.10/1.00, addr 2, iclass 3/0
さて、ノイズの問題の原因はT20かFreeBSD5.1にありそうなので、こんどは 4.9-RELEASEを入れたばかりの ThinkPad 560X にて試してみました。いきなり Sound Blaster Digital Music を差し込んでの実験です。
pcm0: <USB Audio> on uaudio0ん? こちらは内蔵音源が認識されていないようですね。で、演奏させてみますと
uhid0: Creative USB Audio, rev 1.10/1.00, addr 2, iclass 3/0
ちゃんと音楽が鳴ります。ノイズも入りません。
ぱちぱち、完璧ですね。ということで、我が家のFreeBSDでもちゃんと音が鳴ることが確認できました。□ 関連記事
音が出るようになったところで、活用方法を検討してみます。
Thinkpad T20 で音を鳴らそうとしたのは、T20はサーバとして24時間通電しており、メンテナンス中以外は端末操作をすることもありませんから、これにジュークボックスの仕事を任せることが出来たらいいかな~と思ったからです。ただ、30秒ノイズのせいでこれはかなわぬ夢となりました。
次に考えたのは、現在Windows2000で走らせているジュークボックスのFreeBSD化。ジュークボックスの仕事は
といっても、FreeBSDで演奏するメリットもあります。
last pid: 4330; load averages: 0.06, 0.05, 0.01 up 0+14:38:14 13:08:50 27 processes: 1 running, 26 sleeping Mem: 12M Active, 104M Inact, 24M Wired, 11M Cache, 25M Buf, 568K Free Swap: 200M Total, 40K Used, 200M Free PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 4166 takatani -6 0 880K 376K pcmwr 3:19 1.66% 1.66% waveplay 4189 takatani 2 0 1904K 964K select 0:22 0.00% 0.00% top 89 root 2 0 3032K 1636K select 0:06 0.00% 0.00% sendmail 84 root 2 0 2592K 1348K select 0:02 0.00% 0.00% sshd 4111 takatani 2 0 5292K 1760K select 0:01 0.00% 0.00% sshd 82 root 10 0 1024K 620K nanslp 0:01 0.00% 0.00% cron 73 root 2 0 984K 612K select 0:01 0.00% 0.00% syslogd 4112 takatani 18 0 1428K 1020K pause 0:00 0.00% 0.00% tcsh 86 root 2 0 924K 440K select 0:00 0.00% 0.00% usbd 4109 root 2 0 5292K 1716K sbwait 0:00 0.00% 0.00% sshd 4330 takatani 30 0 1876K 840K RUN 0:00 0.00% 0.00% top 4168 takatani 18 0 1388K 952K pause 0:00 0.00% 0.00% tcsh 92 smmsp 18 0 2936K 1508K pause 0:00 0.00% 0.00% sendmail 126 root 3 0 1336K 844K ttyin 0:00 0.00% 0.00% csh 4147 takatani 18 0 1392K 960K pause 0:00 0.00% 0.00% tcsh 4167 root 10 0 1268K 916K wait 0:00 0.00% 0.00% login 118 root 10 0 1268K 820K wait 0:00 0.00% 0.00% login 4146 root 10 0 1268K 916K wait 0:00 0.00% 0.00% login4.9RではCardBusが使えませんからPCMCIAなNICを使っているのですが、Windowsで動かしたときと比べると驚異的に低い負荷で動作し、メモリもさほど必要としません。
ということで、FreeBSDから音が出るようになるといろいろ遊べそうですね。T20には30秒ノイズ問題があるといっても、'You've got mail' ぐらいはしゃべらせることができます(^^;)
11/02 | ( うっちゃん ) |
私はWindows XPでも苦労してしまいましたが… いや音は出るには出るのですが、楽器がぜんぜん違うので YMF744ドライバあっちこっち探してしまいました。 混乱の原因にS-YXG50 もあったのです。 Win98でほったらかしていたのがあまりに長かったせいもあります。 CD-RWって書いてあるのにCDドライブとしか書かれていない。どうしたものかな。 |