UnityからXFCEに切り替えた後、サウンド構成で問題が発生しました。システムに複数のサウンドカードがあります。使用したいのは、カーネルによって最後にロードされるサウンドカードです。 ALSAはデフォルトで最初のものを使用しているようです。
さらに、複数のアプリケーションで同時にサウンドを使用することはできません。「サウンドデバイスが使用中です」などのエラーが発生します。ALSAアーキテクチャ、プローブするために使用する必要のあるツールに関する洞察を誰かに教えてもらえますか?システムと構成ファイルの構造化方法に関するアドバイス。
システム全体の構成ファイルは「/etc/asound.conf」に保存され、すべてのALSA準拠アプリケーションは起動するたびにこのファイルを読み取ります。現在のサウンドデバイスの感覚をつかむのに最適な場所は、ここ「/ proc/asound /」です。設定ファイルがない場合、ALSAアプリケーションはデフォルトのサウンドデバイスとして/ proc/asound/card0を使用します。ここで実行しているALSAのバージョンを確認できます '/ proc/asound/version'。
各サウンドデバイスには、多数の「pcms」が関連付けられています。各pcmは基本的に出力チャネルです: "front"、 "rear"、 "surround41"、 "surround51"など。次のコマンドを使用して、使用可能なpcmチャネルを確認できます。
aplay -L | grep CARD
これらのpcmチャネルのいくつかは、物理オーディオ出力に対応していませんが、ALSAによって提供されるソフトウェアチャネルです。私たちが興味を持っているのは「dmix」と呼ばれるものです。 「dmix」チャネルは、ALSAが提供するソフトウェアミキサーで、複数の同時入力ストリームを処理します。
注意すべきことの1つは、特定のサウンドデバイスを識別するための複数の規則の使用です。構成ファイルはcard0、card1など、または単に0、1などを使用します。Creative、Nvidiaなどの名前でカードを参照することもできます。これらの名前はALSAprocディレクトリでソフトリンクとして定義されています。 'ls -l/proc/asound'。通常、構成ファイルでPCMチャネルを参照する場合、形式は次のとおりです: "channel-name:card-index、sub-index"。したがって、たとえば、「dmix:2,0」は、カード2、サブデバイス0のdmix pcmチャネルを指します。次のコマンドを使用すると、各サウンドカードに関連付けられているサブデバイスが表示されます。
aplay -l
最後のステップは、「/ etc /asound.conf」にある構成ファイル自体です。このファイルには、「pcm」チャネル定義と「ctl」チャネル定義の2つのコンポーネントが必要です。 'pcm'チャネルは出力を定義し、複数のサウンドストリームを単一のハードウェア出力チャネルに多重化する役割を果たします。 'ctl'チャネルはミキサーに使用され、ボリュームの制御を担当します。
ALSAは、多重化を処理する「プラグ」と呼ばれるソフトウェアpcmチャネルを使用します。これは、スレーブpcm出力チャネル用のソフトウェアフロントエンドです。スレーブのpcm出力チャネル自体がミキシング可能である必要があります。構成ファイルの例は次のとおりです。
pcm.custom
{
type plug
slave
{
pcm "dmix:2,0"
}
}
ctl.custom
{
type hw
card Creative
}
pcm.!default pcm.custom
ctl.!default ctl.custom
この例では、システム「dmix:2,0」の3番目のサウンドデバイスに「dmix」出力チャネルを使用しています。 3番目のインデックスは0から始まるため、2です(card0、card1、card2)。さらに、「ctl」スキーマは同じカードを参照しますが、今回はソフトリンクされた名前「Creative」を使用します。
これが他の人にも役立つことを願っています。