Sound Blaster 16 で MP3 を再生しよう!



注)
これは一例です。
ページ内に出て来る設定値をそのまま使っても動作しない事は十分考えられます。 環境が違うのですから当然と言えるでしょう。 インストールの為の手引として作成しました。 作業方法のみを参考にして下さい。 全てのサウンドカードが同じ要領で使える様になるわけではありませんし、 同じサウンドカードだったにせよ動作を保障する物でもありません。
ですが、ちょっとしたミスにより動作していない場合も考えられます。 気軽に書き込める掲示板を用意してあります。 意見・感想・質問等がある方はこちらをどうぞ。

FreeBSD で MP3 を元気良く鳴らしてみましょう!
静かな部屋で黙々と使う UNIX もオツなものですが、 X-Window に綺麗な画像を散りばめて、ビートの効いた曲を流しながら使う UNIX も贅沢な気分が味わえてグッドです(^^)

下記の環境にて目的を達成する事が出来ました。
名称 内容 備考
FreeBSD-3.1Release Operating system  
XFree86-3.3.3.1 Window system  
bladeenc-0.76 MP3 encoder  
tosha-0.6 CD-DA data reader  
xamp-0.8.7 MP3 player  
SB16P20/B Sound card ぷらっとホームにて購入
PX32TSe/TO 32X CD-ROM drive  

参考までに今回使用したサウンドカードの全体とチップの写真を掲載します。



まずは何と言ってもサウンドカードが使える状態になっていないといけません。 FreeBSD は標準で Sound Blaster 互換のサウンドカードを使える実力を持っていながら標準的なインストールをしただけでは使えない状態にあります。 サウンドカードが使える状態にするにはカーネルを作り直す必要があります。
と、その前に、マザーボードにサウンドカードを刺しておきましょう。 このサウンドカードは Plug & Play に対応していますから刺すだけでOKです。 唯一設定が必要なのはカードに内蔵されたアンプを使用するか否かの設定でしょう。 ヘッドフォンで聴くのか、オーディオアンプに繋ぐのかで大きく違いますから注意が必要です。 スロットに刺したら起動してみましょう。 無事に FreeBSD が立ち上がれば電気的なトラブルは無かったと思って良いでしょう。


ではいよいよサウンドカードを使う為のカーネルの再構築に入ります。 ただし、そのための設定はデフォルトで用意されている GENERIC と言うコンフィグファイルにはありません。 現在使用可能な全てのデバイスの設定が書かれた LINT と言うファイルの中に用意されています。 この LINT の中から Sound Blaster 16 に関する設定を拾い出してコピーしてあげましょう。 必要な部分は下記の行です。
controller snd0 device sb0 at isa? port 0x220 irq 5 drq 1 device sbxvi0 at isa? drq 5 device sbmidi0 at isa? port 0x330 device opl0 at isa? port 0x388
カーネルコンパイルに慣れている人はすぐに行動に移してしまうかも知れませんが、ここはグッと我慢です。 私の場合、上記のデフォルトの設定だけでは使えませんでした。 話せば長くなるのですが、そんな事を書いても仕方無いので目的への最短コースを紹介しましょう。

サウンドカードを刺して FreeBSD が使える状態にあるのであれば、サウンドカードのリソースがいくつに設定されているのかを調べる必要があります。 root になって pnpinfo コマンドを実行します。 結果は下記のようになるでしょう。(長くなるので必要な所だけ抜粋します)
% su # pnpinfo Checking for Plug-n-Play devices... Card assigned CSN #1 Vendor ID CTL00f0 (0xf0008c0e), Serial Number 0xffffffff PnP Version 1.0, Vendor Version 16 Device Description: Creative ViBRA16X PnP Logical Device ID: CTL0043 0x43008c0e #0 Device Description: Audio TAG Start DF Good Configuration IRQ: 5 - only one type (true/edge) DMA: channel(s) 1 8-bit, not a bus master, count by byte, , Compatibility mode DMA: channel(s) 3 8-bit, not a bus master, count by byte, , Compatibility mode I/O Range 0x220 .. 0x220, alignment 0x1, len 0x10 [16-bit addr] I/O Range 0x330 .. 0x330, alignment 0x1, len 0x2 [16-bit addr] I/O Range 0x388 .. 0x388, alignment 0x1, len 0x4 [16-bit addr] TAG Start DF 〜〜〜 (中略) 〜〜〜 Logical device #0 IO: 0x0220 0x0300 0x0388 0x0000 0x0000 0x0000 0x0000 0x0000 IRQ 5 0 DMA 1 0 IO range check 0x00 activate 0x01 〜〜〜 (後略) 〜〜〜
Good Configuration と言うのはこのカードの標準的な設定値を意味します。 ですが、実際には標準的な設定値からずれて認識されているのが分かります。 また、このサウンドチップ(ViBRA16X)は 16-bit DMA 転送がサポートされていない事も分かります。 よって sbxvi0 と言うデバイスもそのままでは使う事が出来ません。(XVI はローマ数字の 16) pnpinfo の報告を元に LINT からコピーした行を下記のように手を加えます。
controller snd0 device sb0 at isa? port 0x220 irq 5 drq 1 device sbxvi0 at isa? conflicts drq 1 device sbmidi0 at isa? port 0x300 device opl0 at isa? port 0x388
修正が済んだらカーネルコンパイルを行いますが、コンパイルの方法については説明しません。 他の人のページか、専門の書籍を参考にして新しいカーネルをインストールして下さい。 無事にインストールまで進められた人はOSを再起動してみましょう。と、その前に・・・ OSがサウンドカードを使うには専用の窓口が必要となります。それを作ってあげる事にします。 具体的には root 権限を得て専用のスクリプトを実行します。
% cd /dev % su # sh MAKEDEV snd0
すると /dev の下に下記のデバイスファイルが作られると思います。指定した snd0 そのものは作られません。
audio0 , dspW0 , midi0 , mixer0 , music0 , pss0 , sequencer0 , sndstat
上記のファイルに加えていくつかのシンボリックリンクも作成されます。 あまり使う事は無いと思いますが、一応 /dev の下を見て確認しておきましょう。


それでは一度OSを再起動します。 デバイスのプローブの中で下記のような行があれば無事に認識されたと思って良いでしょう。
sb0 at 0x220 irq 5 drq 1 on isa snd0: sbxvi0 at drq 1 on isa snd0: sbmidi0 at 0x300 on isa snd0: opl0 at 0x388 on isa snd0:
MP3 や WAV 形式のファイル再生だけならば、とりあえず sbmidi0 と opl0 が認識されていなくても問題は無いと思います。 最悪の場合、それでも先に進んじゃいましょう(^^;


とりあえず、ここまで来ればインストールは完了です。 それでは音を出して見ましょう。問題が無ければ元気に鳴ってくれるはずです。
% mpg123 foo.mp3
どうです? 鳴りましたか? 鳴らなかったと言うのであれば、再度 pnpinfo コマンドを実行してシステムリソースを確認して見ましょう。 作り直したカーネルと設定はあっていますか? もしかすると特定のアプリケーションと相性が悪いのかも知れません(未確認)。 そんな時は他のプレーヤーも試して見ましょう。 au 形式のオーディオファイルや、wav 形式のファイルが手持ちの中にあるのならそちらも試して見ましょう。 それぞれ、
% waveplay foo.wav        (wav 形式の場合)
% cp foo.au /dev/audio0   (au 形式の場合)
となります。 異なるフォーマットでも鳴らなかった場合はハード的なトラブルも疑った方が良いでしょう。 ケーブルが繋がっていなかったとか、アンプの電源がOFFになっていたとかは良くある事ですが、シャレになりません。


さて、再生も無事に出来たところで今度はデータの作成です。 まず始めにMP3にしたい曲をファイルとして持つ必要があります。 ソースは音楽CD、中間ファイルは wav フォーマットとします。次の様にすると音楽CDからデータとして取り込む事が出来ます。 例として、3・5・6曲目を取り込む事とします。
% su
# tosha -t 3,5,6 -f wav -v
取り込みの過程が見れた方が安心出来るのでバーボーズオプション(-v)を付けてみました。 root 権限を持っていなとこのツールは利用出来ない様ですが、その為に出来上がったファイルのオーナーが root になってしまいます。 何かと不便なので chown コマンドで一般ユーザーの物にしてあげましょう。

wav ファイルを再生出来る環境が整っていればこの時点で曲の頭だけでも聴いておいた方が良いかも知れません。 違う曲を取り込んでしまったかも知れませんし、何らかのトラブルでノイズだらけかも知れないからです。 MP3への変換にはかなり待たされるので最初の内はこの段階で聴いておいて確認しておいた方が良いでしょう。 データの確認が出来たのならファイル名も変更しておきましょう。 取り込みが終った段階ではファイル名が track00.wav と言ったような機械的に付けられたファイル名になってます。 長くなっても良いから英語なりローマ字でタイトル全部付けておくと選曲ミスのトラブルは減ると思います。 人によっては逆にトラブルの原因になりそうな気もしますが・・・(^^;

それではMP3へ変換します。 変換したいファイル名を全て与えます。 かなり待たされるのでバックグラウンドで動かすか、別ターミナルで動かしましょう。
% bladeenc foo.wav var.wav tmp.wav
の様にすると拡張子だけ mp3 になって変換されます。 元の wav ファイルは残りますので不要なら消しましょう。消し忘れるとハードディスクを圧迫します。


さぁ、準備は整いました。それではいよいよ X-Window 上での再生です。
% xamp &
としてプレーヤーを立ち上げます。 一番下の中央付近にちょっと大きめのボタンがありますから押します。 すると演奏リスト作成用のダイアログが開くので [Add File] ボタンをおいて曲を追加して行きます。 ダイアログをクローズし、プレイボタンを押せばリスト順に再生されますが、ファイル名でダブルクリックすればその曲から再生が出来ます。 あとは普通のCDプレーヤーと特に変わらない操作ですから説明は不要でしょう。

HDDの容量は増える一方でMP3形式のサイズであれば相当な数の曲が入ります。 これで X-Window もより楽しく・・・なると思ったら、演奏の為に相当なCPUパワーを食われてしまう為、快適さが損なわれます(^^; 特にUNIXユーザーは一昔前のハードで構築している場合がほとんどでしょうから聴くだけで何も出来なくなってしまうかも知れませんね。 行動に移すのは余力のある人だけにしましょう(^^; では、おしまい。


Special thanks

dti.sys.unix で温かいレスを下さった方々
ローカルNGと言う事もあってか気楽に質問できました。多大なヒントを頂けた事に感謝してます。
ここでアドバイスが頂けなかったら今も悩んでいた事でしょう。

FreeBSD インストール&活用マニュアル
2.2.7 用の参考書ではあっても設定例は非常に参考になりました。買っておいて良かったです。
特にサウンドカードの部分を執筆した方には感謝です。

[ 親ページへ戻る | Shackのトップページまで戻る | トップページまで戻る | 掲示板 (UNIX関連) に行く ]