私の設定はFedoraベースのLinux音楽ディストリビューションであるVortexbox 2.3です。 miniDSPのマルチチャンネルサウンドカードであるUSBStreamerがあります。asound.conf
別々の出力チャンネル用に複数のスクイズライト再生インスタンスを持つように別々のステレオデバイスを設定しました。すべてのプレーヤーには時計が1つしかないため、オーディオのサンプリングレートは同じでなければなりません。私の音楽のほとんどは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
デバイスを直接使用できます。 (リサンプリングアルゴリズムの場合、デフォルト設定を使用できます。)