やりたい事
アンプのボリュームツマミを使わずに、スマホでボリューム調節をしたい!!
music player daemonつっこんで、スマホでmpcでボリュームコントロール!!
ウチの環境
raspberry py3にpcm5102を接続してます。pcm5102の音声出力を中華製アンプlepyに繋げてlepyとスピーカーを繋げてます。
pcm5102について
pcm5102は、ボリュームのハードウェア制御ができません。以前、volumioを使ってたので、アルバムからの選曲をスマホでカッコよく操作出来るのに、ボリュームは、アンプの場所まで行って、ツマミで調節してました。トホホホホ。
前は、もう、当然のようにあきらめたんです。でも、今回、なんか方法ありそうだよなぁって、見てたら、ありました、できました!!この喜びを共有して、書いてます。
設定
行き着くまで、試行して錯誤してメッチャ長い道のりでしたが、まとめてみると、ほんのチョチョイのチョイですね。
raspberry pi にpcm5102を接続
pcm5102を使うための設定です。
hifiberry-dac
music player daemon インストール
このソフトはスグレモノですね。mp4も連続再生してくれます。
hottool@music:~$ sudo apt update
hottool@music:~$ sudo apt install mpd
サウンドカードの確認
全てのサウンドカードとデジタルオーディオデバイスのリストを確認します。
hottool@music:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
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: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [HifiBerry DAC HiFi pcm5102a-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
hottool@music:~ $
alsaのソフトウェアボリューム設定
alsamixser で音声制御がこの設定をするまでは、できなかったのですが、この設定をしたらできるようになりました。
pcm.hifivol {
type softvol
slave {
pcm "plughw:sndrpihifiberry"
}
control {
name "Softmaster"
card 1
}
}
音声出力確認
これで、スピーカーの右、左に音が出るといいんですが、
hottool@music:~ $ speaker-test -Dhifivol -c 2 -twav
speaker-test 1.2.4
Playback device is hifivol
Stream parameters are 48000Hz, S16_LE, 2 channels
WAV file(s)
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 8 to 131072
Period size range from 4 to 65536
Using max buffer size 131072
Periods = 4
was set period_size = 32768
was set buffer_size = 131072
0 - Front Left
1 - Front Right
Time per period = 0.727501
0 - Front Left
1 - Front Right
Time per period = 2.737099
0 - Front Left
1 - Front Right
Time per period = 3.407165
0 - Front Left
ボリュームコントロール確認
alsamixer
F6キーでサウンドカードを選択したら、ボリュームコントロールできましたか?
mpdの音声出力先設定
これで、ソフトウェアでのボリュームコントロールができるようになったはずですが、mpd の設定でも、ソフトウェアで制御するようにしないといけません。audio_outputを以下のように指定しました。
audio_output {
type "alsa"
name "My ALSA Device"
device "hifivol"
mixer_type "software"
}
mpdの再起動
設定を変えたあとに、mpd を止めて、再起動です。
hottool@music:~$ sudo systemctl stop mpd
hottool@music:~$ sudo systemctl start mpd
これでできました。
おすすめandroid mpc クライアント
私は、android で、M.A.L.P. を使ってます。MPDroidも使ってみましたが、バージョンが古いせいか、強制終了を繰り返してしまいます。
参考
ALSAとはAdvanced Linux Sound Architectureの略称で、Linuxにおける高機能なサウンドシステムを提供するためのソフトウェア群
最後に
途中まで、自身満々で記事を書いていたのですが、なんか、alsaって難しいですね。途中挙動がわからなくなり、この記事、少し自信がないです。詳しい方、ご指摘いただければ嬉しいです。そんな中途半端な記事ですが、どなたかの参考になれば嬉しいです。
次は、mpc でのプレイリストの操作など、クライアントの使い方をマスターしたら書きたいなって思っています^^;