symphonic-mpd にOLED表示を付ける方法
RaspberryPi最高音質を目指している symphonic-mpdにOLED表示をつけるなんて怒られそうですが、やってしまいました。
私も初めて知ったのですが、Linuxには内部だけでsocket通信するような仕組みがあるんだそうです。
それは、
UNIX domain socket というものです。
通常のsocket通信は、ネットワークを介して別のPCとも接続することができます。
ソフトウェアを分割、別プロセスにして、非同期で通信するときにはPC内部でsocket通信を使うこともありますが、内部なのにTCPなど余計なプロトコルを使うのであまり高速ではありません。
UNIX domain socketは、内部通信に特化していて、高速かつ軽量なプロセス間通信らしいです。 通信は特殊なファイルを通じて行なうようです。 Linuxは、devファイルやprocファイルなど、何かにつけてファイルの読み書きでやり取りすることが多いですね。
ということで、symphonic-mpdは、mpd本体とympd(web-UIクライアント)間を軽量なUNIX domain socketにしているそうです。
これまでのOLED表示スクリプトは、mpdから6600ポートのsocket通信にて曲名などを取得していました。
今回はUNIX domain socketに対応してみます。
とは言っても僅か2行の修正です。
sshにてログインします。
Host:smpd.local
User:pi
Pass:raspberry
sudo apt-get update しばらく待ちます。
sudo apt-get install python-smbus kakasi
wget https://nw-electric.way-nifty.com/blog/files/oled_ctrl_s.py
sudo chmod +x oled_ctrl_s.py
この oled_ctrl_s.py のソケット通信部をUNIX domain socket に書き換えます。
場所は、かなり下の方です。
self.soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) を
self.soc = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.soc.connect((host, port)) を
self.soc.connect('/run/mpd/socket')
と変更します。
保存して閉じたら、スクリプトを次回以降、自動起動するように登録します。
sudo nano /etc/systemd/system/oled_ctrl.service
と新規ファイルを作り、以下の青文字の呪文をコピペします。
[Unit]
Description=i2c OLED ctrl service
[Service]
ExecStart=/usr/bin/python2 /home/pi/oled_ctrl_s.py
Type=simple
Restart=always
[Install]
WantedBy=multi-user.target
また、
sudo nano /etc/modules で開いて
#i2c-dev の 先頭の「#」 を削除して i2cをイネーブルします。
保存して閉じます。
起動時にスクリプトを自動で実行させる
systemd を使って起動時にスクリプトを自動で実行させるには
sudo systemctl enable oled_ctrl
とコマンドを打つだけでOKです。
自動起動の解除は sudo systemctl disable oled_ctrl です。
今、実行したいときは下記のコマンドです。
sudo systemctl start oled_ctrl
以上で完了です。
にほんブログ村
ブログランキングに参加中です。 めざせ1位!
もしよろしければ「ぽちっと」お願いします。
« Volumio2.285用 Sabreberry32プラグインドライバを作ってみました | トップページ | ネットワークオーディオの分類 DLNA/UPnP/SqueezeBOX/MPDの違いはどこにある? »
「Raspberry Pi」カテゴリの記事
- MotionEyeと余っているラズパイで監視カメラ(2024.11.21)
- 秋の夜長にはRaspberryPi5 RT-linux セルフビルド(2024.10.13)
- 秋の夜長にはRaspberryPi5 64bit版 Sabreberry32 ドライバコンパイル(2024.10.10)
- RaspberryPi 5 の公式OSは32bit版でも64bit?(2024.10.09)
- 秋の夜長にはRaspberry Pi5 64bit カーネル・セフル・ビルド (2024.10.07)
コメント
« Volumio2.285用 Sabreberry32プラグインドライバを作ってみました | トップページ | ネットワークオーディオの分類 DLNA/UPnP/SqueezeBOX/MPDの違いはどこにある? »
こんばんは、オーシャンです
確かに、パパリウスさんはやらないのでは無いでしょうか
何せ6600のポートも閉じてしまうぐらいですから
でもたかじんさんのファンは歓迎してると思います
実際、ここまでやればメーカー品に対抗できると思います
前回のVOLUMIOの検証のついでに、Pi2でSMPDをやってみたんですがそれはそれで、十分見事な音が出てました
但し、Pi3に戻すと、やっぱりこっちだなと思わせます
P.S たかじんさんはこっち向きで使うつもりですか?つなぎ替えにはこっちの方が便利ですね。あとSMPDを1.5Gにしたら落ちました
投稿: オーシャン | 2017年10月14日 (土) 00時04分
これでバージョンアップの度にmpd.confのコメントアウトが不要になるんですね!
早速使わせて頂きます。
ありがとうございました!
投稿: 通りすがりのおじさん | 2017年10月14日 (土) 09時05分
>たかじんさん
私は怒りませんよお!!
音楽に浸るには利便性も大事なポイントだと思っています。(私の場合、AirPlayは外せません)
もしよろしければ、スクリプト類一式を同梱させていただきます。
ところで、起動時にOLEDを検知する方法はありますでしょうか?
OLEDが接続されている場合だけ、
/etc/rc.local 内で、
sudo modprobe i2c-dev
sudo systemctl start oled_ctrl
を自動で走らせるようにできそうですが。
>オーシャンさん
色々試されてますね!
Pi2では久しく聞いていないのですが、Pi2でも有効なチューニングを多数含んでいますので、意外とイケるかもしれませんね。
(Pi2ではマイナスに働くチューニングも一部含んでいますが、、、、、)
オーバークロックは1.5GHzでの常用は厳しいかもしれませんね。私のところでも1.5GHzが動作するギリギリで、1.52GHzで無限ループ発生or起動不可という状況でした。(購入したのは日本製です)
投稿: パパリウス | 2017年10月14日 (土) 09時39分
パパリウスさん
Pi2/Pi3で使わせて頂いてます。
ありがとうございます。
私は更にlircも組み込んでいます。
音質的には不利なんだろ~な~と思いつつ、私の耳では聴き分けられないので充分高音質、且つお手軽操作で気に入ってます。
投稿: 通りすがりのおじさん | 2017年10月14日 (土) 14時12分
>通りすがりのおじさま
lircとはクールですね!自分好みに手を入れられるのがラズパイの面白いところですよね。
音質差は聞いてみないと判断できませんが、自分好みのガジェットで聴くのが自分にとっての正解だと思います。
投稿: パパリウス | 2017年10月14日 (土) 21時29分
オーシャンさん
私も1500MHz設定試しました(笑 みんなやってるんですね。
1480までは動作したのですが。。。
通りすがりのおじさんさん
さすがです。 Lircは、stretchになってから、何か不具合で動作しないですよね。 バージョンも新しくなって、使い方が変わって、まだ調べ切れていません。
パパリウスさん
ありがとうございます。 もちろん取り込んで頂いて結構です。
OLEDの接続の認識は、I2Cのデバイスアドレス0x3Cの応答で判別可能と思います。 (i2cdetect -y 1) で0x3Cがあるかどうかでも良いですね
スクリプトでは、initのときに0.5秒おきに20回トライして、ダメならスクリプトを停止するようにしていました。
ただ、別の要因でいつの間にか落ちることがあって、systemdで、RESTART設定にしてるので勝手に復活してしまいます。
接続判定を行なってからsystemctl でstartさせるのが良いかもしれません。
投稿: たかじん | 2017年10月14日 (土) 21時50分
たかじんさん
>Lircは、stretchになってから、何か不具合で動作しないですよね。
ありゃ、そうなんですね。
最近Raspbian触らなくなったので・・・(^^;;
mpdの各ディストロがstretchに移行するとちょっと悲しくなるかも・・・
投稿: 通りすがりのおじさん | 2017年10月14日 (土) 23時35分
こんばんは、オーシャンです
みなさん色々トライされている様で、喜ばしい事だと思います
OLEDまで標準装備されるのですか\(^o^)/
みみず工房のyoさんもPi2でのトライだった様ですが、好ましいとの感想を書かれています
http://mimizukobo.sakura.ne.jp/articles/articles022.html#001
私自身の経験でもクラシックを主に聴く方は、Pi2にトライする価値があると思います。
良くテンポが遅くなった様に感じる、という表現で音質評論される記事を見ますが、丁度そんな感じです。初めての経験でした
分厚い弦の響き、オルガンの低域の分解能の高さ等が印象的でした
但し、ジャンル無視の悪食にはPi3をお勧めします
投稿: オーシャン | 2017年10月15日 (日) 01時14分
こんにちは
このケース良いですねえ。正式には拡張パネルは明日から発売のようですねえ。飛び降りてみようかなw
本家の想定している組み立て方よりこちらの方が絶対に良いですねw
投稿: ロバの耳 | 2017年10月15日 (日) 08時23分
お世話になります。
場違いな質問で、すいません!
symphonic-mpdは、Androidのスマホ及びタブレットでリモコン出来るのでしょうか?
投稿: 初心者AB | 2017年10月15日 (日) 10時30分
こんにちは
買い物ついでに秋月行ってきてoledを買ってきました。
データシートを見ると、7,8,9ピンを4.7kでプルアップしろと書かれていますが、必要ありでしょうか??
投稿: ロバの耳 | 2017年10月15日 (日) 17時38分
> 初心者ABさん
VOLUMIOやMOODE AUDIOのように、ブラウザから操作するWeb UIがありますので、Androidから操作が可能です。Web UI上ではソフトウェアボリュームのボタンを非表示にしていますので、音量操作はアンプ側で行なっていただくことになります。Spotify Connectは、AndroidのSpotifyアプリで音量操作も可能です。
symphonic-mpdに関するご質問につきましては、下記スレッドにコメントくださいませ。
http://community.phileweb.com/mypage/entry/4787/20171015/57310/
投稿: パパリウス | 2017年10月15日 (日) 18時02分
通りすがりのおじさんさん
じきにLIRCの不具合も解消されることと思います。
オーシャンさん
テンポが遅く感じるですか。。。 ほーりーさんのMASH止めたカーネルで速いテンポで再生されるのを思い出しました。
『raspbian、nas接続、webコントロール』という三重苦 って、笑ってしまいました。 そういう捉え方もあるんですね。
情報豊富なRaspbian、便利で安価なNAS、専用アプリのいらないWEB-UIと思ってましたよ。
> 分厚い弦の響き、オルガンの低域の分解能の高さ等が印象的でした
それは感じますね。 電源強化したときの低音の表情の増し方に似ているように感じます。
ロバの耳さん
> 本家の想定している組み立て方よりこちらの方が絶対に良いですねw
RCA端子、ヘッドホンの抜き差しが便利なのはこっちですね。
I2C信号は、RaspberryPiの基板上でプルアップされているので、外付けで抵抗を付ける必要はありません。
初心者ABさん
パパリウスさんが回答していらっしゃる通りです。 ブラウザからアクセスすればOKという手軽さです。 専用アプリいりません。
パパリウスさん
AirPlay時もボリューム操作できるので便利ですね。 というか、AirPlayで聴いたことがない音がでます。 iTunesストアで買ったAACデータがこんなに活き活きしていたとは。。。
私は今まで何を聴いていたんだろう? と考えさせられました。
投稿: たかじん | 2017年10月16日 (月) 20時42分
こんにちは
ステレオサウンドのケースと秋月の有機ELを購入して工作をしました。無事に動きました。どうも有り難うございます。音も良いし、実用性もアップしてなかなか良いですね。
ステレオサウンドのケースとオプションですが、有機ELを固定する2mmのネジがついてないのが何とも不満です。近所のDIYに行っても2mmのネジは見当たりませんでした。
投稿: ロバの耳 | 2017年10月26日 (木) 23時04分
ロバの耳さん
確かに。 私はM2.6のビスを使いました。
これがOLEDの基板の穴にギリギリねじ込むような状態でして、ナットいらずで固定できました(笑
秋月電子でOLEDを買うときに、一緒にM2.6ビス、ナットを買うのが良いかもしれません。
投稿: たかじん | 2017年10月28日 (土) 10時29分
こんにちは、どこに書こうか迷ったのですが、ここにということで、、
パパリウスさんのところでハードボリューム設定の件が出ていますが、このDACの出力をそのままイヤホンなりヘッドホンなりに接続しても構わないのでしょうか?このケースのヘッドホン端子が遊んでいるので、問題なければ最後の結線をしようかと目論んでいます。
投稿: ロバの耳 | 2017年11月21日 (火) 20時23分
ロバの耳さん
直結、大丈夫です。 ただし最大振幅が2Vrmsのため、インピーダンスが600Ωという高インピーダンスなヘッドホンでは十分な音量が得られません。300Ω以下ならほぼ問題ないと思います。
投稿: たかじん | 2017年11月23日 (木) 10時20分
symphonic-mpdファンの皆様
最新のバージョンでもたかじんさん考査のOLED動作しております
最初に
sudo raspi-config noint --expand-rootfs
sudo reboot
の2行を実施して下さい後はたかじんさんご教授のとおりです
既に組み込まれているものも有りますので飛ばせばOKです
投稿: kamo | 2019年3月20日 (水) 00時33分
kamo さん
情報ありがとうございます。
最初にrootfsを拡大するのですね。 こんなコマンドでできるとは知りませんでした。
ありがとうございます。
投稿: たかじん | 2019年3月24日 (日) 10時48分
たかじんさん
何時も有意義な情報有り難うございます
拡張コマンドは、パパリウス様のサポート情報です
そのことが抜けていました
申し訳ありませんでした
投稿: kamo | 2019年3月24日 (日) 19時20分
たかじんさん
何時も有意義な情報有り難うございます
拡張コマンドは、パパリウス様のサポート情報です
そのことが抜けていました
申し訳ありませんでした
投稿: kamo | 2019年3月24日 (日) 19時21分