Raspberry Pi2 で AirPlayしたい(調査編)

最近引っ越した

なんか数年ぶりのPostだなぁ。
最近とある賃貸に引っ越しして、各機器の配置が変わった。
いままではTVとミニコンポ(なんと、USB入力つきのVH7PCだよ。生存しているのだ)が近かったので、AirMac Expressのアナログ出力をミニコンポのLINE INに入れてAirPlayでMacとかiPodから音楽再生していた。(元々はThinkpadをVH7PCに常時直結という時代もあったが…遠い目)
引っ越し後は、居間にTVとアクティブスピーカー、AppleTV。和室にMacとミニコンポ。という感じで、TVのそばにあるアクティブスピーカーのLINE INになにかつないで音楽を鳴らしたい。

AppleTVの光デジタル→アナログ変換?

AppleTV3がTVのそばにあるので、そこにAirPlayで音楽飛ばして、アクティブスピーカーから鳴らせばいいじゃんと思ったが、AppleTV3はあいにく光デジタル出力しかない。安いDACを探したらAmazonなら1,000円ぐらいである。ただAmazonは最近2,000円以下のものは送料がかかる。(セコい私)

同じような商品はヨドバシにはなかったりする。

Raspberry Pi2でAprPlayサーバーがいいんじゃ?

というわけでふと思いついたのがファイルサーバーにしてるRaspberry Pi2。
我が家ではRaspberry Pi2が四六時中家庭内ファイル&Webサーバーとして動いている。
単純にじぶんちLAN内だけしかアクセスできないサーバーなんだけど….
こいつに、USBオーディオアダプターつけてAirPlayできるソフトを入れればいいらしい。USBのオーディオアダプターって他にも使えそうだしね。これだとヨドバシでも売ってる。

というわけで、USBオーディオアダプターを買えば お茶の間のスピーカーでAirPlayできそう。
USBオーディオなアダプタって昔買わなかったかなぁ….と漠然と思い始めている。

広告

Windowsバックアップを使ってみたい…

Windows7 のWindowsバックアップを使ってシステムバックアップしてみようと思ったら、exFATのHDDにはバックアップできなかった。NTFSパーティションでないとNGらしい。
うーむむ。不便。ネットワークドライブはできるのかなーと思ったら、Win7 ProでないとNGらしい。
うちのはWin7 Home Premium…
と思ったらこんなすばらしい記事が。
「Windows7 Home Premiumでバックアップ先をネットワークドライブにする(偽」
http://d.hatena.ne.jp/ruby-U/20120118/1326855558
でも、リストアできるのかなー ^-^);;;
まずは2.5インチ 160G の USB HDDをHPFSにしてバックアップしてみてからにしよう…

【Mind】CSVライブラリをつくってみる#2

CSVライブラリを日本語プログラミング言語Mindで書き始めてみたのですが、どうも全体のツクリとか、結果のインターフェースが気に入らないので検討中だったりします。
ヒントを求めて、Mindの書籍(20年もの!)を見ていたら、サンプルプログラムのところにCSVを切り出すライブラリ風のソースが出ていましたorz あ゛ー
そのソースを見ていると文字列実体変数はまったく使ってなくて、文字列変数で「分断」とかしているんですよね。文字列変数はポインターとレングスしか持ってないということだったので、すっかりJavaに洗脳された私としてはimmutableなオブジェクトであるという意識でした。違うんですね。
たとえば「削除」っていう文字列処理単語があるんですけど、その説明で実際に削除されるわけではなくてポインターがズレるんです、ということが書いてありました。たぶん分断も元文字列の方はポインターがズレてレングスが減少するのでしょう。結果はスタックに積まれますが。
文字列変数と文字列実体変数の理解がいまだダメだということがわかりした。精進せねば..w
いろいろとソースをいじっていくので、そろそろバージョン管理ソフトに載せないとツラくなってきたのです。(怠惰な環境に慣れると戻れないですなぁ)
バージョン管理ソフトに載せるとdiffも取れるし…eclipseとか経由にすると慣れたeclipseのエディターとかでエディットできるし。ただ、eclipse上でMindのコンパイル→実行は無理なので、そこはプロントを横で開いて実行することにします。
ご自宅用にWindowsマシンにRational Team Concert v3 iFix1のサーバーw(古!)があるのでそこに格納することにしました。特に目新しいことはなくて、RTC Client mac版からRTCサーバーへ接続してjazz管理パースペクティブから新規プロジェクトを作りました。eclipseのエディターのエンコードデフォルトをeucにしただけ。
Mindはコンパイルするとシンボルファイル(.sym)とかコンパイル結果ファイル(.inf)とかいろんなファイルをソースと同じディレクトリに吐くので、それはリポジトリへインポートしたあとに管理対象から外しました。
これで、バージョン管理とチケット管理できる環境が整いました。「こんな改良するぞ」ってワークアイテム(tracのチケットみたいなの)を切って、修正した部分と関連づけ管理とかできて便利そう。
と、環境オタに陥りそうになりつつ….改良していきたいと思います。
CSVライブラリが形になったら、超簡単正規表現ライブラリとかも作ってみたいなぁ。できたら普段使いのちょっとしたツールづくりの環境として使えそうだし。ただmacだとMindはEUCなのがちょっとアレですけど。macのデフォルトはUTF-8なんですよね。最近のLinuxとかもUTF-8ですけど。

【Mind】CSVライブラリを書いてみる(つくりはじめた…)

PC-9801時代にちょっとかじった日本語プログラミング言語Mindというのがあります。
すべて日本語で記述可能なForthの流れを汲むスタック型の言語です。
Forthは触ったことないんですけど、書式が日本語の語順と合うのです。
UNIX版はフリーになっていて、macでもインストールしたら動いたのでちょっと触ってみようと思いつつ….放置気味でした…(ソースの日本語はEUC-JPにする必要がありますが)
今日思い立って、CSVのライブラリがあれば色々とツール作成に使えるかなぁというわけで作ってみました。
まだ試作品でちょっとインターフェースはダサいのでMindの素振りを再開したというところですど..
こちらのスクリプツ・ラボさんのページに日本語プログラミング言語 Mindがあります。興味のある方はインストールしてみてネ。

http://www.scripts-lab.co.jp/mind/whatsmind.html
さて、CSVライブラリですが…
項目数が256までだとか、分割後の配列オーバーフロー検査してないだとか、まぁ作ってみただけですけど、ソースを晒しちゃいますw ついでに、テストプログラムもね。
コンパイルするときは csvライブラリをfileライブラリとリンクしてコンパイルして、つぎにテストフログラムをCSVライブラリとリンクしてコンパイルする必要があります。
まずは、テストプログラムから…
同じディレクトリに test.csv というCSVテキストファイル(1行)を用意しておいてください

※
※ CSVライブラリのテスト
※
メインとは
  "test.csv"で CSVファイルの読み出し準備して 
  CSVファイルから一行読みだし
  CSVデータ(1個目)を 表示して "/"を 表示し
  CSVデータ(2個目)を 表示して "/"を 表示し
  CSVデータ(3個目)を 表示して "/"を 表示し
  CSVデータ(4個目)を 表示して "/"を 表示し
  改行し
  CSVファイルをクローズする。

つぎにCSVライブラリです。
ソースコードというより仕様書みたいですよね。ちょっと冗長なとこはあるけど。

※
※ CSVライブラリ
※ 2012/1/28 kuni
※
CSVファイルは ファイル。
CSVデータは 256個の 文字列実体。
CSVファイルの読み出し準備とは (文字列->・)
ファイル名は 文字列
ファイル名に 入れ
ファイル名で CSVファイルを オープンして
エラー? ならば
  「!! ファイルのオープンに失敗しました !!:」と ファイル名を 合成して 重大エラーする
   表示し 実行終わり
つぎに
CSVデータを クリアする。
CSV文字列を分解とは (文字列->・)
分解元文字列は 文字列実体
発見位置は 変数
カウンタは 変数
分解元文字列に 入れ
カウンタに 1を 入れ
ここから
','で 分解元文字列から 一文字検索し 発見位置に 入れ
発見位置が ゼロ以外 ならば
  発見位置で 分解元文字列を 分断して 
  CSVデータ(カウンタ)へ 入れ
  カウンタを 一つ増加し
さもなければ
  分解元文字列の 文字数が ゼロ以外 ならば
    分解元文字列を CSVデータ(カウンタ)へ 入れ
  つぎに
  打ち切り
つぎに
繰り返す。
CSVファイルから一行読みだしとは (文字列->・)
ワーク文字列は 文字列
ここから
  CSVファイルから 一行読み出し ワーク文字列に 入れ
  データ終わり? ならば 
    打ち切り
つぎに
ワーク文字列で CSV文字列を分解し
繰り返す。
CSVファイルをクローズとは
  CSVファイルを クローズする。

WIndows7 RC on eeePC 900A

Windows7RC
Windows7 RC版をeeePC 900Aにインストールしました。
インストール自体は何事もなく終了。
タッチパッドドライバーを入れて、外付けマウスつないだままリブートしたらマウスカーソルが出なくなりまして。。。。
マウスはずしてリブートしたら問題なし。
ブート後マウス接続してももんだいなし。。。。ううむ???
とりあえずいろいろ使ってみます。
安定してるとええな

iTunesをKillして…..

我が家ではVH7PCとゆーSOTECのミニコンポをThinkpad T21につなぎっぱなにしています。
http://park14.wakwak.com/~kuni/comp/VH7-PC.htm
こいつはなんとUSB付のステレオっていういかしたやつです。
USB音源として動作するのはもちろん、有志の方々の作られた神ソフトを使うと、ラジオを選局して録音できちゃうという優れものなんです。
(http://www.geocities.co.jp/Playtown/7950/vh7pc/vh7pcctrl.htm)
最近、サボっていたNHKの語学講座の録音を再開したわけですが、問題がありまして…..
録音とiTunesがかち合うと録音ソフトがハングすることが多いのです。
たまに録音時間を忘れてiTunesでインターネットラジオとか聞いていると、語学講座が録音されてなくてがっかりしたりするんですわい。
あと、Thinkpad T21くんは諸般の都合により、朝方毎日リブートしている訳なんですが、そのときもiTunesがあがっているとリブート途中でハングします。
で、さっき思いついて 定時にiTunesをKillするようにしました。(もっと早くやれよう…)
(1)準備するもの
コマンドラインからプロセスをkillするツールが欲しかったので探してみたら、MS謹製のPsKillってのががありました。(買収した企業のもの????)
http://technet.microsoft.com/en-us/sysinternals/bb896683.aspx
(2)仕込み
朝の定時リブートのためにMutifunctionAlarmを使っていたので、以下の「DOSコマンド」(w を、録音時間のちょっと前と、リブートのちょっと前に仕込みました。


pskill iTunes

これで幸せになれそうです。