5 しばしば問われる質問に対する回答

この章の目次へ

このセクションでは Usenet のニュースグループやメーリングリストでしばし ば問われる質問とその答えをまとめます。

5.1 サウンド関係のデバイルファイルは多数あるが、それぞれの役割りは?

/dev/audio

Sun ワークステーションと互換のデバイスファイル (部分的なインプリメントで、Sun の ioctl インターフェースは利用しておら ず、u-law エンコーディングしか使っていない)

/dev/dsp

サンプリングされた音声用のデバイス

/dev/mixer

ミキサー用デバイス

/dev/sequencer

MIDI, FM, GUS が使うデバイス

/dev/midi

MIDI 用デバイス (現在のサウンドドライバではインプ リメントされていない)

/dev/sndstat

サウンドドライバの状態表示用

/dev/audio1

2 枚目のサウンドカード用

/dev/dsp1

2 枚目のサウンドカード用

PC 内蔵スピーカーを使うドライバは以下のデバイスを利用する:

/dev/pcaudio

/dev/audio と同じ

/dev/pcsp

/dev/dsp と同じ

/dev/pcmixer

/dev/mixer と同じ

5.2 どうすればサウンドファイルを再生できるの?

Sun ワークステーションで使われている(.au)ファイルはそのまま /dev/audio に書き込めば再生できます(例えば cat sample.au > /dev/audio)。サンプリングされたままのファイル(Raw samples)は /dev/dsp に送ればいいでしょう。play のようなプログラ ムを使えば、さまざまなファイルのフォーマットを自動的に識別し、正しいサ ンプリング周波数などを設定してくれるので便利です。

5.3 どうすれば録音できるの?

/dev/audio あるいは /dev/dsp を読みだせばサンプリン グされたデータが得られるので、それをファイルにリダイレクトすればいいで しょう。vrecのようなプログラムを使えば、サンプリング周波数や 録音時間(duration)などを簡単に設定することができます。適切な入力元を選 ぶためにはミキサー機能を持ったプログラムも必要かもしれません。

5.4 一枚以上のサウンドカードを使えるか?

最大 2 枚までのサウンドカードがサポートされています。Gravis UltraSound か MPU-401 を SoundBlaster, SoundBlaster Pro, SoundBlaster16, ProAudioSpectrum16 などと一緒にインストールすることが可能です。しかし、 ProAudioSpectrm16 と SoundBlaster を同時に使うことは出来ません(PAS16 は SB エミュレーター機能を有しています)。同様に、同じ種類 のカードを同時に複数枚使うこともできません。例えば、GUS + GUS と言った組 みあわせもダメです。

LILO のようなブートローダーを使えば、起動時にコマンドラインからサウン ドカードへパラメータを渡すこともできます。詳しくは、カーネルのソースコー ドに附属のReadme.linuxを読んでください。

5.5 Error: No such file or directory for sound devices

サウンドドライバ用のデバイスファイルを作成する必要があります。デバイス ファイルの作成に関する部分を参照してください。もしデバイスファイルがあ るようなら、デバイスのメジャー番号、マイナー番号が正しいかを確認してく ださい(いくつかの古い Linux のCD-ROM では、インストール時に誤ったデバ イスファイルを作成するようです)。

5.6 Error: No such device for sound devices

サウンドドライバを設定したカーネルを使っていないか、I/O アドレスの設定 が間違っている可能性があります。ちゃんと新しくコンパイルしたカーネルを 使っているか、サウンドドライバの設定がハードウェアの設定と合っているか を確認してください。

5.7 Error: No space left on device for sound devices

これは、必要なデバイスファイルを作らずに /dev/audio や /dev/dsp から録 音しようとした時に起ります。現在ではサウンド用のデバイスファイルはレギュー ラーファイルになっており、ディスク上に領域を必要とします。このドキュメ ントのデバイスファイルの作成 の章を読んで、デバイルファイルを 作成するためのスクリプトを走らせましょう。

5.8 ファイルが部分的にしか再生されない

症状としては、数秒間だけ再生されて完全に止ってしまう、あるいは "missing IRQ" や "DMA timeout" というエラーメッセージが出るというもの です。多分、IRQ や DMA チャネルの設定が間違っているのでしょう。カーネ ルの設定とサウンドカードのジャンパの設定が合っているか、また、それらが 他のカードと重複していないかを確認しましょう。

5.9 MOD ファイルの再生時に間があく

MOD ファイルの再生にはかなりの CPU パワーを必要とします。同時に多くの プロセスを動かしすぎて、リアルタイムで再生するには遅くなっているのかも しれません。可能な方法は:

です。

5.10 サウンドに対応したプログラムをコンパイルする時にコンパイルエラーになる

サウンドドライバの 1.0c 以前のバージョンでは、今のものとは違い、互換性 のないioctl() を使っていました。新しいソースコードを手に入れ るか、新しいサウンドドライバで使えるように変更を加える必要があるでしょ う。より詳しくはサウンドドライバのReadme ファイルを見てくださ い。

また、コンパイル時にきちんと最新のsoundcard.hultrasound.h を参照しているか確認してください。このテキストの 冒頭のインストールの指示を読んでください。

5.11 以前は動いていたサウンド対応のプログラムが SEGV エラーを出す

これは上記のものと同じ問題でしょう。

5.12 サウンドドライバのバグや制限は?

カーネル附属のサウンドドライバのソースコードに附属の Readme , CHANGELOG ファイルを参照してください。

5.13 どのバージョンのサウンドドライバを使うのがいい?

もしバージョン 1.0c 以前のものを使っていれば、バージョンアップする必要 があります。1.0c 以前のバージョンでは、バージョン 2.0 以降のサウンドド ライバに対応したプログラムを正しくコンパイルできません。

バージョン 2.0 以降には目立った変更は行われていませんので、お使いのバー ジョンで問題なく、機能的に十分ならば特に新しいものを採用する必要はあり ません(このことは少くとも 1994 年の 9 月までは確かです)

最新の公式バージョンは最新の Linux のカーネルと共に配布されています。 その他、いくつかテスト用のプロトタイプバージョンも存在します。バー ジョン 2.9 以前のものはかなり安定しています。2.99.XX という形のバージョ ン番号を持つものは不完全で実験用のリリースです。

もしサウンドドライバの開発に興味があれば、linux activists の SOUND チャ ンネルに参加してください。

5.14 サウンドドライバに関するオプションはどういう意味?

サウンドドライバの設定時に、まず 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" と答えます。

5.15 サウンドドライバの今後の機能強化計画は?

サウンドドライバは Linux 専用のものではありません。他のインテル CPU を 使っている Unix OS もサポートしています。そのため、現在では "VoxWare" という名前で呼ばれています。今後考えられる機能強化は、

5.16 サウンドドライバが使う ioctls() 等に関するドキュメントは?

これらはHacker's Guid to VoxWare にまとめてあり、現在ではドラ フトの形で入手可能です。最新版は draft 2 で、nic.funet.fi/pub/OS/linux/ALPHA/soundにあります。このディレクトリは "hidden" になっていて、ディレクトリのリストからは見えません。でも、そ のディレクトリへ "cd" で移動して、FTP の "dir" コマンドを使えば、ファ イルがそこにあることがわかります。

5.17 途切れることなく再生、録音するにはどれくらいの CPU パワーが必要でしょう?

この問題にはさまざまな要素がからんでいるので簡単には答えられません。例 えば、

概して、8 bit のサウンドカードを使うなら、どんな 386 マシンでもサンプ リング・ファイルや FM 合成音を楽に再生できるようです。

一方、MOD ファイルの再生にはより CPU の能力を必要とします。試してみた ところでは、44kHz の周波数で再生するためには、486/50 機のほぼ 4 割のス ピードが必要で、386/25 機では 22 kHz 以上の周波数ではほとんど再生でき ませんでした(サウンドブラスタのような 8 bit のサウンドカードを使った場 合)。Gravis UltraSound のような高機能のカードでは、カード自体がハード ウェア的により多くの機能を持っているので、より少い CPU パワーで済みま す。

以上は、コンピュータが他に CPU を酷使する仕事をしてない場合の話です。

Sox のような変換ツールを使ってサウンドファイルのフォーマットを変換した り、エフェクトを付けくわえたりする場合は、コ・プロセッサがあればずっと 速く処理できます。でも、カーネル組みこみのサウンドドライバ自身は一切浮 動小数点演算は利用していません。

5.18 PAS16 と ADAPTEC 1542 SCSI ホスト・アダプタの問題

(以下の説明は 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 のバス・ スピードが使えるはずです。

訳注 ここに "Exit soapbox (stage left)"という表現が使われていますが、 これはどういう意味でしょう?多分ののしりなり非難の表現と思い、あえて訳 してはいませんが。

最初の問題(330h の I/O ベースアドレス)は、あなたのマザーボードが使って いるチップセット、バス・スピード、その他の BIOS の設定、そして月の位相 によって起ります。2 つめの問題(DMA が間に合わない)は RAM のリフレッシュ の設定(hidden あるいは synchronous)、1542 の DMA レート、そして(恐らく) バスの I/O レートが関係しています。3 番目の問題は、Media Vision に電話 して、どの種の Symphony チップセットが彼らの遅いデザインのカードと互換 性が無いか聞きだせば解決するでしょう。でも、気をつけた方がいいですよ。 私が話した3、4 人の技術者たちは頭にひどい障害を持っていましたから (brain dameged)。私が見る限り、彼等は自分たちのものすらよく理解してい ないから、他者のハードウェアに関する言葉は全く信用できないも のでした。

5.19 SoundBlaster Pro 1 の FM シンセサイザーに関する問題

新しい SB Pro は OPL-3 FM チップを使っているのに対して、古いSB Pro 1 のバージョンは OPL-2 チップを使っています。サウンドドライバは OPL-3 を 前提に書かれており、サウンドドライバ 2.5 でこの問題は解決するでしょう。

5.20 GUS-MAX はサポートしてる?

まだ GUS-MAX は完全にはサポートしていません。しかし、部分的な機能は現 在のサウンドドライバでも動作します。サウンドドライバは、ミキサーや 16 bit サンプリングのような GUS-MAX で新しく追加された機能は知りません。 最初 MS-DOS でシステムをブートして、カードをイニシャライズしてから Linux を立ち上げれば(ctrl-alt-del のソフトウェアリセットで)動くでしょ う。

GUS-MAX(と GUS + 16 ビット・ドーターカードの組合せ)の機能は、近い将来、 カーネル・ドライバとしてサポートされるでしょう。

5.21 私の使っているサウンドカードがサポートされてません。どうしましょう?

まず、使っているカードが本当にサポートされていないか確認しましょう。い くつかのカードはサポートされているカードと互換性があります(例えば Logitech SoundMan 16 は ProAudioSpectrum 16 と互換です)。質問は NetNews、あるいは Linux activists の SOUND チャンネルにするのがいいで しょう。

もし本当にあなたのカードがサポートされていなかった場合:

という方法があります。

Hacker's Guide to Voxware には、どのカードが将来サポートされ るかについてのコメントがあります。

5.22 サンプリングを録音と再生同時に行うことは可能でしょうか?

ハードウェア的な制限に依存します。ほとんどのサウンドカードでは不可能で す。これができる唯一のカードは ProAudioSpectrum16 です。より詳しくは、 Hacker's Guide to Voxwareの "bidirectional mode"(双方向モード) を参照してください。

前の章へ

この章の目次へ, この文書の目次へ

この文書の最初へ , この章の最初へ