ラズベリーパイ(pidora)でメディアサーバする、そして心地良い目覚めへラズベリーパイで無線LANアクセスポイントを作り、ラズベリーパイで無線LANブリッジを作ったことにより、愛用のミニコンポ「DENONのRCD-N9」を正しく宅内LANに「有線」で接続することができた。インターネット─[モデム]─宅内LAN─[無線アクセスポイント(ブリッジ)]...無線LAN...[無線ブリッジ(コンバータ)]─直結LAN─[ミニコンポ]このような構成にした動機は、RCD-N9の無線LAN接続機能が「どタコ」なことにある。無線経由でflac等を再生中、他の無線トラフィックが増えると、接続が切断され、音楽が切れるのだ。切れると、再接続まで時間がかかるし、曲の再生は最初からになってしまう。それが頻繁に発生する。実に「音楽が途切れる」という事態に対しては、恐ろしく高いレベルの腹立たしさを感じさせられるものである。仮にも高品質な音楽の再生を謳う機器においては「極力避けるべき事態」ではないのか。無線LANは不安定だから仕方ない、などということは断じてない。TCPという仕組み上、再生が止まることはあっても切れることはあり得ない。実際、動画サイトで切れるなどという事態に遭遇したことはないはずだ。tcpdumpでパケットの様子を調べた限りでは、RCD-N9側のTCPスイートに問題があるようで、その点ではRCD-N9は疑うことのない超ド級のクッソプロダクトなのだが、それ以外の点は十分に及第点なので、その点はあきらめて、ラズベリーパイを噛ますことでフォローすることにしたのである。具体的にはどうするかというと、上述の通りRCD-N9とラズベリーパイ間を有線LANで直結とし、通信の安定性の低い無線LANの通信をLinuxのNFS接続で保障してやるのである。ラズベリーパイ上にDLNAサーバを配置するのである。172.xx.xx.0/24(ro)ラズベリーパイ側でマウントするだけ。/mnt/mediatomb/実用上は、起動時に自動マウントするよう、/etc/fstabに以下のエントリを加えておくことになる。0NFSマウントができたら、DLNAサーバであるMediaTombを導入する。SERVER機能で、flacファイル等を選択、曲を再生できるようになる。これにて、ハイパーミッドナイトサーバ(オイラは寝しなに音楽を聴くので)の完成である。オイラは起き抜けにも音楽を聴くのだが、それにRCD-N9のアラーム機能を使っている。開始時刻を6:00に設定、入力ソースにはCDを選択、寝る前に好みのCDをトレイにセットする。6:40頃に気分よく起き出すのだ。CDのセットが面倒くさい。毎日のアラームをセットすると休みの日にも流れてしまう(気づかないが)。CDの長さによって、起き出す時刻に曲が終わってしまったりする。仕方ないといえば、仕方ないが、そこをサッサとあきらめたりしないのがエンジニアである。インターネットラジオ機能で、自分専用に曲をストリーミング配信することで、上記をまとめて解決してしまうのである。ギネス更新(直線距離10cm以下)という偉業達成の瞬間ではないかと思う。ストリーミング配信のアプリにはicecastを使う。例によって、ググると大量のサイトが引っかかるのだが、手順は書いてあるものの、その意図がよくわからない。icecastは、フロントエンドサービスを行うアプリ。ウェブサーバとして振る舞い、インターネットラジオ聴取クライアントに曲を配信する。自らは曲を扱わず、インターネットラジオ配信クライアント(?)から曲の提供を受ける。icesは、インターネットラジオ配信クライアント。icecastにアクセスし、icecastが配信する曲を提供する。んが、icesはバージョン2からOggVorbis形式の配信しか対応していないようで、mp3形式では配信できない。古いicesはできるようだが、そんなものを使うべきではないだろう。ezstreamは、icesと同じく、インターネットラジオ配信クライアント。icecastにアクセスし、icecastが配信する曲を提供する。こっちはmp3形式での配信に対応している。上記はどれも、Icecastスイートとしてxiphという開発コミュニティで扱っているようで、ここはOggVorbisやflacの開発主体でもあるようだ。配信形式によって、アプリの使い分けが必要なことや、配信形式が特定の形式に限定されている意味がよくわからんが、なにせflacでの配信はできず、RCD-N9も対応していないので、mp3形式での配信が妥協点である。いうわけで、icecastの導入、設定である。icecastとりあえず、これだけでhttp://xxxpi:8000/にアクセスすると結果が返るようになる。次は、ezstreamの導入、設定である。/etc/ezstream.xmlmp3ファイルを羅列したプレイリストファイルを生成し、ezstreamの設定ファイルに指定、ezstreamを起動する。この状態でhttp://xxxpi:8000/にアクセスすると演奏中の状態が確認できる。インターネットラジオ聴取クライアントにhttp://xxxpi:8000/streamを指定すれば、とりあえず音楽を聴くことができる。オイラのライブラリはflacで構築しているのだ。百歩譲ってmp3配信は許容するが、ライブラリをmp3化するのは許容できない。二重に持つのもイヤだ。そこでezstreamの「リ・エンコーディング」機能を使う。/etc/ezstream.xml最初からflacのサンプル記述があるので、lameを噛ます指定を加えるだけだ。リアルタイムエンコーディングだから、配信中のCPU使用率はハネ上がるが、特に音飛びが起こるほどでもなく、問題はない。Never!」もしくは「イマ・ヌラネバー!」が流れるようにしたい。要するに「あと1分!」のタイミングで「あと1分!」のBGMが流れるようにするというわけだ。いうわけで作ったのがこのスクリプト。指定されたディレクトリのflac群から、再生時間が40分未満になるように適当に間引き、最後に「あと1分!」の曲を追加し、再生時間が50分ちょうどになるよう、頭に無音時間を追加したプレイリストを作成する。cron機能により、5:50分からストリーミング再生を開始。/etc/ezstream.xmlRCD-N9の側ではアラーム機能の開始時刻を5:50に設定、入力ソースにはインターネットラジオのオレオレトリーミングチャンネルを選択。いうわけで、夢の起床環境へまた一歩近づいた。これにて、ハイパーモーニングサーバの完成......といいたいところだが、実は、まだまだ実現したい機能があるのであった。それはまたそのうちに。1.8.7-p374。