ただのにっき
2000-12-21(木) [長年日記]
■ Rio500
先日競り落としたRio500が届いた。実はネットオークションは初めてだったけど、相手が手慣れていたおかげでスムーズなやりとりができた。病みつきになりそう(嘘)。さすがに10ヶ月近く使われていただけあって年期が入っている感じだけど、ソリッドステート・オーディオは可動部分がないから劣化は気にしないでいい。さっそく本体だけ取り出して、マシンとケーブルで接続。Windows専用ソフトなんかに用はない(笑)。ちなみに、受け入れ準備は完了していて、/etc/rc.d/rc.local
には以下の3行が追加済みである。
/sbin/insmod usbcore /sbin/insmod usb-uhci /sbin/insmod rio500
■ さて、dmesg
で下記のようなメッセージが出ているのを確認。
usb.c: USB new device connect, assigned device number 2 rio500.c: USB Rio found at address 2
■ よしよし。ちゃんと認識してるな。ためしに、rio_add_song
コマンドを使って1曲転送してみる。その前に、/dev/usb/rio500
への書き込み権限を与えておくのを忘れずに。デフォルトではrootしか使えないようになっている。ちゃんと設定できれば、mp3ファイルが転送され、dmesg
にはこんな風なメッセージが加わる。
rio500.c: Rio opened. rio500.c: Rio closed.
■ ケーブルを引っこ抜いたり、Rio500の電源を落とすと、こんな感じになる。
usb.c: USB disconnect on device 2 rio500.c: USB Rio disconnected.
■ ほほほ。完璧ざます。このあと、Rio300で使っていた32MBスマートメディアを認識させたり(なぜかデジカメで再フォーマットしてからじゃないと認識せず)、rio_del_song
を使ったあとはなぜか追加ができなくなったり(rio_format
しちゃうことに)、多少悩んだけど、実用上問題ないことを確認。じゃあ、通勤スペシャルを自動生成するコマンドを作っておきましょう。Rio300では全部Rubyで書いてたんだけど、こんどはできるだけ作らないアプローチで。
#!/bin/bash rio_format --both --automatic rio_add_folder 0 rio_add_folder -x 1 find ~/media/audio/mp3/jazz -name '*.mp3' -size +500k | random | head -50 | xargs rio_add_song -a
■ フォーマットして(rio_format
)、内蔵・拡張メモリにフォルダを1個ずつ作って(rio_add_folder
)、あとは手持ちのJazzの曲のうち、500KB以上のもの(find
)をランダム(random
)に50曲(head
)抜き出して、rio_add_song
のパラメタに渡す(xargs
)。内蔵・拡張関係なしに追加してくれる-a
オプションが便利でいいな。ちなみにrandom
は、Rubyで適当にでっちあげたランダム化フィルタで、こんな感じ。
#!/usr/bin/ruby list = [] while l = gets list << l end srand begin while list.length != 0 print list.delete_at( rand( list.length ) ) end rescue end
■ 本当は、せっかくAPI化されているrio500の拡張モジュールを作って、全部Rubyでやるのがカッコイイんだけど。ま、将来の課題ってことにしておこう(←こういうことを言ってるうちはやらないんだよ、コイツは)。それにしても、速くていいな、USB。