alsa サウンドモジュール snd_aloop

alsa サウンドモジュール snd_aloop

snd_aloopモジュールの理解に問題があります。

pulseaudioを使用せずにalsaを介してすべてのオーディオをルーティングしようとしています。 jackdを起動すると、alsa以外のアプリケーションでは音が出ませんが、Rhythmboxやその他の基本的なJackサポートなどのソフトウェアは正常に動作します。

主な理由は主にオーディオ編集をしますが、オンラインでビデオも聞くからです。

alsaが利用可能であることを読みました。snd_aloopモジュール仮想ハードウェアを設定すると、 alsa_in および alsa_out メカニズムを使用して、ジャックではなくアプリケーションオーディオをルーティングして、ジャックで正しく再生できます。

私は次のような多くのチュートリアルを読んだ。これこれたくさんの書類を確認しました。ここそしてここしかも。

私を最も混乱させるのは、ループバック設定とalsa_inとalsa_outの仕組みです。

たとえば、snd_aloopモジュールの場合、2つのデバイスと8つのサブデバイスがあります。

これは私のaplay-l姿です。

**** List of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: PCH [HDA Intel PCH], device 0: CS4208 Analog [CS4208 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 1: CS4208 Digital [CS4208 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

次のようにシステムを設定しようとすると:

#jack capture and playback
pcm.jack_capture_1 {
    type plug
        slave.pcm "hw:Loopback,0,0"
}

pcm.jack_playback_1 {
    type plug
        slave.pcm "hw:Loopback,0,1"
}

#alsa capture and playback
pcm.alsa_input_1 {
    type plug
        slave.pcm "hw:Loopback,1,0"
}

pcm.alsa_output_1 {
    type plug
        slave.pcm "hw:Loopback,1,1"
}


#playback devices
pcm.jack_audio_1 {
  type asym
  playback.pcm "jack_playback_1"
  capture.pcm "jack_capture_1"
}

それからalsa_out -j "playback" -d jack_audio_1 sound.wav

ジャックルーティングダイアグラムから接続しても、まだ出力は出ません。

私の質問:私の設定を見ると、ループバックjack_capture_1がhw:0,0にバインドされ、ループバックjack_playback_1がhw:0,1にバインドされています。

これは、jack_capture_1に送信されたすべてのサウンドをjack_playback_1からエコーする必要があることを意味します。そうですか?

alsa_inはjackのセッションに入るalsaオーディオストリームでもあり、alsa_outはjackが完了した後に出力するalsaオーディオストリームですか?

私はsnd_aloopで読むことができるすべてを読みましたが、公式文書少し足りないようです。

誰でもこの問題を解決するのに役立ちますか?

ベストアンサー1

答えが少し遅れましたが、誰かがこの内容が役に立つかもしれません。 ;)

/etc/modprobe.d/alsa.conf
alias snd-card-8 snd-aloop
options snd_aloop index=8 id=loop0 enable=1

/etc/asound.conf

#### Linrad ####                                                                                                                                                                                                                              

pcm.loop0_0_0 {                                                                                                                                                                                                                               
  type plug                                                                                                                                                                                                                                   
    slave {                                                                                                                                                                                                                                   
      pcm "hw:loop0,0,0"                                                                                                                                                                                                                      
      format FLOAT_LE                                                                                                                                                                                                                         
      rate 96000                                                                                                                                                                                                                              
    }                                                                                                                                                                                                                                         
}                                                                                                                                                                                                                                             

pcm.linrad_alsa {                                                                                                                                                                                                                             
  type asym                                                                                                                                                                                                                                   
  playback.pcm "loop0_0_0"                                                                                                                                                                                                                    
  capture.pcm "loop0_0_0"                                                                                                                                                                                                                     
  hint {                                                                                                                                                                                                                                      
    show on                                                                                                                                                                                                                                   
    description "Linrad: ALSA"                                                                                                                                                                                                                
  }
}

pcm.loop0_1_0 {
  type plug
    slave {
      pcm "hw:loop0,1,0"
      format FLOAT_LE
      rate 96000
    }
}

pcm.linrad_jack {
  type asym
  playback.pcm "loop0_1_0"
  capture.pcm "loop0_1_0"
  hint {
    show on
    description "Linrad: JACK"
  }
}

#### WSJTX ####

pcm.loop0_0_1 {
  type plug
    slave {
      pcm "hw:loop0,0,1"
      format FLOAT_LE
      rate 96000
    }
}

pcm.wsjtx_alsa {
  type asym
  playback.pcm "loop0_0_1"
  capture.pcm "loop0_0_1"
  hint {
    show on
    description "WSJTX: ALSA"
  }
}

pcm.loop0_1_1 {
  type plug
    slave {
      pcm "hw:loop0,1,1"
      format FLOAT_LE
      rate 96000
    }
}

pcm.wsjtx_jack {
  type asym
  playback.pcm "loop0_1_1"
  capture.pcm "loop0_1_1"
  hint {
    show on
    description "WSJTX: JACK"
  }
}

....

jack用のパイプの場合は、次のようになります(jackdの起動後に実行されるシェルスクリプトに配置されます)。

alsa_in -j "WSJTX source" -d wsjtx_jack -q 1 &> /dev/null &
alsa_out -j "WSJTX sink" -d wsjtx_jack -q 1 &> /dev/null &

おすすめ記事