カテゴリ:プアオーディオ( 153 )
 
ラズベリーパイ Perl/TKで操作画面
f0021035_10302960.png

f0021035_09475069.png
※91月8日24時 WAVE(MP3)が再生されないスペルミスを修正しました。

ラズベリーパイ 3 B に3.5インチの表示は綺麗だが、感度のイマイチな液晶タッチパネルを付けたので、操作が楽なように大きなボタンの操作画面を Perl/TK で表示した。1のいやらしいラズベリーで、メディアとホームディレクトリ内のWAVEかMP3データを収集してランダム再生する。2のボタンで次の曲に飛ぶ。3は各ボタンの停止ボタン。その左には各インターネットラジオの再生開始ボタン。Vol はボリューム。5のボタンはラズベリーパイのシャットダウンである。下記の スクリプトに pi.pl と名前をつけてホームディレクトリ(/home/pi)に置き、

/home/pi/.profile

の一番下に、

sudo -u pi perl /home/pi/pi.pl &

と書き加えると、ログイン後にデスクトップに自動表示される。その他、使用するスクリプトなどは、

perl-tk
aplay-pi.pl
mplayer
rtmpdump
swftools
libxml2-utilsplay
radiko.sh
play_nhk-radio.sh
raspA.gif(この下のいやらしいラズベリーの画像)
f0021035_10101025.gif







が必要である。インストール方法などは、下にある弊関連ブログの関連リンクでご確認いただける。

追記
MP3再生にmpg321も必要でした・
sudo apt-get install mpg321

pi.pl

下記のスクリプトを pi.pl の名前で /home/pi (ホームディレクトリ)に保存する。
ターミナルで
$ 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 = 400; #サイズW
my $minsize2 = 140; #サイズH
my $tmGeometry = "42x3+10+210"; #gnorm-terminal サイズ/表示位置
my $pVol = "50"; #初期ボリューム
my $font = "MS ゴシック 12 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 $bt1Id = "215936"; #SHOUTcast1 ID
my $bt1Txt = "Jazz"; #ネットラジオボタン1 テキスト
my $bt1Fore = "#333333"; #ネットラジオボタン1 文字色
my $bt1Bac = "#da70d6"; #ネットラジオボタン1 背景色
my $bt1AFore = "#dedede"; #ネットラジオボタン1 アクティブ文字色
my $bt1ABac = "#333333"; #ネットラジオボタン1 アクティブ背景色

my $bt2Id = "15560"; #SHOUTcast2 ID
my $bt2Txt = "Cool"; #ネットラジオボタン2 テキスト
my $bt2Fore = "#333333"; #ネットラジオボタン2 文字色
my $bt2Bac = "#ffa500"; #ネットラジオボタン2 背景色
my $bt2AFore = "#dedede"; #ネットラジオボタン2 アクティブ文字色
my $bt2ABac = "#333333"; #ネットラジオボタン2 アクティブ背景色

my $bt3Id = "182137"; #SHOUTcast3 ID
my $bt3Txt = "Pop"; #ネットラジオボタン3 テキスト
my $bt3Fore = "#333333"; #ネットラジオボタン3 文字色
my $bt3Bac = "#98fb98"; #ネットラジオボタン3 背景色
my $bt3AFore = "#dedede"; #ネットラジオボタン3 アクティブ文字色
my $bt3ABac = "#333333"; #ネットラジオボタン3 アクティブ背景色

my $bt4Id = "TBS"; #Radico1 ID (http://www.norikistudio.com/station-id-list)
my $bt4Txt = "TBS"; #Radico1 テキスト
my $bt4Fore = "#333333"; #Radico1 文字色
my $bt4Bac = "#40e0d0"; #Radico1 背景色
my $bt4AFore = "#dedede"; #Radico1 アクティブ文字色
my $bt4ABac = "#333333"; #Radico1 アクティブ背景色

my $bt5Id = "FMJ"; #Radico2 ID (http://www.norikistudio.com/station-id-list)
my $bt5Txt = "FMJ"; #Radico2 テキスト
my $bt5Fore = "#333333"; #Radico2 文字色
my $bt5Bac = "#87cefa"; #Radico2 背景色
my $bt5AFore = "#dedede"; #Radico2 アクティブ文字色
my $bt5ABac = "#333333"; #Radico2 アクティブ背景色

#らじるらじるの再生は、Ubuntu でテストした時は出来たのだが、小生のラズパイではエラーになった。とりあえずSHOUTcastの再生にしておいた。
#と思ったら、単純なスペルミスでした。コメントアウトを変えれば、SHOUTcastにもなります。

my $bt6Id = "r1"; #らじるらじる ID=r1:NHKラジオ第1/r2:NHKラジオ第2/fm:NHK FM
#my $bt6IdSHOUT = "1074623"; #SHOUTcast6 ID

my $bt6Txt = "NHK1"; #らじるらじる テキスト
my $bt6Fore = "#333333"; #らじるらじる 文字色
my $bt6Bac = "#ffd700"; #らじるらじる 背景色
my $bt6AFore = "#dedede"; #らじるらじる アクティブ文字色
my $bt6ABac = "#333333"; #らじるらじる アクティブ背景色

my $bt7Txt = "◯"; #シャットダウン テキスト
my $bt7Font = "MS ゴシック 18 bold"; #シャットダウン フォント
my $bt7Bac = "#555555"; #シャットダウン 背景色
my $bt7ABac = "#b50008"; #シャットダウン アクティブ背景色
my $bt7Fore = "#dddddd"; #シャットダウン 文字色
my $bt7AFore = "#ffffff"; #シャットダウン アクティブ文字色

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

my $padxi = 2;
my $padyi = 2;

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

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",
);

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

$bt4 = $mainR2->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",
);

$bt5 = $mainR2->Button(
-relief => "flat",
-text => decode("utf8", "$bt5Txt"),
-font => "$font",
-activebackground => "$bt5ABac",
-activeforeground => "$bt5AFore",
-background => "$bt5Bac",
-foreground => "$bt5Fore",
-padx => $padxi,
-pady => $padyi,
-command => \&Nr5,
);
$bt5->pack(
-side => "left",
-fill => "both",
-expand => "yes",
);

$bt6 = $mainR2->Button(
-relief => "flat",
-text => decode("utf8", "$bt6Txt"),
-font => "$font",
-activebackground => "$bt6ABac",
-activeforeground => "$bt6AFore",
-background => "$bt6Bac",
-foreground => "$bt6Fore",
-padx => $padxi,
-pady => $padyi,
-command => \&Nr6,
);
$bt6->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",
);

$bt7 = $mvol->Button(
-text => decode("utf8", "$bt7Txt"),
-font => "$bt7Font",
-relief => "flat",
-text => decode("utf8", "$bt7Txt"),
-font => "$font",
-activeforeground => "$bt7AFore",
-activebackground => "$bt7ABac",
-background => "$bt7Bac",
-foreground => "$bt7Fore",
-padx => 0,
-pady => 0,
-command => \&Sw,
);
$bt7->pack(
-side => "left",
# -fill => "both",
# -expand => "yes",
);

MainLoop;

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

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

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

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

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

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

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

sub Nr6{
if($bt6Id){
&Chk;
$bTi = 8;
system("gnome-terminal --geometry=$tmGeometry -e \"/home/pi/play_nhk-radio.sh $bt6Id\""); #ID
}else{
&Chk;
$bTi = 8;
system("gnome-terminal --geometry=$tmGeometry -e \"mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=$bt6IdSHOUT\""); #ID
}
}


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

sub Sw{
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
}

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

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

###########/home/pi/pi.pl##################ここまで

f0021035_10101025.gif
関連リンク

1 ラズベリーパイ 3
5 ラズベリーパイ Perl/TKで操作画面

[PR]
by digressive | 2016-09-13 10:21 | プアオーディオ | Comments(0)
 
ラズベリーパイで WAVEランダム再生
f0021035_12382091.gif
ラズパイのraspbianでWAVEファイルをランダム再生するperlスクリプトである。
下記をテキストファイルに保存して、aplay-pi.pl と名前をつけ、ホームディレクトリ(/home/pi)に置く。エンコードは utf8 でお願いする。

※9月13日に、pi.plに合わせて一部変更しています。pi.plと併用の際は新しいのを使ってください。

※12月10日 USBDACにひかかってメディアが開けないのを修正しました
(修正前)opendir(IN,$ndir) or die "opendir $dir エラー : $!";
(修正後)opendir(IN,$ndir) or return";

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

#!/usr/bin/perl

$player = "aplay";

## 使用プレーヤーを変更
#$player = "mpg321"; #mpg321でmpg3ファイル再生したい場合、コメントアウト(#)を取る。

## -def オプションで再生したいフォルダー。ほぼ必須。
$defaulturl = "/media/pi";

## 追加フォルダー。ここに書き込んだフォルダー内の該当音楽ファイルは必ず再生されます。
$defaulturls = "/home/pi";

$max = 0; #再生曲数 0で無制限

if($player eq "mpg321"){@type = (".mp3");}else{@type = (".wav",".wave");}
$dir = "./";
$udir = "0";
$list = 0;
$alist = 0;
$noran = 0;
$down = 0;


if ($ARGV[0]){
foreach $_ (@ARGV){

if($_ =~ /\-dir\=/i){
$_ =~ s/\-dir\=//; $dir = $_;
$udir = 8;
}

if($_ =~ /\-max\=/i){$_ =~ s/\-max\=//; $max = $_;}

if($_ =~ /\-def/i){$dir = "$defaulturl"; $udir = 88;}

if($_ =~ /\-list/i){$list = 8;}
if($_ =~ /\-alist/i){$alist = 8;}
if($_ =~ /\-noran/i){$noran = 8;}
if($_ =~ /\-down/i){$down = 8;}
}
}
else{
$dir = "./";
if($player eq "mpg321"){@type = (".mp3");}else{@type = (".wav",".wave");}
}

if($player eq "mpg321"){@type = (".mp3");}else{@type = (".wav",".wave");}
&getlist($dir);
if($defaulturls ne ""){&getlist($defaulturls);}


print "\n********************************************\n";
print "aplay-pi.pl は aplay でのランダム演奏用です。\n";
print "(初期設定の使用プレーヤー変更でmp3も可)\n";
print "ex: perl aplay.pl -alist -list -dir=./sound\n";
print "------------------------------------------------\n";
print "-def (設定したデフォルト\"" . $defaulturl . "\"を再生)\n";
print "-alist (再生一覧リストを表示)\n";
print "-list (再生リストを表示)\n";
print "-noran (ランダム再生しない)\n";
print "-down (逆順に再生)\n";
print "-dir=URL (URLのフォルダー内を演奏)\n";
print "-max=数字 (最大演奏回数、無指定で無制限)\n";
print "演奏中 次の局 Ctrl + C\n";
print "演奏中 中止 Ctrl + Z\n\n";


if($noran){@new = @files; print "\**NORANDOM**\n\n";}
elsif($down){@new = sort {$b cmp $a} @files; print "\**DOWN**\n\n";}
else{
foreach (@files){
my $r = rand @new+1;
push(@new, $new[$r]);
$new[$r] = $_;
}
print "\**RANDOM**\n\n";
}

if($alist){
$listii = 0; print "再生予定リスト\n------------------------------------------------\n";

foreach (@new){
$listii ++;
$wlists = $_;
$wlists =~ s/$defaulturl\//\//g;
$wlists =~ s/$defaulturls\//\//g;
if($player eq "mpg321"){$wlists =~ s/\.mp3//ig;}else{$wlists =~ s/\.wa.+//ig;}
print "$listii*$wlists\n";
if($listii == $max){last;}}

print "------------------------------------------------\n\n\n";
}

$listi = 0;
foreach (@new){
$listi ++;

$lists = " \"$_\"";

if($list){
$wlists = $_;
$wlists =~ s/$defaulturl\//\//g;
$wlists =~ s/$defaulturls\//\//g;
if($player eq "mpg321"){$wlists =~ s/\.mp3//ig;}else{$wlists =~ s/\.wa.+//ig;}
}

#if($list){print "------------------------------------------------\n\n";}

if($player eq "mpg321"){
if($lists){system("mpg321 $lists");}
else{print "--NoFile--\n\n";}
}
else{
if($list){print "NowPlay$listii*$wlists\n";}
if($lists){system("aplay -q $lists");}
else{print "--NoFile--\n\n";}
}

if($listi == $max){last;}
}

exit;
#-----------------------------------------------------------------------

sub getlist{
my $ndir = $_[0];
my @get;

#opendir(IN,$ndir) or die "opendir $dir エラー : $!";
opendir(IN,$ndir) or return;

@get = readdir IN;
closedir(IN);

foreach $files (@get){
next if $files =~ /^\.\.$/;
next if $files =~ /^\.$/;


foreach (@type) {
if($files =~ /$_$/i){
if($ndir =~ /^\.\/.+/i){push @files, "$ndir" . "/$files";}
elsif($udir){$ndir =~ s/\/$//i; push @files, "$ndir" . "/$files";}
else{push @files, "$files";}
}
}


if($ndir =~ /^\.\/.+/i){$nndir = $ndir . "/$files";}
elsif($udir){$ndir =~ s/\/$//i; $nndir = "$ndir" . "/$files";}
else{$nndir = $ndir . "$files";}

#print "$nndir\n";#TEST用
if(-d $nndir){&getlist($nndir);}
}

}

############################## ここまで

使用例

コマンドで

$ play-pi.pl -def -list

などで、ホームディレクトリとデバイスにあるWAVE(かMP3)を検索してランダム再生する。


[PR]
by digressive | 2016-09-08 22:35 | プアオーディオ | Comments(0)
 
ラズベリーパイでラジオ
f0021035_12382091.gif
Perl/TK で操作パネルを作るとして、ラジオの聞ける環境を準備しなければいけない。


などを参考にして準備した。

Raspberry pi でネットラジオの準備

諸々はMplayer で聞けるらしい。インストールする。

$ sudo apt-get install mplayer
$ sudo apt-get install rtmpdump swftools libxml2-utils

radiico、らじる らじるには専用のスクリプトがある。
play_radiko.sh、play_nhk-radio.sh を GitHub から入手する。

全て /home/pi に置き、パーミッションをつけ、エラーが面倒なのであらかじめ一時保存ファイルを作っておく。

$ sudo chmod 755 play_radiko.sh
$ sudo chmod 755 play_nhk-radio.sh
$ mkdir /home/pi/radio
$ sudo chmod 777 radio

再生のテスト

インターネットラジオは mplayer で ID を入力して聞ける。ID は SHOUTcast のホームペジで探す。

f0021035_21444653.jpg
矢印のところにカーソルを持っていくと、下にIDが表示されるので、メモする!
コマンドで再生してみる

$ mplayer -cache 700 -playlist 'http://yp.shoutcast.com/sbin/tunein-station.pls?id=xxxxx

radiko はコマンドで play_radiko.sh に放送局を指定する。IDは ノリキスタジオdcc-jpl.com などで調べられる。

$ play_radiko.sh TBS

らじるらじるは、play_nhk-radio.sh にID(r1: NHKラジオ第1/r2: NHKラジオ第2/fm: NHK FM)で、

$ play_nhk-radio.sh r1

と、端末でテストしてみる。

他には、小生謹製の aplay-pi.pl を使って、WAVE や MP3 をランダム再生する。
MP3 の再生には MPG321 も使用する。

$ sudo apt-get install mpg321

aplay-pi.pl の初期設定で aplay で WAVE か、MPG321 で MP3 か設定するようにしている。

## 使用プレーヤーを変更
#$player = "mpg321"; #mpg321でmpg3ファイル再生したい場合、コメントアウト(#)を取る。

で、タブン大丈夫だと思う。MP3ファイルをあまり使わないので、テストしていないが、そのうちテストして、不備があれば直しておくかもしれない?


[PR]
by digressive | 2016-09-08 22:21 | プアオーディオ | Comments(0)
 
ラズベリーパイに Perl/TK
f0021035_20482625.png
Raspberry Pi 3 をオーディオ的に使うには、やはり Volume と i2s の DAC との組み合わせがポピュラーだが、どうも再生に他のPCを立ち上げるのではラズベリーパイの面白さを半減する気がするので、3.5インチの安物のモニターを購入したが、感度の悪いタッチパネルをなんとか使うにはと考えた末に、使い道のよくわからない Perl/TK が使えるのではないかと思いつき、インストールしてみた。

sudo apt-get install perl-tk

上記は、小生の Raspbian ではうまくいかなかったので、CPANからインストールした。

cpan> install Bundle::CPAN
cpan> reload cpan
cpan> install YAML::Tiny
cpan> install Tk

ラズベリーパイを起動して、ログインした画面にデーモン小暮として Perl/TK による操作画面を表示するには、

/home/pi/.profile

の下の方に Perl/TK のスクリプトファイル( pi.pl )を起動するように記述する。

sudo -u pi perl /home/pi/pi.pl &

これで、テスト用の pi.pl を書き直せば起動してログインした画面に操作画面が現れる予定である。音楽のランダム再生や、Raspbian ならではのネットラジオ再生などをワンタッチ化したい。


testスクリプト例

#!/usr/bin/perl

use Tk;
use strict;
use warnings;

my $mw = new MainWindow;
$mw->title( 'Hello' );

$mw->Label( -text => 'Hello World' )->pack;
$mw->Button( -text => "Done", -command => sub { exit } )->pack;

MainLoop;



[PR]
by digressive | 2016-09-05 21:56 | プアオーディオ | Comments(3)
 
ラズベリーパイ 3
f0021035_20274563.jpg
ツルピーが "ラズベリーパイ" とやらで遊んでいるらしい!?なんなのだろうと調べてみると、マイコンのお化けといった立ち位置のへんてこなボードである。子供向けのプログラミング学習用ミニPCといった説明も見られる。ミニミニPCといったコンセプトで "PINE64" などの類似品も多く出回りだしたらしく、それぞれ一長一短あるらしいが、やはり情報量が多いと思われるラズベリーパイが無難であろうと、Amazonで購入してしまった。変なショップで購入したらしく、シンガポールから船便で発送され、10日以上かかって簡易書留で届いた。箱は潰れているが、本体はなんとか無事であった。
f0021035_20274351.jpg
f0021035_20281294.jpg
f0021035_20281523.jpg
f0021035_20275265.jpg
f0021035_20280767.jpg
USB×4、HDMI、有線LAN、無線LAN(3のみ)、カメラ用接続端子、マイコン風(i2s)端子、アナログ音声出力と、インターフェイスは豊富である。OSは裏面のソケットにマイクロSDカードを挿入して使う。CPU は iPhone5 相当で、キーボードとディスプレーを繋げばミニPCといった使い方もできるだろうが、メモリが1GBで、ちょいと非力ではある。やはりコジンマリと使いたいので、3.5インチのケース付きで安い液晶タッチパネルを購入した。上部のファンが付けられるらしきパネルを外すとちょうどタッチパネルが収まる。
f0021035_23523490.jpg
オーディオ的にはマイコン風(i2s)端子を使う "i2s USBダック" を搭載し、操作用・コンテンツ用のPCやデバイスを利用し、音楽用の "Volumio" というOSを入れて有線・無線で再生専用にするのがお作法であるらしいが、マイコン風(i2s)端子は液晶タッチパネルに使っているし、プアオーディオ的には USBダック で十分みたいなので、液晶タッチパネルのメーカーがカスタマイズした "Raspbian" をインストールした。初期設定には無線キーボードを使用したが、画面が小さいので結構やりにくかった。表示は綺麗である。

日本語化、SDカードの容量拡張などは親切なサイトがいくつもあるので簡単にできた。SSHのためのIPアドレスの固定化や、サウンドのUSBからの出力にはちょいと戸惑ったのでメモしておく。

Rapsberry pi 3 のIPアドレスの固定化
/etc/dhcpcd.confを編集する、下記を最下部に追加した。(81にしている、XXなど前段のIPアドレスは環境に合わせなくてはいけない。)

interface wlan0
static ip_address=192.168.XX.81/24
static routers=192.168.XX.1
static domain_name_servers=192.168.XX.1

interface eth0
static ip_address=192.168.XX.81/24
static routers=192.168.XX.1
static domain_name_servers=192.168.XX.1


Rapsberry pi 3 のUSBダックへの出力
ターミナルで

pi@raspberrypi:~ $ cat /proc/asound/cards
0 [ALSA ]: bcm2835 - bcm2835 ALSA
bcm2835 ALSA
1 [DAC ]: USB-Audio - USB AUDIO DAC
BurrBrown from Texas Instruments USB AUDIO DAC at usb-3f980000.usb-1.3.4, fu


などと、USBダックの認識を確認する。上記のようにDACが出て来ればOKである。オンボードカードがデフォルトになっている場合が多いので、/etc/asound.confを編集するという説が多いが、小生は失敗した。/etc/asound.conf がなかったので、下記の内容で新しく作成したが駄目であった。

pcm.!default {
type hw
card
1}
ctl.!default {
type hw
card
1}

どうやら、/home/pi/.asoundrc という隠しファイルの該当部分を上記のように修正する必要があるらしい。この場合、タブン /etc/asound.conf はいらない。
さらに /usr/share/alsa/alsa.conf の該当部分を下記に変更する。

defaults.ctl.card 1
defaults.pcm.card
1

イヤホン端子のアナログ出力はノイズが酷くて使えないが、USBダックを使えば マアマア である…………
いろんな使いみちが考えられる。やはりマイコンボードのバケモノである。


[PR]
by digressive | 2016-08-18 00:33 | プアオーディオ | Comments(2)
 
ipod の RockBox で プレーリスト作成
f0021035_22534933.png
ipod classic が、なりいきで G5 と G5.5 の2台になったので、G5 の方に ROCKbox をインストールしてみた。インストールについては、rockbox ファームウェア などと検索するといろいろと情報がある。ROCKbox のホームページからインストールヘルパーをダウンロードしてインストールするのがお手軽なようだが、最終ヴァージョンの ipod clasic にはいろいろと工夫しないとインストールできないらしい。これも情報はあるようである。小生は G5 なのでこちらのサイトを参考にインストールした。
ヘルパーを使えればインストールは簡単である。日本語化もいろいろと情報がある。小生の場合は日本語フォントをインストールして、フォントをその日本語フォントに設定した後でランゲージをJapanにすれば、とりあえず日本語で使えている。その後、ROCKbox をどうやって使うかの情報が意外とない。まあ、ipod が生産中止の現在、不要な情報になりつつあるのかもしれない。
音楽ファイルの整理には iTunes を使い、再生はROCKbox で行うという方法があるらしいが、実際のやりかたはすこぶる面倒なようである。そこで小生のやったことは、
f0021035_22530018.jpg
まず ROCKbox 化した ipod をディスクとして PC に接続し、ipod直下に音楽データ用フォルダを作成した。上手の Flacs である。その後、iTunes の保存ディレクトリを一時的にこの Flacs に変更して(小生は Flac データを入れるつもりで Flacs にしているだけで、ふつうは Music などでいいでげしょう。)iTunes で希望の変換設定(小生はCDの取り込みを一時的にAACにした)にして、ipod 用のプレイリストをAAC ヴァージョンに変換しながら曲をここに整理する。
小生は AIFF で保存してある曲の一部を iTunes で AAC に変換しながら iPod に保存したかったのでこんな面倒なコトをしたが、変換しないのなら必要なフォルダを ipod にコピペするだけでよい。
f0021035_22530292.png
これにより、ROCKbox でフォルダをたどって選曲ができるし、データベース作成もスムーズなようである。ちなみに小生は Flac か Alac で迷ったが、AACかMP3の256kbps、192kbpsあたりが実用的にも精神的にもいいのではないかと結論した。
f0021035_22532191.png
ROCKbox メインメニューのファイルを選択すると、
f0021035_22531908.png
先ほど作ったフォルダーがあるので、ipod の中央のボタンを長押しするとコンテキストメニューになる。
f0021035_22531612.png
プレイリストカタログを選択し
f0021035_22531416.png
新しいプレイリストに追加を選択、
f0021035_22531009.png
一番下のリストファイル名を選択し反転表示させてからホイールの右側を押すと、一瞬でリストが作成される。
f0021035_22530845.png
メインメニューのプレイしストカタログに作成されている。小生はここから一括してランダム再生させてている。
f0021035_22525485.png
いじれば、もっといろんなことができるようだが、いかんせん日本語情報が少ない。

でもって、肝心の音だが、ヘッドフォンを使う分には、ハッキリくっきりですっきりな音がグーである。ライン出力からアンプを通すと、ipod とは傾向の違う音色になるのは確かだが、いいか悪いかは好みの問題だと思う。ヘッドフォン用にはお勧めである。

[PR]
by digressive | 2016-06-25 23:42 | プアオーディオ | Comments(5)
 
YAMAHA製 YDA138 リターンズ 2016Ver.
f0021035_21473527.jpg
ハードオフで540円で購入したジャンクのパワーアンプ sansui A-M70 のサンヨーのアンプチップが経年劣化によるショートでフォステクスの fe87e をふっ飛ばした時に、どうやらNFJスペシャルアンプの YDA138 の左チャンネルもふっ飛ばしたらしい。すでにキットは販売していないようだったので、そのままヘッドフォン用にのこしておいて、そのうち他の基盤と交換しようかと思っていたが、なんと、ヤフオクで発見したのである。
YAMAHA製 YDA138 デジタルアンプ自作キット リターンズ 2016Ver. である。前回と基盤は同じだが、付属パーツが一部変わっていて、1,480円から1,980円に値上げしていた。まあ、品質はわかっているので全く問題ない。すぐさま落札した。
f0021035_21473099.jpg
ICが破裂した前ヴァージョンの基盤から流用できそうな部品を取りはずし、基盤は全く同じなのに値上げしたリターンズの基盤に付け直す。
f0021035_21470891.jpg
ついでに奮発したTOKOのインダクターと、なぜかキットに入った洋物のビンテージコンデンサーがじつに渋い。
f0021035_21465971.jpg
なぜか音出しも一発でOKであった。めずらしいコトもあるものである。ちょっと聴いた感じ、ビンテージコンデンサーのせいであろうか、解像度はやや落ちたような感じだが、マイルドでおおらかな鳴り方である。前回ヴァージョンよりも YDA138 の特徴が活きた音であるような気もする。いつもの UBUNTU aplay ではなくて、たまたまマックが起動していたので OS X の afplay で鳴らしてみたら、 TA2020 との性格の違いがよくわかるようである。afplay は aplay よりもかなりいいかもしれない。TA2020 は、いかにも解像度が高いと言った音色だが、ちょっと音が先鋭になって突き刺さるような感じがあるが、YDA138 は、どこまでもマイルドである。TA2020は、女性ヴォーカルが美人に聞こえるが、YDA138 では貫禄のあるオバサンになる。まあ、勝手な感想である。

[PR]
by digressive | 2016-06-22 22:27 | プアオーディオ | Comments(0)
 
ディズニー MuPods ミューポッズ ミニスピーカー
f0021035_19123396.jpg
ディズニー MuPods ミューポッズ ミニスピーカー である。例によって、すでに小生の散歩コースに組み込まれている近所のハードオフにて、かわいいのでつい購入してしまった。ジャンク108円である。
f0021035_19123168.jpg
キャラクターデザイン優先らしく、ボリュームコントロールが裏になるので使いにくいが、3段階で最少以上にボリュームを上げると盛大に音割れするので、実際に使うことはなさそうである。横からコードが出ているのは、もちろんスピーカーを外してスピーカーコードをつないでみたのである。100μFのチップコンデンサーを50v 22μF の電解コンデンサーに変えてみたが、音が割れてよくないので、6.3V 470μF を無理やりに押し込んでみたら、聴ける音になった。大きなスピーカーにつないでやると、けして上等ではないが、十分に迫力のある音がする。しかし、どうせスペースを使うのであれば、わざわ小さなアンプを使う必要はないともいえる。これはやはり、ひどい音でもこのままミニスピーカーとして使うしかない商品なのだろう。いつにもましてアホな改造であった。
f0021035_19123651.jpg

[PR]
by digressive | 2016-04-28 19:24 | プアオーディオ | Comments(0)
 
迷走 iPod classic に SSD・SD を
f0021035_20215497.jpg
iPod classic である。左から
Rockbox をインストールしようとアレコレしていて壊れた「第4世代 20GB」(4G)
「第5.5世代 30GB」と勘違いして落札した「第5世代 30GB」(5G)
「第5.5世代 30GB」(5.5G)
である。
永らく愛用していた4Gは最近異音がしたり、音飛びがしたりしていたのだが、RockboxなるフリーのiPod用ファームウェアが音がいいというのでインストールしてようとして、設定が難しく、初期化を繰り返すうちに HDD が完全にいかれてしまい、HDDを交換するしかあるまいかとネットであれこれ見ているうちに、5.5G に SSD を入れるという記事にひっかかり、この際これでいこうと思い立ち、ヤフオクでジャンクの iPod Classic 5G 年式2006 とあるので、5.5G だろうと思えるののを安く落札できた。白がよかったが、安いので黒でもいいやと思ったのである。届いたのをさっそく再起動、強制充電してみると、MA146J/A である。がっくりきてクレームの電話をしたら、2006年に買ったから2006年式だ、ジャンクに文句を言うなといった対応だった。2006年にも改良前のモデルが一部製造されたことは事実であろうが、年式となるとどうなんだろうか?このあたり、わかって書いていたのなら詐欺ともいえるが、電話の感じでは判断できなかった。まあ、お安かったし、実際の使用にあたっては違いを感じることはほとんどなかろうから、もらっておいた。しかし、やはり 5.5G が気になり、ヤフオクで今度は MA444J/A とちゃんと記載のあるジャンクじゃない白の 5.5G を、そこそこ安く落札できたのが、一番右である。
f0021035_20213869.jpg
ipod ssd と検索すると、親切に改造の経験を教えてくれるサイトがいくつも出てくる。それらをよく読んで、実績のあるパーツを選ぶのが重要である。などと言いながらサイトをいろいろと見ていて、4G に SDカード を入れている人を発見、ついつい勢いでそのパーツも、
f0021035_20214206.jpg
今度は実績よりも価格優先で収集、これが失敗であったかもしれない、練習がてらに4G の改造からやってみたが、
f0021035_20214456.jpg
状況は変わらなかった! どうも SDカード を認識できない様子である。これはまあ、とりあえず置いておいて、5.5G に挑戦、こちらは実績のあるパーツだけであり、ケーブルの向きと取り付けにちょっとアタフタしたが、とりあえず成功のようである。
f0021035_20214818.jpg
f0021035_20215144.jpg
無事に 238GB のiPod classic になった。すなおに嬉しい。無圧縮の曲が2,000曲ほど入るだろうか (^_^)。容量も嬉しいが、バッテリーにフラッシュメモリの組み合わせはノイズとはほぼ無縁とも考えられるのではなかろうかなどとも思うのである。
黒には AAC 192MHz で気軽に使おうと思う。

iMod化というのも気になるが、リスクの割には効果がさほどでもないと思うので、当面は回避である。

[PR]
by digressive | 2016-04-22 23:50 | プアオーディオ | Comments(0)
 
iPhone用、エコスピーカー
f0021035_21580348.jpg
デジカメとして愛用しているiPhone4、DropboxですぐにPCと画像が共有できるのですこぶる便利である。さらに、最近、インターネットラジオのJazz専用局などのアプリを入れると、サウンドデバイスとしてもすこぶる優れていることに気がついた。なにを今更である。能率高めのまともなパッシブスピーカーなら、アンプなしでそれなりに鳴らせる。また、iPhone内部スピーカーの音を大きくしてくれるエコスピーカーなるものも一部で流行っているらしい。まあ、紙コップ等に入れるだけでも音が響いてよくなるらしい。で、小生も、このところCSS3とHTYML5の入門書を読んでいて、肩が凝ってしかたがないので、気分転換に作ってみた。
f0021035_21580528.jpg
Jマートで40円の端材を180円でカットしてもらい、総額220円かかった。40円には理由があった。ヤスリで研ぐとベニアがポロポロと崩れて悲惨な事になってしまった(下写真参照)。
f0021035_21580221.jpg
f0021035_21580073.jpg
背面にスリットを入れれば充電スタンドにもなると思うが、薄いiPhone5にすればスリットもいらないだろうから、とりあえずスリットはやめておく。小さい方のiPhone6でも大丈夫になっていると思う。内部は簡単な音道になっていて、あまり大きくはならないが、すなおに音を響かしてくれて、優しい聞きやすい音である。

[PR]
by digressive | 2016-03-15 22:19 | プアオーディオ | Comments(0)
 



人間は、考える足である。
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勉強法
検索
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧