ラズベリーパイ で音楽再生、ラジオ再生ボタン
f0021035_15101099.jpg
※91月8日24時 WAVE(MP3)が再生されないスペルミスを修正しました。

ラズベリーパイ Raspbian に Perl/TK で操作画面を表示するスクリプトを、ボタンを増やして作り直してみた。
下記を pi.pl の名前でホームディレクトリに保存する。

$ sudo chmod 755 pi.pl

↓#!/usr/bin/perl が1行めになるようにする。

#!/usr/bin/perl

use Tk;
use Encode;

## pi.pl# 改訂版 初期設定 ###################################################

my $msg = "yes"; #シャットダウン時にメセージを表示する yes/no

my $geometry = "+10+40"; #表示位置
my $minsize1 = 460; #サイズW
my $minsize2 = 140; #サイズH
my $tmGeometry = "42x3+10+210"; #gnorm-terminal サイズ/表示位置
my $pVol = "50"; #初期ボリューム
my $font = "MS ゴシック 8 bold"; #フォント

my $bt0Img = "./raspA.gif"; #aplayボタン 画像
my $bt0Bac = "#fffacd"; #aplayボタン 背景色
my $bt0ABac = "#ffff00"; #aplayボタン アクティブ背景色

my $nextTxt = "▶"; #ネクストボタン テキスト(Aplay 専用)
my $nextFont = "MS ゴシック 18 bold"; #フォント
my $nextFore = "#333333"; #ネクストボタン 文字色
my $nextAFore = "#ffffff"; #ネクストボタン アクティブ文字色

my $stopTxt = "×"; #ストップボタン テキスト(gnorm-terminal を閉じる)
my $stopFore = "#333333"; #ストップボタン 文字色
my $stopAFore = "#ffffff"; #ストップボタン アクティブ文字色
my $stopABase = "#113355"; #ストップボタン アクティブ背景色

my $swTxt = "◯"; #シャットダウン テキスト
my $swFont = "MS ゴシック 18 bold"; #シャットダウン フォント
my $swBac = "#555555"; #シャットダウン 背景色
my $swABac = "#b50008"; #シャットダウン アクティブ背景色
my $swFore = "#dddddd"; #シャットダウン 文字色
my $swAFore = "#ffffff"; #シャットダウン アクティブ文字色

my $volFore = "#333333"; #ボリューム 文字色
my $volBac = "#fff0f5"; #ボリューム 背景色
my $volABac = "#da70d6"; #ボリューム アクティブ色

my $bt1Id = "TBS"; #Radico1 ID (http://www.norikistudio.com/station-id-list)
my $bt1Txt = "TBS"; #Radico1 テキスト
my $bt1Fore = "#333333"; #Radico1 文字色
my $bt1Bac = "#40e0d0"; #Radico1 背景色
my $bt1AFore = "#dedede"; #Radico1 アクティブ文字色
my $bt1ABac = "#333333"; #Radico1 アクティブ背景色

my $bt2Id = "FMJ"; #Radico2 ID (http://www.norikistudio.com/station-id-list)
my $bt2Txt = "FMJ"; #Radico2 テキスト
my $bt2Fore = "#333333"; #Radico2 文字色
my $bt2Bac = "#87cefa"; #Radico2 背景色
my $bt2AFore = "#dedede"; #Radico2 アクティブ文字色
my $bt2ABac = "#333333"; #Radico2 アクティブ背景色

my $bt3Id = "r1"; #らじるらじる1 ID=r1:NHKラジオ第1/r2:NHKラジオ第2/fm:NHK FM
my $bt3Txt = "NHK1"; #らじるらじる1 テキスト
my $bt3Fore = "#333333"; #らじるらじる1 文字色
my $bt3Bac = "#ffd700"; #らじるらじる1 背景色
my $bt3AFore = "#dedede"; #らじるらじる1 アクティブ文字色
my $bt3ABac = "#333333"; #らじるらじる1 アクティブ背景色

my $bt4Id = "fm"; #らじるらじる2 ID=r1:NHKラジオ第1/r2:NHKラジオ第2/fm:NHK FM
my $bt4Txt = "N-FM"; #らじるらじる2 テキスト
my $bt4Fore = "#333333"; #らじるらじる2 文字色
my $bt4Bac = "#ffe4e1"; #らじるらじる2 背景色
my $bt4AFore = "#dedede"; #らじるらじる2 アクティブ文字色
my $bt4ABac = "#333333"; #らじるらじる2 アクティブ背景色

#SHOUTcastボタン
#ID アクティブ背景色 文字色 背景色 アクティブ文字色 テキスト
my $s1Id = "375467"; my $s1Ab = "#333333"; my $s1Fo = "#333333"; my $s1Ba = "#98fb98"; my $s1Af = "#dedede"; my $s1Tx = "alt";#alt.radio
my $s2Id = "102385"; my $s2Ab = "#333333"; my $s2Fo = "#333333"; my $s2Ba = "#da70d6"; my $s2Af = "#dedede"; my $s2Tx = "Smooth";#SmoothJazz.com Global Radio
my $s3Id = "777979"; my $s3Ab = "#333333"; my $s3Fo = "#333333"; my $s3Ba = "#db7093"; my $s3Af = "#dedede"; my $s3Tx = "Lounge";#The Lounge Sound
my $s4Id = "271154"; my $s4Ab = "#333333"; my $s4Fo = "#333333"; my $s4Ba = "#ffa500"; my $s4Af = "#dedede"; my $s4Tx = "ZenFM";#ZenFM (MP3)

my $s5Id = "302745"; my $s5Ab = "#333333"; my $s5Fo = "#333333"; my $s5Ba = "#c0c0c0"; my $s5Af = "#dedede"; my $s5Tx = "Black";#BlackBeats.FM
my $s6Id = "84158"; my $s6Ab = "#333333"; my $s6Fo = "#333333"; my $s6Ba = "#dda0dd"; my $s6Af = "#dedede"; my $s6Tx = "DEFJAY";#DEFJAY.COM - 100% R&B! (International)
my $s7Id = "215936"; my $s7Ab = "#333333"; my $s7Fo = "#f8f8ff"; my $s7Ba = "#dc143c"; my $s7Af = "#dedede"; my $s7Tx = "Florida";#Smooth Jazz Florida
my $s8Id = "1108330"; my $s8Ab = "#333333"; my $s8Fo = "#333333"; my $s8Ba = "#f0e68c"; my $s8Af = "#dedede"; my $s8Tx = "Casiopea";#Nonstop Casiopea

my $s9Id = "182137"; my $s9Ab = "#333333"; my $s9Fo = "#333333"; my $s9Ba = "#fff5ee"; my $s9Af = "#dedede"; my $s9Tx = "METRO";#RadioMETRO Pop Hit Dance
my $s10Id = "109563"; my $s10Ab = "#333333"; my $s10Fo = "#333333"; my $s10Ba = "#da70d6"; my $s10Af = "#dedede"; my $s10Tx = "Cafe";#Radio Cafe Romania
my $s11Id = "1074623"; my $s11Ab = "#333333"; my $s11Fo = "#333333"; my $s11Ba = "#9acd32"; my $s11Af = "#dedede"; my $s11Tx = "J-Pop";#J-Pop Powerplay
my $s12Id = "3413"; my $s12Ab = "#333333"; my $s12Fo = "#333333"; my $s12Ba = "#da70d6"; my $s12Af = "#dedede"; my $s12Tx = "70s-90s";#70s-90s J-pop Stream

my @Id = ($s1Id,$s2Id,$s3Id,$s4Id,$s5Id,$s6Id,$s7Id,$s8Id,$s9Id,$s10Id,$s11Id,$s12Id);
my @Tx = ($s1Tx,$s2Tx,$s3Tx,$s4Tx,$s5Tx,$s6Tx,$s7Tx,$s8Tx,$s9Tx,$s10Tx,$s11Tx,$s12Tx);
my @Ab = ($s1Ab,$s2Ab,$s3Ab,$s4Ab,$s5Ab,$s6Ab,$s7Ab,$s8Ab,$s9Ab,$s10Ab,$s11Ab,$s12Ab);
my @Af = ($s1Af,$s2Af,$s3Af,$s4Af,$s5Af,$s6Af,$s7Af,$s8Af,$s9Af,$s10Af,$s11Af,$s12Af);
my @Ba = ($s1Ba,$s2Ba,$s3Ba,$s4Ba,$s5Ba,$s6Ba,$s7Ba,$s8Ba,$s9Ba,$s10Ba,$s11Ba,$s12Ba);
my @Fo = ($s1Fo,$s2Fo,$s3Fo,$s4Fo,$s5Fo,$s6Fo,$s7Fo,$s8Fo,$s9Fo,$s10Fo,$s11Fo,$s12Fo);

my $padxi = 0;
my $padyi = 0;

#####################################################################

my $bTi = 0;

$mw = new MainWindow();
$mw->minsize($minsize1,$minsize2);
$mw->geometry("$geometry");

$main = $mw->Frame();
$main->pack(
-side => "top",
-fill => "both",
-expand => "yes",
);

$mainL = $main->Frame();
$mainL->pack(
-side => "left",
);

$image = $mainL->Photo( -file => "$bt0Img" );
$bt0 = $mainL->Button(
-image => $image,
-relief => "flat",
-background => "$bt0Bac",
-activebackground => "$bt0ABac",
-padx => 0,
-pady => 0,
-command => \&Ap,
);
$bt0->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);

$mainL2 = $mainL->Frame();
$mainL2->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);

$next = $mainL2->Button(
-relief => "flat",
-text => decode("utf8", "$nextTxt"),
-font => "$nextFont",
-activeforeground => "$nextAFore",
-foreground => "$nextFore",
-background => "$bt0Bac",
-activebackground => "$bt0ABac",
-padx => 0,
-pady => 0,
-command => \&Next,
);
$next->pack(
-side => "top",
-fill => "both",
-expand => "yes",
);

$stop = $mainL2->Button(
-relief => "flat",
-text => decode("utf8", "$stopTxt"),
-font => "$font",
-activeforeground => "$stopAFore",
-foreground => "$stopFore",
-background => "$bt0Bac",
-activebackground => "$stopABase",
-padx => 0,
-pady => 0,
-command => \&Chk,
);
$stop->pack(
-side => "top",
-fill => "both",
-expand => "yes",
);

$mainR = $main->Frame();
$mainR->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);

$mainR1 = $mainR->Frame(
-padx => $padxi,
-pady => $padyi,
);
$mainR1->pack(
-side => "top",
-fill => "both",
-expand => "yes",
);

$bt1 = $mainR1->Button(
-relief => "flat",
-text => decode("utf8", "$bt1Txt"),
-font => "$font",
-activebackground => "$bt1ABac",
-activeforeground => "$bt1AFore",
-background => "$bt1Bac",
-foreground => "$bt1Fore",
-padx => $padxi,
-pady => $padyi,
-command => \&Nr1,
);
$bt1->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);

$bt2 = $mainR1->Button(
-relief => "flat",
-text => decode("utf8", "$bt2Txt"),
-font => "$font",
-activebackground => "$bt2ABac",
-activeforeground => "$bt2AFore",
-background => "$bt2Bac",
-foreground => "$bt2Fore",
-padx => $padxi,
-pady => $padyi,
-command => \&Nr2,
);
$bt2->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);

$bt3 = $mainR1->Button(
-relief => "flat",
-text => decode("utf8", "$bt3Txt"),
-font => "$font",
-activebackground => "$bt3ABac",
-activeforeground => "$bt3AFore",
-background => "$bt3Bac",
-foreground => "$bt3Fore",
-padx => $padxi,
-pady => $padyi,
-command => \&Nr3,
);
$bt3->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);

$bt4 = $mainR1->Button(
-relief => "flat",
-text => decode("utf8", "$bt4Txt"),
-font => "$font",
-activebackground => "$bt4ABac",
-activeforeground => "$bt4AFore",
-background => "$bt4Bac",
-foreground => "$bt4Fore",
-padx => $padxi,
-pady => $padyi,
-command => \&Nr4,
);
$bt4->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);


for($i = 0; $i < 12; $i++){
if($i == 0||$i == 4||$i == 8){
if($i == 0){$fii = 1;}elsif($i == 4){$fii = 2;}elsif($i == 8){$fii = 3;}
$mainRs[$fii] = $mainR->Frame(
-padx => $padxi,
-pady => $padyi,
);
$mainRs[$fii]->pack(
-side => "top",
-fill => "both",
-expand => "yes",
);
}


$sh[$i] = $mainRs[$fii]->Button(
-relief => "flat",
-text => decode("utf8", "$Tx[$i]"),
-font => "$font",
-activebackground => "$Ab[$i]",
-activeforeground => "$Af[$i]",
-background => "$Ba[$i]",
-foreground => "$Fo[$i]",
-padx => $padxi,
-pady => $padyi,
-command => [ \&Scast,$Id[$i] ],
);
$sh[$i]->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);
}

$mvol = $mw->Frame();
$mvol->pack(
-side => "top",
-fill => "both",
-expand => "yes",
);

$sc = $mvol->Scale(
-orient => "horizontal",
-from => 0,
-to => 100,
-variable => \$vol,
-command => \&Cv,
-activebackground => "$volABac",
-background => "$volBac",
-foreground => "$volFore",
);

$sc->set($pVol);

$sc->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);

$sw = $mvol->Button(
-text => decode("utf8", "$swTxt"),
-font => "$swFont",
-relief => "flat",
-text => decode("utf8", "$swTxt"),
-font => "$font",
-activeforeground => "$swAFore",
-activebackground => "$swABac",
-background => "$swBac",
-foreground => "$swFore",
-padx => 0,
-pady => 0,
-command => \&Sdown,
);
$sw->pack(
-side => "left",,
);

MainLoop;

#####################################################################

sub Ap{
&Chk;
$bTi = 8;
system("gnome-terminal --geometry=$tmGeometry -e \"perl aplay-pi.pl -def -list\"");
}

sub Chk{
if($bTi){system("killall -s HUP gnome-terminal-server"); $bTi = 0;};
#Terminal Window Close
}

sub Next{
system("killall -s HUP aplay mpg321");
}

sub Nr1{
&Chk;
$bTi = 8;
system("gnome-terminal --geometry=$tmGeometry -e \"/home/pi/play_radiko.sh $bt1Id\""); #ID
}

sub Nr2{
&Chk;
$bTi = 8;
system("gnome-terminal --geometry=$tmGeometry -e \"/home/pi/play_radiko.sh $bt2Id\""); #ID
}

sub Nr3{
&Chk;
$bTi = 8;
system("gnome-terminal --geometry=$tmGeometry -e \"/home/pi/play_nhk-radio.sh $bt3Id\""); #ID
}

sub Nr4{
&Chk;
$bTi = 8;
system("gnome-terminal --geometry=$tmGeometry -e \"/home/pi/play_nhk-radio.sh $bt4Id\""); #ID
}

sub Scast{
&Chk;
$bTi = 8;
system("gnome-terminal --geometry=$tmGeometry -e \"mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=$_[0]\""); #ID
}

sub Cv{
system("amixer -c 1 sset PCM $vol\%"); #ヴォリューム USB (ライン出力の場合は 1 を 0 に)
}

sub Sdown{
if($msg eq "yes"){
my $msgbox = $mw->messageBox(
-title => "really",
-icon => "question",
-type => "OkCancel",
-default => "Cancel",
-message => decode("utf8", "シャットダウン!?"),
);
if($msgbox eq 'Ok'){system("sudo shutdown -h now");}else{return;
}
}
else{system("sudo shutdown -h now");} #Stop
}

###########/home/pi/pi.pl 改訂版 ##################ここまで

f0021035_10101025.gif


[PR]
by digressive | 2016-09-18 15:22 | プアオーディオ | Comments(3)
Commented by かえる at 2016-09-21 11:22 x
やってますねぇ。ひょっとすると、ラズパイを利用して、テレビやラジオが受信できるんすっか?
Commented by digressive at 2016-09-21 22:12
Radikoやらじるらじるなど、PCでラジオを聴くのはかなり普及していると思います。SHOUTcastなどのストリーミング放送もいいですね。

http://digress.exblog.jp/25822846/

テレビは地デジチューナーが必要になりますが、さすがにラズパイではスペック不足でしょうか。
ユーチューブくらいならまあまあ見られますね。
Commented by dokuritsusite at 2016-09-23 14:46
ブログ拝見させていただきました。
また勉強のため読ませていただきます。
ありがとうございました。
 
<< radiko タイムフリー が... raspberry pi 3 ... >>



人間は、考える足である。
by ラーメン
S M T W T F S
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 29
30
カテゴリ
リンク

おやつ会

人との交流が人を育てます。


ホームページ作成
WEBデザイン(Perl PHP MySQL)
グラフィックデザイン
CI 各種印刷物 広告 SP
はじめました。

■□■□■□





RandomReading《読書記録》
通勤電車が私の書斎さ。
■□■□■□





WEBカラーネーム

WEBカラーチャート

「もう一つの日本」
どう展開するのか、見えませんが楽しみです。

放射NO! 防御プロジェクト
フェイスブック発、自分の身は自分で守ろう

植草一秀の『知られざる真実』
頑張れミラーマン

世に倦む日々
無料版です

奥の横道(写真)
携帯で写真を撮りだすとクセになる。

マニア・マニア
何が彼らをそこまで駆り立てるのか?

天木直人.com
多少偏向していそうだが、
文春よりは参考になる


きっこのブログ
謎のブログ、リンクしていいのかな?

とりまきメモ
ブログというより、日記帳ですね。

LINK MEMO
小生の勝手なリンク集


小金井市の地域SNSです
WEB デザイン モリ のページもあります。

アメブロもよろしく。

pixiv

twitterフォロー ミー

上のボタンが好きな背景色で作れます


青空文庫


お気に入りブログ
ライフログ
以前の記事
2017年 04月
2017年 03月
2017年 02月
2017年 01月
2016年 12月
2016年 10月
2016年 09月
2016年 08月
2016年 06月
2016年 04月
2016年 03月
2016年 02月
2016年 01月
2015年 12月
2015年 11月
2015年 10月
2015年 09月
2015年 08月
2015年 07月
2015年 06月
2015年 05月
2015年 04月
2015年 03月
2015年 02月
2015年 01月
2014年 12月
2014年 11月
2014年 10月
2014年 09月
2014年 08月
2014年 07月
2014年 06月
2014年 05月
2014年 04月
2014年 03月
2014年 02月
2014年 01月
2013年 12月
2013年 11月
2013年 10月
2013年 09月
2013年 08月
2013年 07月
2013年 06月
2013年 05月
2013年 04月
2013年 02月
2013年 01月
2012年 12月
2012年 11月
2012年 10月
2012年 09月
2012年 08月
2012年 07月
2012年 06月
2012年 05月
2012年 04月
2012年 03月
2012年 02月
2012年 01月
2011年 12月
2011年 11月
2011年 10月
2011年 09月
2011年 08月
2011年 07月
2011年 06月
2011年 05月
2011年 04月
2011年 03月
2011年 02月
2011年 01月
2010年 12月
2010年 11月
2010年 10月
2010年 08月
2010年 07月
2010年 06月
2010年 05月
2010年 04月
2010年 03月
2010年 02月
2010年 01月
2009年 12月
2009年 11月
2009年 10月
2009年 09月
2009年 08月
2009年 07月
2009年 06月
2009年 05月
2009年 04月
2009年 03月
2009年 02月
2009年 01月
2008年 12月
2008年 11月
2008年 10月
2008年 09月
2008年 08月
2008年 06月
2008年 05月
2008年 04月
2008年 03月
2008年 02月
2008年 01月
2007年 12月
2007年 11月
2007年 10月
2007年 09月
2007年 08月
2007年 07月
2007年 06月
2007年 05月
2007年 04月
2007年 03月
2007年 02月
2007年 01月
2006年 12月
2006年 11月
2006年 10月
2006年 09月
2006年 08月
最新のコメント
ボリュームメータ...け..
by かえる at 21:01
LEDですか、そうとうマ..
by digressive at 19:41
すげぇわぁ。 Ra..
by かえる at 11:24
げんざい、数学系のライブ..
by かえる at 18:43
Pythonですか、これ..
by digressive at 18:34
きのうからPythonや..
by かえる at 09:00
ruby python ..
by digressive at 19:50
ラズパイのスクリプトはP..
by かえる at 10:53
ラズパイはPCオーディオ..
by digressive at 16:27
すげぇ!
by かえる at 21:58
最新のトラックバック
Macの音楽をオーディオ..
from ちょっとOldなMacの話
グランベリーモール町田
from アウトレットモール・パーク【..
「セオリー」アウトレット
from 町田アウトレット【グランベリ..
アロワナ
from アロワナ
進行中の環境問題
from バナナペーパー!?環境問題を..
バナナが地球を救う。
from バナナが紙に!?そんなバナナ..
インクジェットプリンター..
from ネット専用商社 特選館
【携帯】 アップルの「i..
from 【究極の宗教】Physica..
お得なえびの高原温泉に関..
from 宮崎エリアnavi
TOEIC勉強法
from TOEIC勉強法
検索
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧