7.1 USBサウンドカードの出力を4つの異なるステレオペアに分割

7.1 USBサウンドカードの出力を4つの異なるステレオペアに分割

私の計画は、7.1 USBサウンドカード(AUREON XFIRE 8.0 HD)の4つのアナログ出力を別々のステレオペアとして使用し、Ubuntu 22.04とShairport Syncを使用してマルチルームオーディオ設定を作成することです。

.asoundrcShairport同期(またはALSAをサポートする他のソース)で使用できる仮想デバイスを作成するには、次のものが必要です。

pcm.stereoA {
    # 0 - Front Left
    # 1 - Front Right
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.0 1;
    ttable.1.1 1;
}

pcm.stereoB {
    # 2 - Front Center
    # 3 - LFE
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.3 1;
    ttable.1.2 1;
}

pcm.stereoC {
    # 4 - Rear Right
    # 5 - Rear Left
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.4 1;
    ttable.1.5 1;
}

pcm.stereoD {
    # 6 - Side Right
    # 7 - Side Left
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.7 1;
    ttable.1.6 1;
}

これで問題は、これがstereoA他の出力の場合はShaiport Syncを介して使用されたときにオーディオがミュート状態に保たれることです。

ただし、スピーカーテストでテストすると正常に動作します。

speaker-test -D stereoB -c 2

speaker-test 1.2.6

Playback device is stereoB
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 12 to 96000
Period size range from 6 to 48000
Using max buffer size 96000
Periods = 4
was set period_size = 24000
was set buffer_size = 96000
 1 - Front Center
 0 - LFE

ここでは、正しい出力で再生されるノイズをテストできます。

Shairport SyncがステレオBを出力デバイスとして使用するように指示された場合、実際にオーディオストリームも受け入れて再生しているようです(他のものを再生しようとするとオーディオデバイスも使用中です)。だから間違ったチャンネルで再生されているようです。

ステレオペアが実際に「フロント左」と「フロント右」という実際のステレオペアのように機能するようにチャンネルマッピングを変更するにはどうすればよいですか?

ベストアンサー1

私の構成は実際にはかなりうまく機能することがわかりました。 AirPlayターゲットを切り替えると、macOSが音量スライダーをかなり低い音量にリセットすることに気づいていなかったため、他の出力をテストしても音声が聞こえませんでした。

その過程で私が学んだのは、pcm_slaveセクションを定義し、pcmそのセクションでそれを参照することで構成を少し単純化できることです。

したがって、誰かが役に立つと思う場合に備えて、更新された構成をここに残します。

pcm_slave.outs {
    pcm "hw:1,0";
    channels 8;
}

pcm.stereoA {
    type route;
    slave outs;
    ttable.0.0 1;
    ttable.1.1 1;
}

pcm.stereoB {
    type route;
    slave outs;
    ttable.0.3 1;
    ttable.1.2 1;
}

pcm.stereoC {
    type route;
    slave outs;
    ttable.0.4 1;
    ttable.1.5 1;
}

pcm.stereoD {
    type route;
    slave outs;
    ttable.0.6 1;
    ttable.1.7 1;
}

おすすめ記事