このセクションでは Usenet のニュースグループやメーリングリストでしばし ば問われる質問とその答えをまとめます。
Sun ワークステーションと互換のデバイスファイル (部分的なインプリメントで、Sun の ioctl インターフェースは利用しておら ず、u-law エンコーディングしか使っていない)
サンプリングされた音声用のデバイス
ミキサー用デバイス
MIDI, FM, GUS が使うデバイス
MIDI 用デバイス (現在のサウンドドライバではインプ リメントされていない)
サウンドドライバの状態表示用
2 枚目のサウンドカード用
2 枚目のサウンドカード用
PC 内蔵スピーカーを使うドライバは以下のデバイスを利用する:
/dev/audio と同じ
/dev/dsp と同じ
/dev/mixer と同じ
Sun ワークステーションで使われている(.au)ファイルはそのまま
/dev/audio
に書き込めば再生できます(例えば cat sample.au
> /dev/audio
)。サンプリングされたままのファイル(Raw samples)は
/dev/dsp
に送ればいいでしょう。play
のようなプログラ
ムを使えば、さまざまなファイルのフォーマットを自動的に識別し、正しいサ
ンプリング周波数などを設定してくれるので便利です。
/dev/audio
あるいは /dev/dsp
を読みだせばサンプリン
グされたデータが得られるので、それをファイルにリダイレクトすればいいで
しょう。vrec
のようなプログラムを使えば、サンプリング周波数や
録音時間(duration)などを簡単に設定することができます。適切な入力元を選
ぶためにはミキサー機能を持ったプログラムも必要かもしれません。
最大 2 枚までのサウンドカードがサポートされています。Gravis UltraSound か MPU-401 を SoundBlaster, SoundBlaster Pro, SoundBlaster16, ProAudioSpectrum16 などと一緒にインストールすることが可能です。しかし、 ProAudioSpectrm16 と SoundBlaster を同時に使うことは出来ません(PAS16 は SB エミュレーター機能を有しています)。同様に、同じ種類 のカードを同時に複数枚使うこともできません。例えば、GUS + GUS と言った組 みあわせもダメです。
LILO のようなブートローダーを使えば、起動時にコマンドラインからサウン
ドカードへパラメータを渡すこともできます。詳しくは、カーネルのソースコー
ドに附属のReadme.linux
を読んでください。
No such file or directory
for sound devices サウンドドライバ用のデバイスファイルを作成する必要があります。デバイス ファイルの作成に関する部分を参照してください。もしデバイスファイルがあ るようなら、デバイスのメジャー番号、マイナー番号が正しいかを確認してく ださい(いくつかの古い Linux のCD-ROM では、インストール時に誤ったデバ イスファイルを作成するようです)。
No such device
for sound devices サウンドドライバを設定したカーネルを使っていないか、I/O アドレスの設定 が間違っている可能性があります。ちゃんと新しくコンパイルしたカーネルを 使っているか、サウンドドライバの設定がハードウェアの設定と合っているか を確認してください。
No space left on device
for sound devices これは、必要なデバイスファイルを作らずに /dev/audio や /dev/dsp から録 音しようとした時に起ります。現在ではサウンド用のデバイスファイルはレギュー ラーファイルになっており、ディスク上に領域を必要とします。このドキュメ ントのデバイスファイルの作成 の章を読んで、デバイルファイルを 作成するためのスクリプトを走らせましょう。
症状としては、数秒間だけ再生されて完全に止ってしまう、あるいは "missing IRQ" や "DMA timeout" というエラーメッセージが出るというもの です。多分、IRQ や DMA チャネルの設定が間違っているのでしょう。カーネ ルの設定とサウンドカードのジャンパの設定が合っているか、また、それらが 他のカードと重複していないかを確認しましょう。
MOD ファイルの再生にはかなりの CPU パワーを必要とします。同時に多くの プロセスを動かしすぎて、リアルタイムで再生するには遅くなっているのかも しれません。可能な方法は:
です。
サウンドドライバの 1.0c 以前のバージョンでは、今のものとは違い、互換性
のないioctl()
を使っていました。新しいソースコードを手に入れ
るか、新しいサウンドドライバで使えるように変更を加える必要があるでしょ
う。より詳しくはサウンドドライバのReadme
ファイルを見てくださ
い。
また、コンパイル時にきちんと最新のsoundcard.h
と
ultrasound.h
を参照しているか確認してください。このテキストの
冒頭のインストールの指示を読んでください。
これは上記のものと同じ問題でしょう。
カーネル附属のサウンドドライバのソースコードに附属の Readme
,
CHANGELOG
ファイルを参照してください。
もしバージョン 1.0c 以前のものを使っていれば、バージョンアップする必要 があります。1.0c 以前のバージョンでは、バージョン 2.0 以降のサウンドド ライバに対応したプログラムを正しくコンパイルできません。
バージョン 2.0 以降には目立った変更は行われていませんので、お使いのバー ジョンで問題なく、機能的に十分ならば特に新しいものを採用する必要はあり ません(このことは少くとも 1994 年の 9 月までは確かです)
最新の公式バージョンは最新の Linux のカーネルと共に配布されています。 その他、いくつかテスト用のプロトタイプバージョンも存在します。バー ジョン 2.9 以前のものはかなり安定しています。2.99.XX という形のバージョ ン番号を持つものは不完全で実験用のリリースです。
もしサウンドドライバの開発に興味があれば、linux activists の SOUND チャ ンネルに参加してください。
サウンドドライバの設定時に、まず configure
というプログラムが
コンパイルされ、実行されます。このプログラムがあれこれ質問して、サウン
ドカードに必要な設定を local.h
に作成します。
local.h
で定義される(あるいは定義を消される)シンボル名の意味は
以下の通りです:
Symbol その意味 ====== ======= KERNEL_SOUNDCARD サウンドドライバの使用/不使用 CONFIGURE_SOUNDCARD サウンドドライバの使用/不使用 EXCLUDE_PAS ProAudioSpectrum の使用 EXCLUDE_SB SoundBlaster の使用 EXCLUDE_ADLIB AdLib の使用 EXCLUDE_GUS Gravis UltraSound の使用 EXCLUDE_MPU401 MPU-401 MIDI インターフェースの使用 EXCLUDE_SBPRO SoundBlaster Pro の使用 EXCLUDE_SB16 SoundBlaster 16 の使用 EXCLUDE_AUDIO ディジタル音声の使用 EXCLUDE_MIDI MIDI インターフェースの使用 EXCLUDE_YM3812 FM シンセサイザー(YM3812/OPL-3)の使用 EXCLUDE_SEQUENCER MIDI シーケンサーの使用 EXCLUDE_PRO_MIDI SoundBlaster Pro MIDI の使用 EXCLUDE_CHIP_MIDI オン・チップ MIDI の使用 SBC_IRQ SoundBlaster が使うIRQ 番号 SBC_DMA SoundBlaster が使うDMA チャネル SB16_DMA SoundBlaster 16 が使う DMA チャネル SB16_MIDI_BASE SoundBlaster 16 MIDI の I/O ベースアドレス PAS_IRQ ProAudioSpectrum が使う IRQ 番号 PAS_DMA ProAudioSpectrum が使う DMA チャネル GUS_IRQ Gravis UltraSound が使う IRQ 番号 GUS_DMA Gravis UltraSound が使う DMA チャネル GUS_BASE Gravis UltraSound の I/O ベースアドレス MPU_IRQ MPU-401 が使う IRQ 番号 MPU_BASE MPU-401 が使う I/O ベースアドレス DSP_BUFFSIZE DMA バッファ・サイズ
これら以外にも、サウンドドライバのリビジョン番号や configure した日時 を記録するためにいくつか定義されるシンボルがあります。
また、サウンドブラスタの I/O ベースアドレス(220h)のように、configure プ
ログラムでは設定されないパラメーターもあります。これらを変更したい場合、
直接 sound_config.h
ファイルを修正してください。
サウンドドライバを使わないようにする時は、make config
を起動
して、"Sound card support?" の質問に "no" と答えます。
サウンドドライバは Linux 専用のものではありません。他のインテル CPU を 使っている Unix OS もサポートしています。そのため、現在では "VoxWare" という名前で呼ばれています。今後考えられる機能強化は、
これらはHacker's Guid to VoxWare にまとめてあり、現在ではドラ
フトの形で入手可能です。最新版は draft 2 で、nic.funet.fi
の
/pub/OS/linux/ALPHA/sound
にあります。このディレクトリは
"hidden" になっていて、ディレクトリのリストからは見えません。でも、そ
のディレクトリへ "cd" で移動して、FTP の "dir" コマンドを使えば、ファ
イルがそこにあることがわかります。
この問題にはさまざまな要素がからんでいるので簡単には答えられません。例 えば、
概して、8 bit のサウンドカードを使うなら、どんな 386 マシンでもサンプ リング・ファイルや FM 合成音を楽に再生できるようです。
一方、MOD ファイルの再生にはより CPU の能力を必要とします。試してみた ところでは、44kHz の周波数で再生するためには、486/50 機のほぼ 4 割のス ピードが必要で、386/25 機では 22 kHz 以上の周波数ではほとんど再生でき ませんでした(サウンドブラスタのような 8 bit のサウンドカードを使った場 合)。Gravis UltraSound のような高機能のカードでは、カード自体がハード ウェア的により多くの機能を持っているので、より少い CPU パワーで済みま す。
以上は、コンピュータが他に CPU を酷使する仕事をしてない場合の話です。
Sox のような変換ツールを使ってサウンドファイルのフォーマットを変換した り、エフェクトを付けくわえたりする場合は、コ・プロセッサがあればずっと 速く処理できます。でも、カーネル組みこみのサウンドドライバ自身は一切浮 動小数点演算は利用していません。
(以下の説明は seeker@indirect.com
から寄せられたものです)
Linux では 1542 のアドレスは 330(デフォルト)と 333 しか認識されません。 一方、PAS では MPU-401 エミュレーション機能は 330 のアドレスでしか使え ません。ですから、ソフトウェア的には使用しないように設定しても、1542 がデフォルトの 330 のアドレスで使われる限り、トラブルの種になります。 1542 の使うアドレスを 333 にすればみんなが幸せになれます。
おまけに、1542 も PAS-16 も 16-bit DMA を使いますので、16-bit 44KHz で ステレオ録音して、そのファイルを 1542 に接続した SCSI ハードディスクに セーブしようとすると、まさにトラブルに見舞われることになります。DMA が 重なり、RAM をリフレッシュするための十分な余裕がとれないため、``PARITY ERROR - SYSTEM HALTED'' という怖ろしいエラーメッセージを見ることになり ます。QIC-117 テープドライブを作っているいくつかのセカンド-パーティが からむと、話は更にひどくなります。1542 自体が普通よりもバスの on/off 時間を長めにとるのにくわえて、これらのベンダーはさらに長い on/off 時間 を推奨しているので、彼らのテープドライバを組みこむと、さらにエラーが起 りやすくなります。Adaptec の BBS か Internet のどこかから SCSISEL.EXE というプログラムを入手して、問題が無くなるまで BUS が ON になっている 時間を短くするか、OFF になっている時間を長くしてみましょう。それから、 念のためさらにもう一目盛程度その先へ進めます。SCSISEL は EEPROM の設定 を変更するので、DOS の config.sys で設定する DOS 用のドライバへのパッ チよりも確実で、(DOS のパッチとは異なり)DOS を経由せずに直接 Linux を 立ち上げても使えるはずです。これで二つめの問題も解決しました。
さて、もう一つ問題が残っています。古い Symphony 製のチップセットは劇的 など I/O サイクルのタイミングを遅らせて、バスへのアクセス速度を速くし ています。私が試した限りでは、PAS-16 以外には I/O サイクルが遅れる問題 を生じるカードはありませんでした。Media Vision の BBS には SYMPFIX.EXE という、Symphony 製のバス・コントローラーの診断ビットをいじって、何と か手当しようとするプログラムが登録されていますが、ハードウェア的な保証 はありません。可能性として以下のものがあります。
Young Microsystems では、彼らが輸入したボードに関して $30 前後の手数料 でバス・チップを新しいものと交換してくれます。その他のベンダーでも、そ のマザーボードがどこの製品で、誰が輸入したのかを証明できれば、同じよう なサポートはしてくれるかも知れません(幸運を祈ります)。本当の問題は、私 の知る限り ProAudio のバス・インターフェースチップにあります。誰も $120 もするサウンドカードを 6MHz の AT バスに付けたくはないでしょ う。PAS16 を使うようなユーザーの大部分は 25-40MHz の 386/486 機を持っ ており、チップさえ正しく設計されていれば最低でも 12MHz のバス・ スピードが使えるはずです。
最初の問題(330h の I/O ベースアドレス)は、あなたのマザーボードが使って いるチップセット、バス・スピード、その他の BIOS の設定、そして月の位相 によって起ります。2 つめの問題(DMA が間に合わない)は RAM のリフレッシュ の設定(hidden あるいは synchronous)、1542 の DMA レート、そして(恐らく) バスの I/O レートが関係しています。3 番目の問題は、Media Vision に電話 して、どの種の Symphony チップセットが彼らの遅いデザインのカードと互換 性が無いか聞きだせば解決するでしょう。でも、気をつけた方がいいですよ。 私が話した3、4 人の技術者たちは頭にひどい障害を持っていましたから (brain dameged)。私が見る限り、彼等は自分たちのものすらよく理解してい ないから、他者のハードウェアに関する言葉は全く信用できないも のでした。
新しい SB Pro は OPL-3 FM チップを使っているのに対して、古いSB Pro 1 のバージョンは OPL-2 チップを使っています。サウンドドライバは OPL-3 を 前提に書かれており、サウンドドライバ 2.5 でこの問題は解決するでしょう。
まだ GUS-MAX は完全にはサポートしていません。しかし、部分的な機能は現 在のサウンドドライバでも動作します。サウンドドライバは、ミキサーや 16 bit サンプリングのような GUS-MAX で新しく追加された機能は知りません。 最初 MS-DOS でシステムをブートして、カードをイニシャライズしてから Linux を立ち上げれば(ctrl-alt-del のソフトウェアリセットで)動くでしょ う。
GUS-MAX(と GUS + 16 ビット・ドーターカードの組合せ)の機能は、近い将来、 カーネル・ドライバとしてサポートされるでしょう。
まず、使っているカードが本当にサポートされていないか確認しましょう。い くつかのカードはサポートされているカードと互換性があります(例えば Logitech SoundMan 16 は ProAudioSpectrum 16 と互換です)。質問は NetNews、あるいは Linux activists の SOUND チャンネルにするのがいいで しょう。
もし本当にあなたのカードがサポートされていなかった場合:
という方法があります。
Hacker's Guide to Voxware には、どのカードが将来サポートされ るかについてのコメントがあります。
ハードウェア的な制限に依存します。ほとんどのサウンドカードでは不可能で す。これができる唯一のカードは ProAudioSpectrum16 です。より詳しくは、 Hacker's Guide to Voxwareの "bidirectional mode"(双方向モード) を参照してください。