내 설정은 Fedora 기반의 Linux 음악 배포판인 Vortexbox 2.3입니다. miniDSP의 다중 채널 사운드 카드인 USBStreamer가 있습니다. asound.conf
별도의 출력 채널을 위해 여러 개의 스퀴즈라이트 재생 인스턴스를 가질 수 있도록 별도의 스테레오 장치를 설정했습니다 . 모든 플레이어에는 시계가 하나만 있기 때문에 오디오의 샘플링 속도가 동일해야 합니다. 내 음악의 대부분은 44.1kHz이지만 일부는 48kHz이므로 48kHz 파일을 재생할 때 약간의 리샘플링을 수행해야 합니다. 나는 이 문제를 해결했습니다 asound.conf
. 그러나 ALSA는 내가 기대했던 48kHz를 플레이어가 출력하는 것이 아니라 원래 샘플 속도임에도 불구하고 모든 것을 44.1kHz로 리샘플링하는 것 같습니다. 리샘플링 없이 기본 44.1 파일을 재생할 수 있기를 원합니다. 플레이어 대신 ALSA에서 샘플 속도를 처리하여 다른 플레이어도 추가하고 싶습니다.
요율이 일치하지 않는 경우에만 ALSA를 재샘플링할 수 있는 방법이 있습니까?
#
# Place your global alsa-lib configuration here...
#
#defaults.pcm.rate_converter "speexrate"
pcm_slave.miniDSP {
# pcm "hw:0,0"
pcm "hw:USBStreamer"
rate 44100 # fixed, because all dshare devices must use the same samplerate. Could use rate unchanged but not for here.
format S32_LE
channels 10
}
pcm.stereo_1_raw {
type plug
slave.pcm {
type dshare
ipc_key 662662
ipc_key_add_uid true
slave miniDSP
bindings [ 0 1 ]
}
}
pcm.stereo_2_raw {
type plug
slave.pcm {
type dshare
ipc_key 662662
ipc_key_add_uid true
slave miniDSP
bindings [ 2 3 ]
}
}
pcm.stereo_3_raw {
type plug
slave.pcm {
type dshare
ipc_key 662662
ipc_key_add_uid true
slave miniDSP
bindings [ 4 5 ]
}
}
pcm.stereo_4_raw {
type plug
slave.pcm {
type dshare
ipc_key 662662
ipc_key_add_uid true
slave miniDSP
bindings [ 6 7 ]
}
}
pcm.stereo_1_output {
type rate
slave {
pcm stereo_1_raw
rate 44100
}
#converter "speexrate_medium" This doesn't work for 4 channels.
converter "samplerate"
}
pcm.stereo_2_output {
type rate
slave {
pcm stereo_2_raw
rate 44100
}
converter "speexrate_medium"
}
pcm.stereo_3_output {
type rate
slave {
pcm stereo_3_raw
rate 44100
}
#converter "speexrate_medium"
converter "samplerate"
}
pcm.stereo_4_output {
type rate
slave {
pcm stereo_4_raw
rate 44100
}
#converter "speexrate_medium"
converter "samplerate"
}
답변1
plug
플러그인 은 rate
필요할 때만 플러그인을 삽입하지만, rate
플러그인을 수동으로 삽입하면 이런 결과가 나옵니다.
rate
플러그인을 제거하기만 하면 stereo_x_raw
장치를 직접 사용할 수 있습니다. (리샘플링 알고리즘의 경우 기본 설정을 사용할 수 있습니다.)