トップ 最新

ただのにっき

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。