特定のマイクと出力を使用するようにALSAを構成する

特定のマイクと出力を使用するようにALSAを構成する

HDMIサウンドを出力として使用し、USBマイクを入力として使用するようにALSAを設定しようとしています。私はasound.confdmix/dsnoopのない職業を持っています:

pcm.usb_mic_raw {
  type hw
  card Device
  device 0
}

pcm.usb_mic_plug {
  type plug
  slave {
    pcm usb_mic_raw
    format S16_LE
    rate 48000
    channels 1
  }
}

# Don't use pcm.hdmi because it's taken by the default config files
pcm.hdmi_raw {
  type hw
  card HDMI
  device 9
}

pcm.hdmi_plug {
  type plug
  slave {
    pcm hdmi_raw
    format S16_LE
    rate 48000
    channels 2
  }
}

pcm.!default {
  type asym;
  playback.pcm "hdmi_plug";
  capture.pcm "usb_mic_plug";
}

これはうまく機能し、ミキシングは必要ありません。一度に1つのプログラムだけがサウンドを再生できます。

plugからに切り替えようとすると、dmix次のエラーが発生します。

juice:~ aplay -D hdmi_plug good.wav                                                                  1 :(
Playing WAVE 'good.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
[..works..]

juice:~ aplay -D hdmi_dmix good.wav                                                                  1 :(
Playing WAVE 'good.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
aplay: set_params:1358: Channels count non available

私が追加した部分は次のとおりです。

pcm.hdmi_dmix {
  type dmix
  ipc_key 200
  slave {
    pcm hdmi_raw
    format S16_LE
    rate 48000
    period_time 0
    period_size 2048
    buffer_size 8192
    channels 2
  }
  bindings {
   0 0
   1 1
  }
}

重要な場合、私はArch Linuxを使用しており、pulseaudioとpulseaudio-alsaをインストールしました。

ベストアンサー1

部分的な答え:

pulseaudioをインストールせずにDiscordを開くと、デバイスがなく、オーディオも表示されません。

これは、DiscordにALSAドライバがなく、Pulseaudioドライバのみが存在できることを意味します。 (しかしDiscordはプライベートソースなので、確かに言うことはできません。)

pulseaudioがインストールされているDiscordを開くと、「alsa」という出力デバイスが表示されます。

DiscordがPulseaudioデバイスの名前をどのように指定したのかわかりません。

pulseaudioが私のデバイスを検出できないようで、ALSAを設定しています。

その後、それをデバッグする必要があります。何を見せますかpactl list short?少なくとも1つのALSAカード(おそらくそれ以上)と関連するソースとシンクを表示する必要があります。

その場合:両方をインストールし、pavucontrolDiscordの実行中に実行してから、Discordの正しいソースとシンクを選択してください。

おすすめ記事