次のページ 前のページ 目次へ

6. FAQ への回答

ここでは、Usenetニュースグループやメーリングリストでよく聞かれる質問への 回答を示します。

より多くの質問への回答が OSS サウンドドライバの WWW ページにあります。

6.1 いろいろなサウンドデバイスファイルの意味を教えてください。

以下に示すのは最も標準的なデバイスファイル名ですが、ディストリビューショ ンによっては少し違った名前を使っていることもあります。

/dev/audio

通常は /dev/audio0 へのリンク

/dev/audio0

Sun ワークステーション互換のオーディオデバイス (部分的にしか実装されておらず、Sun ioctl インターフェースはサポートされて いません。u-law エンコーディングだけのサポートです)

/dev/audio1

2 番目のオーディオデバイス(サウンドカードが サポートしているか、複数のサウンドカードがインストールされている場合)

/dev/dsp

通常は /dev/dsp0 へのリンク

/dev/dsp0

最初のディジタルサンプリングデバイス

/dev/dsp1

2 番目のディジタルサンプリングデバイス

/dev/mixer

通常は /dev/mixer0 へのリンク

/dev/mixer0

最初のサウンドミキサー

/dev/mixer1

2 番目のサウンドミキサー

/dev/music

高レベルのシーケンサのインターフェース

/dev/sequencer

低レベルの MIDI, FM, GUS のインターフェース

/dev/sequencer2

通常は /dev/music へのリンク

/dev/midi00

最初の raw MIDI ポート

/dev/midi01

2番目の raw MIDI ポート

/dev/midi02

3番目の raw MIDI ポート

/dev/midi03

4番目の raw MIDI ポート

/dev/sndstat

読み出すとサウンドデバイスの状態を表示する (/proc/sond としても利用可能)

PC スピーカドライバでは以下のデバイスが使用できます。

/dev/pcaudio

/dev/audio と同じ

/dev/pcsp

/dev/dsp と同じ

/dev/pcmixer

/dev/mixer と同じ

6.2 サウンドファイルを再生する方法を教えてください

Sun ワークステーションのサウンドファイル(.au)は、 /dev/audio デバイスに送れば再生できます。raw サンプルは /dev/dspに送れば再生できます。ですが、一般的にこれでは良い結 果が得られないので、再生には play などのプログラムを使う方が いいでしょう。というのも、ほとんどのファイル形式を識別して、サウンドカー ドのサンプリングレートなどを正しく設定してくれるからです。

wavplay や(snd-util パッケージに入っている) vplay のようなプログラムは、 WAV ファイルの再生が得意です。しかし、これらのプログラムは Microsoft の ADPCM 圧縮を行った WAV ファイルを認識できませ ん。また、古いバージョンの play (Lsox パッケージに入っています)は、16 ビットの WAV ファイルをうまく再生できません。

snd-util パッケージに入っている splay コマンドは、コマンドラインで明示 的に適切なパラメータを入力してやれば、ほとんどのサウンドファイルを再生 することができます。

6.3 録音の方法を教えてください

/dev/audio または /dev/dsp を読むと、サンプ リングされたデータが返されるので、これをファイルにリダイレクトすること ができます。vrec などのプログラムを使えば、サンプリングレート や録音時間を簡単に調整することができます。適切な入力デバイスを選択する ためには、ミキサープログラムが必要かもしれません。

6.4 複数のサウンドカードを使うことができますか?

現在のサウンドドライバは、複数の SoundBlaster, SoundBlaster/Pro, SoundBlaster16, MPU-401, MSS カードを同時に使うことができます。 SoundBlaster の 2 枚挿しは可能ですが、local.h を手で編集 して、マクロ SB2_BASE, SB2_IRQ, SB2_DMA, (場合によっては)SB2_DMA2 を定 義する必要があります。SoundBlaster と PAS16 を同時に使うこともできます。

local.h の編集ではなく、"make config" を使ってサウンドの 設定を行う 2.0 以降のカーネルの場合には、ファイル /usr/include/linux/autoconf.h を編集する必要があります。 以下の行が書かれているセクションの後に

#define SBC_BASE 0x220
#define SBC_IRQ (5)
#define SBC_DMA (1)
#define SB_DMA2 (5)
#define SB_MPU_BASE 0x0
#define SB_MPU_IRQ (-1)

以下の行を追加します(値はシステムに合わせて変えてください)。

#define SB2_BASE 0x330
#define SB2_IRQ (7)
#define SB2_DMA (2)
#define SB2_DMA2 (2)

以下のドライバでは複数のサウンドカードを使うことはできません。

6.5 サウンドデバイスにアクセスすると "No such file or directory" というエラーになります。

サウンドドライバのデバイスファイルを作成する必要があります。デバイスファ イルの作成に関する章を参照してください。デバイスファイルが存在する場合 には、メジャーデバイス番号とマイナーデバイス番号が正しいことを確かめて ください(CD-ROM 配布の古い Linux ディストリビューションには、インストー ル時に正しいデバイスファイルを作成しないものがあります)。

6.6 サウンドデバイスにアクセスすると "No such device" というエラーになります。

サウンドドライバを組み込んだカーネルで起動していないか、あるいは I/O アドレスの設定がハードウェアと一致していません。 新しくコンパイルしたカーネルを使っていることと、カーネルの設定時に入力 した設定値がハードウエアの設定と一致していることを確かめてください。

6.7 サウンドデバイスにアクセスすると "No space left on device" というエラーになります。

このエラーは、必要なデバイスファイルを作成せずに /dev/audio または /dev/dsp にデータを送ると 起こります。 この場合、サウンドデバイスは通常ファイルとなり、ディスクが食い潰されて しまいます。この文書の「サウンドデバイスファイルの作成」の章 で説明したスクリプトを走らせる必要があります。

このエラーは、バージョン 2.0 以降のカーネルでデバイスをオープンした時 に RAM の空きが十分でない場合にも起こります。オーディオドライバは、DMA チャネル 1 つにつき、連続した物理 RAM を少なくとも 2 ページ(8k)必要と します。このエラーは、RAM が 16M より少ないマシンの場合や、非常に長い 時間マシンが動作している場合に時々起こります。デバイスの再オープンを試 みる前に以下の C プログラムをコンパイルして実行すると、RAM をいくらか 解放することができるかもしれません。

main() {
  int i;
  char mem[500000];
  for (i = 0; i < 500000; i++)
    mem[i] = 0;
  exit(0);
}

6.8 サウンドデバイスにアクセスすると "device busy" というエラーになります。

一つのサウンドデバイスをオープンできるのは、同時に一つのプロセスだけで す。他のプロセスが問題のデバイスを使っているのでしょう。これを確かめる 方法の一つは、fuser コマンドを使うことです。

% fuser -v /dev/dsp
/dev/dsp:             USER       PID ACCESS COMMAND
                      tranter    265 f....  tracker

上の例では、fuser コマンドは 265 番のプロセスが /dev/dsp デバイスをオープンしていることを示しています。 このプロセスが終了するのを待つか、このプロセスを kill すれば、このサウ ンドデバイスにアクセスできるようになります。 他のユーザの使用状況を見るために、fuser コマンドは root 権限 で実行しなければなりません。

システムによっては、他のユーザのプロセスを見るために、fuser コマンドの実行中に root ユーザでなければならないかもしれません。

6.9 まだ device busy エラーが発生します!

Brian Gough さんによれば、DMA チャネル 1 を使っている SoundBlaster カー ドは、同じく DMA チャネル 1 を使っている QIC-02 テープドライバと競合を 起こして「device busy」エラーを発生する可能性があるそうです。FTAPE を 使っている場合、このドライバが有効になっているかもしれません。 FTAPE-HOWTO によれば、FTAPE を使うために必要なのは QIC-117 ドライバだ けで、QIC-02 ドライバは本質的に必要なわけではないとのことです。QIC-117 を使うが QIC-02 は使わないようにカーネルを再設定すれば、FTAPE とサウン ドドライバを共存させることができます。

6.10 ディジタイズされたサウンドファイルが部分的にしか再生されません。

通常、これはサウンドが 1 秒程度再生された後に停止してしまうか、 「missing IRQ」や「DMA timeout」というエラーメッセージを表示するという 症状です。もっとも疑わしいのは、IRQ や DMA の設定の間違いです。カーネ ルの設定とサウンドカードのジャンパ設定が合っており、かつ他のカードと衝 突していないことを確認してください。

サウンドが「ループ」するという症状が現れることもあります。これは通常 IRQ の競合が原因です。

6.11 MOD ファイルの再生時に音が途切れる

MOD ファイルの再生には、かなりの CPU パワーが必要です。実行 中のプロセスが多過ぎるか、コンピュータのスピードが遅過ぎてリアルタイム 再生ができないのでしょう。次のような解決策があります。

Gravis UltraSound カード(GUS)を使っている場合には、GUS 専用に書かれた MOD ファイルプレイヤ(例えば gmod)を使う必要があります。

6.12 サウンドアプリケーションのコンパイル時にエラーが発生します。

バージョン 1.0c 以前のサウンドドライバの ioctl() スキームは、 現在のものとは違っていて互換性がありません。新しいソースコードを入手す るか、ソースコードを書き換えて新しいサウンドドライバに適合するようにし てください。 詳しくはサウンドドライバの Readme ファイルを参照してください。

また、アプリケーションをコンパイルする時に最新バージョンの soundcard.hultrasound.h を使っていることを確認し てください。この文書の最初の方に、インストール手順が書いてあります。

6.13 以前動いていたサウンドアプリケーションを実行すると SEGV エラーが発生します。

おそらく上の質問と同じ問題でしょう。

6.14 サウンドドライバの既知のバグや制限を教えてください。

サウンドドライバのカーネルソースに含まれる説明を読んでください。

6.15 サウンドドライバの ioctl() などに関する文書はどこにありますか?

現在もっとも優れた文書は(ソースコードを除くと)4Front Technologies 社の WWW サイトである http://www.opensound.com にあります. 別の情報源としては Linux Multimedia Guide がありますが,これ は参考情報の章で紹介します.

6.16 途切れなく再生や録音を行なうためには、どのくらいの CPU 資源が必要ですか?

この質問には簡単な回答はありません。以下のような要素に依存するからです。

一般的に言って、386 以上のマシンであればサンプリングデータや FM 音源で 作成した音楽を 8 ビットサウンドカードで無理なく再生できるはずです。

しかし、MODファイルの再生にはかなりの CPU 資源が必要です。実験的な測定 によれば、44KHz での再生は 486/50MHz の 40% 以上の CPU パワーを必要とし、 386/25MHz では 22KHz 以上での再生はまず無理だということです (SoundBlaster のような 8 ビットサウンドカードの場合です)。Gravis UltraSound などのカードでは、より多くの機能をハードウェアが実行するの で、必要な CPU 資源は少なくなります。

以上に述べたことは、CPU に負荷をかけるタスクをコンピュータが他に実行し ていないことが前提です。

sox などのユーティリティを使ってサウンドファイルの変換やエフェ クトの付加を行なう場合には、数値演算コプロセッサがあればか なり高速になります。ただしカーネルドライバ自体は浮動小数点演算は一切行 ないません。

6.17 PAS16 と Adaptec 1542 SCSI ホストアダプタの問題

(以下の説明は seeker@indirect.com さんによるものです)

Linux はアドレス 330(デフォルト値)または 334 でしか 1542 を認識しませ ん。一方、PAS は MPU-401 エミュレーションのアドレスとして 330 しか受け 付けません。MPU-401 インターフェースをソフトウェアで無効にしても、1542 をデフォルトのアドレスに設定していると、アドレスが競合してしまいます。 1542 をアドレス 334 に移動するのが、すべてを丸く収める方法です。

また、1542 と PAS-16 はどちらも16ビット DMA を使うため、16ビット 44KHz ステレオでサンプリングしたデータを 1542 に繋がっている SCSI ドライブに セーブすると問題がよく起こります。 DMA が重なっていて、しかも RAM のリフレッシュに必要な時間が確保できな い場合、恐怖の「PARITY ERROR - SYSTEM HALTED」メッセージが表示されてし まいます。しかもなぜそれが起きたのかという手がかりは全く得られないので す。さらにまずいことに、QIC-117 テープドライブのセカンドソースメーカー の中には、1542 のバスのオン/オフ時間を調整して通常よりも長い時間オンに するように勧めているメーカーもあります。Adaptec の BBS あるいはインター ネットのいくつかのサイトから入手できる SCSISEL.EXE プログラムを使って、 問題が解決するまでバスのオン時間を減らすかバスのオフ時間を増やし、多少 なりとも状況を良くしましょう。 SCSISEL は EEPROM の設定を変更するので、CONFIG.SYS 中の DOS ドライバ行を 直すよりも効果が長続きしますし、DOS への修正と違って Linux を直接ブー トする場合にも有効です。これでこの問題も解決しました。

最後の問題は、古い Symphony チップセットがバスへのアクセスを高速化する ためにI/O サイクルのウェイトを大幅に減らしているということです。 筆者が試したいろいろなボードの中で、ウェイトを減らすことにより問題が生 じたのは PAS-16 だけでした。Media Vision の BBS にある SYMPFIX.EXE というプログラムが、Symphony のバスコントローラの診断ビッ トをいじることによってこの問題を解決するとのことですが、これは保証の限 りではありません。以下のような作業を行う必要があるかもしれません。

Young Microsystems は、ここで輸入したボードであれば約 30ドルでアップグ レードしてくれます。マザーボードのメーカーや輸入業者を突き止めることが できれば(幸運を祈ります)、他の業者も同様のサービスをしてくれるかもしれ ません。この問題は、私の知る限りでは、ProAudio のバスインターフェース チップが原因です。120 ドルのサウンドカードを買って 6MHz の AT 互換機で 使おうという人はいないでしょう。普通は 25〜40MHz の 386 マシンや 486 マシンで使うでしょうし、チップが正しく設計されていれば、少なくとも12MHz のバスクロックで動作するはずです。これにて弁士退場。

最初の問題は、マザーボード上で使われているチップセットやバスクロック、 その他の BIOS 設定、それから月齢に依存します。(訳注: つまり同じ 条件でも起こったり起こらなかったりすることがあるということです。) 2 番目の問題は、リフレッシュオプションの設定(hidden か synchronous か)、 1542 の DMA レート、それに(おそらく)バス I/O レートに依存します。 3 番目の問題は、Media Vision に電話して、どの Symphony チップが Media Vision の遅い設計と互換でないのかを質問すればわかるでしょう。 しかし注意してください。私が話した技術者 4 人のうち、3 人は大馬鹿野郎 でした。連中が他社のハードウェアについて言っていることは何一つ 信じる気になれません。だって、連中は自分たちのハードウェアすらまともに 知らないんですから。

6.18 サンプリング音声の読み書きを同時に行なうことは可能ですか?

一部のサウンドカード用のドライバは全二重モードをサポートしています。 この使い方については、4Front Technologies 社から入手できる文書で調べて ください。

6.19 SB16 の IRQ を 2 に設定しているのですが、設定プログラムがこの値を受け付けてくれません。

286 以降のマシンでは、IRQ 2 は 2 番目の割り込みコントローラへカスケード されています。IRQ 2 は IRQ 9 と同じです。

6.20 Linux を使った後に DOS をブートすると、エラーメッセージが出力されたり、サウンドアプリケーションが正常に動作しなかったりします。

これらの問題は DOS をソフトリブートした後に発生します。 CONFIG.SYS に問題があるという間違ったエラーメッセージが表示されること もあります。

現在のサウンドカードの多くは IRQ と DMA の設定をソフトウェアでプログラム することができます。Linux と MS-DOS/Windows とで異なった設定を使っている 場合、これが問題を起こすことがあります。サウンドカードによっては、完全 にリセット(つまり電源をオン/オフするか、ハードウェアリセットボタンを押 す)しないと、新しいパラメータを受け付けないものもあります。

手軽な解決法は、ソフトリブート(Ctrl-Alt-Del)ではなく、 リセットボタンまたは電源のオン/オフによってフルリブートすることです。

正しい解決法は、MS-DOS と Linux とで同じ IRQ と DMA の設定を使うこと (あるいは DOS を使わないこと :-)です。

6.21 Linux で DOOM をする時の問題

ID softwareのゲームである DOOM の Linux 版のユーザは、この問題に興味が あることでしょう。

正しいサウンド出力を得るためには、バージョン 2.90 またはそれ以降の サウンドドライバが必要です。このバージョンはリアルタイムの 「DOOMモード」をサポートしています。

サウンドは 16 ビットでサンプリングされています。8 ビットサウンドカード を使っている場合でも、 ftp://sunsite.unc/edu/pub/Linux/games/doomで入手できるプロ グラムを使えば、サウンドを聞くことができます。

DOOM のパフォーマンスが良くない場合、(sndserver ファイルの名前を 変えて)サウンドを無効にするとパフォーマンスが良くなることがあります。

初期設定では DOOM は音楽をサポートしていません(DOS バージョンと同じです)。 musserver プログラムを使って、Linux 版の DOOM に音楽サポートを 追加することができます。このプログラムは ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz にあります。

6.22 サウンドカードが拾う雑音を減らすにはどうしたらよいでしょう?

品質の良いシールドケーブルを使ったり、サウンドカードを別のスロットに 挿してみると雑音が減ることがあります。サウンドカードでボリュームが制御 できる場合、この設定を変えてみることもできます(おそらく最大音量が 最良でしょう)。ミキサープログラムを使うと、不必要な入力 (マイク等)の入力ゲインを 0 に設定することができます。

Philipp Braunbeck さんの報告によると、この方の ESS-1868 には組み込みの アンプをオフにするジャンパがあり、アンプをオンにすると拾ってしまうノイ ズを減らせるそうです。

最後に、筆者が見つけたある 386 システムでは、カーネルコマンドラインオ プション no-hlt によって雑音レベルが減少することが分かりまし た。このオプションは、カーネルがアイドルプロセスループを回っている時に halt 命令を使わないように指示するものです。このオプションはブー ト時にマニュアルで指定することもできますし、LILO の設定ファイルに append = "no-hlt" と書いて設定することもできます。

サウンドカードの中には、シールドや接地が不完全なため、雑音を拾いやすい ものもあります。

6.23 サウンドの再生はできますが、録音ができません。

再生はできるが録音ができない場合、以下の手順を試してみてください。

録音に使われる DMA チャネルが再生に使われる DMA チャネルと異なることが あります。この場合に最も可能性の高い原因は、録音用の DMA の設定が間違っ ていることです。

6.24 MS-DOS で一度初期化しないと「互換」カードが動かない

「SoundBlaster 互換」サウンドカードのほとんどは、Linux においては SoundBlaster 用でないドライバで使った方がうまく動作します。ほとんどの カードは「互換」(例えば「16 ビット SB Pro 互換」、「SB 互換 16 ビット」) を謳っていますが、普通はこの SoundBlaster モードは DOS 用ゲームで互換 にするためのハックに過ぎません。ほとんどのカードは 16 ビットの ネイティブモードを持っており、このモードは多くの場合、最近のバージョン (2.0.1 以降)の Linux でサポートされています。

SoundBlaster 互換モードでの動作を試す必要があるのは一部のカード(比較的 古いことが多い)だけです。新しめのカードでこの規則の例外に当てはまるの は、Mwave ベースのカードだけです。

6.25 16ビット SoundBlaster「互換」カードが、Linux 上では 8 ビットモードでしか動かない。

SoundBlaster 互換と銘打たれている 16 ビットサウンドカードは、実は 8 ビット SoundBlaster Pro との互換性しかないのです。この種のカードは通常、 SoundBlaster 16 とも Linux のサウンドドライバとも互換性のない 16 ビッ トモードを持っています。

このようなカードも、MAD16 ドライバや MSS/WSS ドライバを使えば 16 ビットモードで動作させられるかもしれません。

6.26 Linux 用のサウンドアプリケーションはどこにありますか?

Linux 用のサウンドアプリケーションを探すのに適したサイトを以下に示しま す。

本文書の「参考情報」の章もご覧ください。

6.27 サウンドドライバをローダブルモジュールとしてコンパイルすることはできますか?

最近のカーネルでは、サウンドドライバはカーネルローダブルモジュールとし てサポートされています。

/usr/src/linux/Documentation/sound にある文書、特に Introduction と README.modules をご覧くださ い。

6.28 システムコンソールのビープ音の代わりにサウンドカードを使うことができますか?

ftp://metalab.unc.edu/pub/Linux/apps/sound/oplbeep-2.3.tar.gz にある、oplbeep プログラムを試してください。

他にも beep というプログラムもあって、これは ftp://metalab.unc.edu/pub/Linux/kernel/patches/misc/modreq_beep.tgz にあります。

modutilsパッケージには、カーネルから要求があった時に任意の外 部プログラムを呼んでサウンドを発生させるためのプログラム例とカーネルパッ チが入っています。

その他の方法として、カードによっては、PC スピーカの出力をサウンドカー ドにつなぎ、すべてのサウンドをサウンドカードのスピーカから出力させるよ うにできる場合もあります。

6.29 VoxWareとは何ですか?

4Front Technologies 社が販売している商用バージョンのサウンドドライバで、 以前は VoxWare, USS (Unix Sound System), あるいは TASD (Temporarily Anonymous Sound Driver) とも呼ばれていたも のです。現在は OSS (Open Sound System) として販売 されています。Linux カーネルに含まれているバージョンは OSS/Free と呼ばれることもあります。

詳しくは 4Front Technologies 社の WWW ページ http://www.opensound.com/ を見てください。筆者は OSS/Linux のレビューを Linux Journal の 1997 年 6 月号に書きました。

6.30 Sox/Play/Vplayが「invalid block size 1024」というエラーを出します。

サウンドドライバのバージョン 1.3.67 で行なわれた変更によって、 SNDCTL_DSP_GETBLKSIZE ioctl の結果が 4096 よりも大きいことを (間違って)チェックしていたプログラムが動作しなくなりました。 最新バージョンのサウンドドライバは、4096 バイトより小さいフラグメント を割り当てないように修正されたので、古いユーティリティでもこの問題は起 こらなくなりました。

6.31 サウンドドライバモジュールをロードすると、ミキサーの設定がリセットされてしまう。

サウンドドライバをローダブルモジュールとして構築し、kerneldを 使って自動的にロード・アンロードすることができます。これには一つ問題が あります。モジュールが再ロードされるたびにミキサーの設定が デフォルト値に戻ってしまうのです。 サウンドカードによってはデフォルト値は(例えば SB16 のように)大き過ぎたり、 小さ過ぎたりします。 Markus Gutschke (gutschk@uni-muenster.de) さんがこの問題の解 決方法を見つけました。それは次のような行を /etc/conf.modules ファイルに追加するという方法です。

options sound dma_buffsize=65536 && /usr/bin/setmixer igain 0 ogain 0 vol 75

これで、サウンドドライバがロードされた直後にミキサープログラム (上の例ではsetmixer)が起動されるようになります。 dma_buffsizeパラメータは単なるダミーの値ですが必要です。 オプションコマンドはコマンドラインオプションを要求するからです。 必要に応じてミキサープログラムとゲイン設定を書き換えてください。

サウンドドライバをコンパイルしてカーネルに組み込んでおり、ブート時に ミキサーゲインを設定したい場合には、/etc/rc.d/rc.local の ようなシステムスタートアップファイルからミキサープログラムを呼び出すよ うにするとよいでしょう。

6.32 root しかサウンドの録音ができません。

デフォルトでは Readme.linux 中のスクリプトは、root にしか読み 出せないサウンドデバイスファイルを作成します。 これはセキュリティホールを作ってしまう可能性をなくすためです。 ネットワーク環境では、外部のユーザがサウンドカードとマイクが接続された Linux PC にリモートログインし、周りの物音を盗聴することが考えられます。 このようなおそれがなければ、スクリプト中のパーミッションを変えても構い ません。

デフォルトの設定でも、一般ユーザがサウンドファイルを再生できます。 これはセキュリティ的には危険ではありませんが、周りの迷惑になるおそれは あります。

6.33 IBM ThinkPad のサウンドハードウェアには対応していますか?

IBM のノート PC である ThinkPad に付いている MWave ベースのサウンドカー ドの設定に関する情報は /usr/src/linux/Documentation/sound/mwave にあります。これ はカーネルソースの配布物の一部です。

6.34 サウンドカードにミキサーが付いていないと表示してアプリケーションが異常終了します

8 ビットの古い SoundBlaster カードには、ミキサー回路が付いていないもの があります。一部のサウンドアプリケーションは、ミキサーデバイスがオープ ンできることを要求するので、このようなカードを使っていると異常終了し てしまいます。Jens Werner ( werner@bert.emv.ing.tu-bs.de) さんが報告した解決方法は、 /dev/mixer/dev/null にリンクすることで、これで問 題なく動作するはずです。

6.35 SB16 CT4170 で起こる問題

Scott Manley ( spm@star.arm.ac.uk) さんの報告です。

新しい型の SoundBlaster があるようです。これは SB16 として売られていま すが、カードに書かれているモデル番号は CT4170 でした。この腐ったカード には 1 つしか DMA チャネルがないので、設定しようとするとカーネルが 16 ビット DMA にアクセスして問題を起こします。この問題の解決方法は 2 番目 の DMA に 1 を設定することで、そうすればこのカードは謳い文句通りに動作 します。

6.36 MIDI キーボードをサウンドカードに接続する方法

Kim G. S. OEyhus ( kim@pvv.ntnu.no) さんの報告です。

私は、マスターキーボードからの MIDI 出力をサウンドカードの MIDI 出力に できるだけ簡単に接続する方法について、インターネット中とサウンドに関す る文書を片っ端から調べてみました。しかし何も見つかりませんでした。問題 になるのは、少なくとも OSS サウンドシステムを使っている限り、どちらも 同じデバイス(/dev/midi)を使うことです。したがって私は自分でやり方を見 つけました。私はこの 2 つを共有したいのです。この方法により、完全に MIDI をサポートしているとても簡単なシンセサイザを作ることができます。

MIDI マスターキーボードをサウンドカードに直接 MIDI 接続する方法

MIDI マスターキーボードは、シンセサイザがなく、MIDI 出力端子だけが付い ているキーボードです。この出力は、適当なケーブルを使えば大抵のサウンド カードの 15 ピン D-Sub ポートに接続することができます。

このようなキーボードを使うとサウンドカードに付いている MIDI シンセサイ ザデバイスを制御することができ、キーボードで制御できる簡単なシンセサイ ザを作ることができます。

以下のプログラムをコンパイルして('gcc -o prog prog.c' 等を実行します)、 これを実行します。

#include <fcntl.h>

main()
{
  int fil, a;
  char b[256];

  fil=open("/dev/midi", O_RDWR);
  for(;;)
    {
      a=read(fil, b, 256);
      write(fil, b, a);
    }
}

6.37 IRQ 15 と Ensoniq PCI 128 の問題

Matthew Inger ( mattinger@mindless.com) さんの報告です。

Ensoniq PCI 128 サウンドカードを動作させるための情報です。

明らかになっている問題は、このカードがデフォルトで IRQ 15 を使おうとす ることです(これはプラグ&プレイが管理しています)。この割り込みは セカンダリの IDE コントローラが使っており、他のデバイスと共有すること はできません。したがって、何とかして es1370 に別の IRQ を使わせなけれ ばなりません(Windos の場合と同じように IRQ 15 を使わせるのがいいでしょ う)。

信じられるかどうかは分かりませんが、私はこれを行う方法を見つけました。

私が行わなければなかったのは以下の作業です:

a) BIOS では、プラグ&プレイ OS を持っていないことをコンピュータに 指示します。これは BIOS の詳細設定メニュー(advanced options)で設定でき るはずです。

b) BIOS の PCI に関する設定で、レガシー ISA デバイス用に割り込み 15 を 予約します。私のマシンの BIOS の詳細設定には、PCI の設定に関するセクショ ンがありました。このセクションにある「Resource Exclusion」の項目で、予 約を設定を行います。

再起動して Linux を立ち上げるとサウンドが使えるはずです(起動メッセージ を表示するのかどうか、前のメッセージと異なるのかは覚えていません)。 安全を期すために、私は sndconfig を再び実行してテスト音声を再生しまし た。大した音ではありませんが、そこにあったからです。しかし CD を演奏さ せると、完璧に音がしました。

Windows でのことは心配しなくても大丈夫です。私は自分が持っている 2 枚 のカード(ISA Modem と Sound Card の出力)を試しましたが、どちらも問題な く動作しました。

たぶんお使いの BIOS は私と異なるでしょうが、問題となる要素が上の 2 つ であることはおわかりいただけるかと思います。幸運を祈ります。

6.38 SoftOSS を実行できる MIDI パッチで、フリーのものは入手できますか?

SoftOSS は、カーネルのサウンドドライバに入っているソフトウェアベースの ウェーブテーブルシンセサイザで、Gravis Utrasound サウンドカードと互換 です。このドライバを動かすには、GUS 互換の MIDI 音源パッチファイルが必 要です。カーネルの文書には「パブリックドメインの MIDIA パッチセットが 入手できる ftp サイトがいくつかあります」と書かれています。

4Front Technologies の WWW ページ http://www.opensound.com/softoss.html で説明されているように、この音源パッチは ftp://archive.cs.umbc.edu/pub/midia/instruments.tar.gz から入手できます。


次のページ 前のページ 目次へ