Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。
無料ブログはココログ

スポンサー

« Volumio2.285用 Sabreberry32プラグインドライバを作ってみました | トップページ | ネットワークオーディオの分類 DLNA/UPnP/SqueezeBOX/MPDの違いはどこにある? »

2017年10月13日 (金)

symphonic-mpd にOLED表示を付ける方法

RaspberryPi最高音質を目指している symphonic-mpdにOLED表示をつけるなんて怒られそうですが、やってしまいました。 

 

Ympd_oled1  

私も初めて知ったのですが、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 に書き換えます。

Smpd_oled2

 

場所は、かなり下の方です。

        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

 

以上で完了です。 

 

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村
ブログランキングに参加中です。 めざせ1位! 
もしよろしければ「ぽちっと」お願いします。 

« Volumio2.285用 Sabreberry32プラグインドライバを作ってみました | トップページ | ネットワークオーディオの分類 DLNA/UPnP/SqueezeBOX/MPDの違いはどこにある? »

Raspberry Pi」カテゴリの記事

コメント

こんばんは、オーシャンです
確かに、パパリウスさんはやらないのでは無いでしょうか
何せ6600のポートも閉じてしまうぐらいですから
でもたかじんさんのファンは歓迎してると思います
実際、ここまでやればメーカー品に対抗できると思います
前回のVOLUMIOの検証のついでに、Pi2でSMPDをやってみたんですがそれはそれで、十分見事な音が出てました
但し、Pi3に戻すと、やっぱりこっちだなと思わせます
P.S たかじんさんはこっち向きで使うつもりですか?つなぎ替えにはこっちの方が便利ですね。あとSMPDを1.5Gにしたら落ちました

これでバージョンアップの度にmpd.confのコメントアウトが不要になるんですね!
早速使わせて頂きます。
ありがとうございました!

>たかじんさん
私は怒りませんよお!!
音楽に浸るには利便性も大事なポイントだと思っています。(私の場合、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起動不可という状況でした。(購入したのは日本製です)

パパリウスさん

Pi2/Pi3で使わせて頂いてます。
ありがとうございます。

私は更にlircも組み込んでいます。
音質的には不利なんだろ~な~と思いつつ、私の耳では聴き分けられないので充分高音質、且つお手軽操作で気に入ってます。

>通りすがりのおじさま
lircとはクールですね!自分好みに手を入れられるのがラズパイの面白いところですよね。
音質差は聞いてみないと判断できませんが、自分好みのガジェットで聴くのが自分にとっての正解だと思います。

オーシャンさん

私も1500MHz設定試しました(笑   みんなやってるんですね。
1480までは動作したのですが。。。 


通りすがりのおじさんさん

さすがです。 Lircは、stretchになってから、何か不具合で動作しないですよね。  バージョンも新しくなって、使い方が変わって、まだ調べ切れていません。


パパリウスさん

ありがとうございます。 もちろん取り込んで頂いて結構です。

OLEDの接続の認識は、I2Cのデバイスアドレス0x3Cの応答で判別可能と思います。 (i2cdetect -y 1) で0x3Cがあるかどうかでも良いですね


スクリプトでは、initのときに0.5秒おきに20回トライして、ダメならスクリプトを停止するようにしていました。 
ただ、別の要因でいつの間にか落ちることがあって、systemdで、RESTART設定にしてるので勝手に復活してしまいます。

接続判定を行なってからsystemctl でstartさせるのが良いかもしれません。

たかじんさん

>Lircは、stretchになってから、何か不具合で動作しないですよね。

ありゃ、そうなんですね。
最近Raspbian触らなくなったので・・・(^^;;
mpdの各ディストロがstretchに移行するとちょっと悲しくなるかも・・・

こんばんは、オーシャンです
みなさん色々トライされている様で、喜ばしい事だと思います
OLEDまで標準装備されるのですか\(^o^)/
みみず工房のyoさんもPi2でのトライだった様ですが、好ましいとの感想を書かれています
http://mimizukobo.sakura.ne.jp/articles/articles022.html#001
私自身の経験でもクラシックを主に聴く方は、Pi2にトライする価値があると思います。
良くテンポが遅くなった様に感じる、という表現で音質評論される記事を見ますが、丁度そんな感じです。初めての経験でした
分厚い弦の響き、オルガンの低域の分解能の高さ等が印象的でした
但し、ジャンル無視の悪食にはPi3をお勧めします

 こんにちは
このケース良いですねえ。正式には拡張パネルは明日から発売のようですねえ。飛び降りてみようかなw
本家の想定している組み立て方よりこちらの方が絶対に良いですねw

お世話になります。

場違いな質問で、すいません!
symphonic-mpdは、Androidのスマホ及びタブレットでリモコン出来るのでしょうか?

 こんにちは

 買い物ついでに秋月行ってきてoledを買ってきました。
データシートを見ると、7,8,9ピンを4.7kでプルアップしろと書かれていますが、必要ありでしょうか??

> 初心者ABさん
VOLUMIOやMOODE AUDIOのように、ブラウザから操作するWeb UIがありますので、Androidから操作が可能です。Web UI上ではソフトウェアボリュームのボタンを非表示にしていますので、音量操作はアンプ側で行なっていただくことになります。Spotify Connectは、AndroidのSpotifyアプリで音量操作も可能です。

symphonic-mpdに関するご質問につきましては、下記スレッドにコメントくださいませ。
http://community.phileweb.com/mypage/entry/4787/20171015/57310/

通りすがりのおじさんさん

じきにLIRCの不具合も解消されることと思います。

オーシャンさん

テンポが遅く感じるですか。。。  ほーりーさんのMASH止めたカーネルで速いテンポで再生されるのを思い出しました。 
 
『raspbian、nas接続、webコントロール』という三重苦  って、笑ってしまいました。 そういう捉え方もあるんですね。 
情報豊富なRaspbian、便利で安価なNAS、専用アプリのいらないWEB-UIと思ってましたよ。

> 分厚い弦の響き、オルガンの低域の分解能の高さ等が印象的でした

それは感じますね。 電源強化したときの低音の表情の増し方に似ているように感じます。


ロバの耳さん

> 本家の想定している組み立て方よりこちらの方が絶対に良いですねw

RCA端子、ヘッドホンの抜き差しが便利なのはこっちですね。 
I2C信号は、RaspberryPiの基板上でプルアップされているので、外付けで抵抗を付ける必要はありません。


初心者ABさん

パパリウスさんが回答していらっしゃる通りです。 ブラウザからアクセスすればOKという手軽さです。 専用アプリいりません。 


パパリウスさん

AirPlay時もボリューム操作できるので便利ですね。 というか、AirPlayで聴いたことがない音がでます。 iTunesストアで買ったAACデータがこんなに活き活きしていたとは。。。
私は今まで何を聴いていたんだろう? と考えさせられました。

 こんにちは

 ステレオサウンドのケースと秋月の有機ELを購入して工作をしました。無事に動きました。どうも有り難うございます。音も良いし、実用性もアップしてなかなか良いですね。
 ステレオサウンドのケースとオプションですが、有機ELを固定する2mmのネジがついてないのが何とも不満です。近所のDIYに行っても2mmのネジは見当たりませんでした。

ロバの耳さん

確かに。 私はM2.6のビスを使いました。
これがOLEDの基板の穴にギリギリねじ込むような状態でして、ナットいらずで固定できました(笑
秋月電子でOLEDを買うときに、一緒にM2.6ビス、ナットを買うのが良いかもしれません。

 こんにちは、どこに書こうか迷ったのですが、ここにということで、、

パパリウスさんのところでハードボリューム設定の件が出ていますが、このDACの出力をそのままイヤホンなりヘッドホンなりに接続しても構わないのでしょうか?このケースのヘッドホン端子が遊んでいるので、問題なければ最後の結線をしようかと目論んでいます。

ロバの耳さん

直結、大丈夫です。 ただし最大振幅が2Vrmsのため、インピーダンスが600Ωという高インピーダンスなヘッドホンでは十分な音量が得られません。300Ω以下ならほぼ問題ないと思います。

symphonic-mpdファンの皆様
最新のバージョンでもたかじんさん考査のOLED動作しております
最初に
sudo raspi-config noint --expand-rootfs
sudo reboot
の2行を実施して下さい後はたかじんさんご教授のとおりです
既に組み込まれているものも有りますので飛ばせばOKです

kamo さん

情報ありがとうございます。

最初にrootfsを拡大するのですね。 こんなコマンドでできるとは知りませんでした。
ありがとうございます。

たかじんさん

何時も有意義な情報有り難うございます
拡張コマンドは、パパリウス様のサポート情報です
そのことが抜けていました
申し訳ありませんでした

たかじんさん

何時も有意義な情報有り難うございます
拡張コマンドは、パパリウス様のサポート情報です
そのことが抜けていました
申し訳ありませんでした

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: symphonic-mpd にOLED表示を付ける方法:

« Volumio2.285用 Sabreberry32プラグインドライバを作ってみました | トップページ | ネットワークオーディオの分類 DLNA/UPnP/SqueezeBOX/MPDの違いはどこにある? »

サイト内検索(new)

2025年2月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28