人気ブログランキング |

2019年 03月 11日 ( 2 )

松本・あめ市(5)

なぜか投稿を忘れていた記事^^;
でも、きれいなオネーサンの写真を投稿するのに遅すぎるということはない・・・はず。






d0108132_10381238.jpg


信州大学よさこいサークルのOB「信衆」
学生さんにはない大人の魅力がございます^^




d0108132_10381743.jpg









d0108132_10382644.jpg




------------








.

by tullyz1 | 2019-03-11 15:41 | Comments(10)

続・Volumioにハード・ボリュームを付ける


去年の4月にGriffin PowerMateを買った。ラズベリーパイ3B+にインストールしてある
Volumio2(ver 2.555)に付けてボリュームにしたかったのだが、
公開されているいくつかの記事の通りにやってもモジュールのインストールでエラーが出たり
PowerMateが認識されなかったり。
仕方なく、ホイールマウスを使ってボリューム代わりにしていた。
https://tullyz.exblog.jp/26639592/

それでも諦めきれず、今回リベンジ。
仕様は、音量調整と、つまみを押すことでよく聴いているクラシック(Venice Classic)と
ポップス(Capital FM)のチャンネルを切り替えるだけ。


ちなみに、Griffin PowerMateは長野県創業支援センターのプロテックデザインで開発され、
Griffinが製造・販売したとのこと。このデザインセンスは日本人でした。


d0108132_13045118.jpg




---- 準備 ----
DAC アンプ(たとえばDigiFi誌 No.13の付録とか)をラズベリーパイに接続。
PowerMateを接続。

https://github.com/risacher/input-event から
input-event.js をダウンロード。
下記のpmate.js を用意する。

Volumio に login して
sudo su
npm install socket.io-client
npm install -g forever

/home/volumio/node_modules に input-event.js をコピー。
(書き込み禁止になっていたら、chmod 777 /home/volumio/node_modules で許可する)
/home/volumio に pmate.js をコピー。

node pmate.js & で起動。
ボリュームを回せば、Volumioの表示が連動、ボリュームを押せばチャンネルが切り替わるはず。
ダメなら、VolumioのPlayback OptionsのVolume optionsでMixer typeがHardwareに
なっているか確認してみるとか。
pmate.js は PowerMateがevent1になっている前提でコードを書いているので、
cat /proc/bus/input/devices で確認してみるとか。


よさげなら、再起動時に自動で立ち上げるために、/etc/rc.local にnodeコマンドを書く
nano /etc/rc.local で、以下をexit 0の前にコピペ
node /home/volumio/node_modules/forever/bin/forever start /home/volumio/pmate.js
再起動すれば、 pmate.jsが自動で起動されるはず。

#Linuxもnode.jsもほとんど知らない人が書いているので、おかしなところがあったら
ご指摘いただけるとありがたいです。

---- pmate.js -----

var inputevent = require('input-event');
var pm = new inputevent('event1');
// 'event1' is the file corresponding to my PowerMate in /dev/input/
// Find your eventX using cat /proc/bus/input/devices  
var io=require('socket.io-client');
var socket= io.connect('http://localhost:3000');

// set initial volume value
var vol = 3 ;
socket.emit('volume', vol);

// Create play lists if empty
socket.emit('listPlaylist');
socket.on('pushListPlaylist', function(data) {
if (data.length == 0) {

// Change whatever chennel you like to listen
socket.emit('createPlaylist',{"name":"Venice Classic Radio"});
socket.emit('addToPlaylist',{
"name":"Venice Classic Radio",
"service":"webradio",
"uri":"http://174.36.206.197:8000"
});
socket.emit('createPlaylist',{"name":"Capital FM"});
socket.emit('addToPlaylist',{
"name":"Capital FM",
"service":"webradio",
"uri":"http://media-ice.musicradio.com/CapitalMP3"
});
}
});

var playlist = 1 ;

// Change according to above channels
pm.on('keypress', pm => {
if (playlist == 1) {
socket.emit('playPlaylist',{name:"Venice Classic Radio"});
playlist = 2
}
else {
socket.emit('playPlaylist',{name:"Capital FM"});
playlist = 1
}
});


pm.on('rel', pm => {
var direction = pm.value === 1 ? 1 : -1
vol = vol + direction ;
// volume limitter
if (vol < 0) vol = 0 ;
if (vol > 50) vol = 50 ;
socket.emit('volume', vol);
});




by tullyz1 | 2019-03-11 13:40 | Comments(0)