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 &

관련 정보