そういえば、OpenBSD-cvs:ports/audio/mpdのShift-JIS対応パッチを置いておくのを忘れてた。これがないと困る人は多いはず。
このパッチを当てることで、
charsetを類推して変換後、
utf8でデータベースに登録するようになる。
インストール後に、
/etc/mpd.conf中のid3v1_encodingを"Japanese"に設定した後で、
# mpd --create-db
するなり、クライアント側からupdateするなりお好きなように。
Gauche付属のguess-jpを使わせてもらってます。感謝!
OpenBSD-cvs:ports/audio/gmpcの出来がなかなかいいので(ほんとうはAmarokでもいいのだけど、KDEの一部なのでビルド時間がもったいない)、
せっかくだからaudioscrobblerも試してみた。
音楽を聞いているマシンではOpenBSD-cvs:ports/audio/mpdとOpenBSD-cvs:ports/audio/mpdscribbleを走らせればOK。
あ。もちろんlast.fmのアカウントも必要だな。
あとはサーバを用意して、cgiを設置。
このページのメニューのcgiは、こんなの
最終アクセスから15分経過していたら拾ってくるようにしてみた。
あんまり向こうのAPI叩きすぎるのも悪いし。
やっつけ仕事なので、不具合があるかも。
Beta4から更新されたので、早速入れ替えてみたのだが、oggencのオプション-qを0より小さくするとセグる。
lib/psy.c:_vp_offset_and_mix()の
for(i=0;i<n;i++){
...
if((logmdct[i]-lastmdct[i]) > 20){
で-q=-1等のときnが256になって、
lastmdct[i]がオーバーランしているようだ。
lastmdctはlib/mapping0.cにて、
b->nblock+i*128;
となっていて(iはchannel数)、
nblockのサイズはlib/block.cにて128*channel数と決め打ちになっている。
しかたがないから、むりやりバッファを増やしてみた。
--- lib/block.c.orig Sun Nov 6 10:28:03 2005
+++ lib/block.c Sun Nov 6 10:28:16 2005
@@ -288,8 +288,8 @@
b->psy_g_look=_vp_global_look(vi);
/* added by aoyumi */
- b->nblock = _ogg_calloc((128*vi->channels), sizeof(*b->nblock));
- b->tblock = _ogg_calloc((128*vi->channels), sizeof(*b->tblock));
+ b->nblock = _ogg_calloc((128*vi->channels)*2, sizeof(*b->nblock));
+ b->tblock = _ogg_calloc((128*vi->channels)*2, sizeof(*b->tblock));
b->lownoise_compand_level = _ogg_calloc(vi->channels, sizeof(*b->lownoise_compand_level));
/* Initialize the envelope state storage */
これが期待されたエンコード結果を生成しているのかまったく自信がない(糞耳)。
とかなんとかいいながら、
-q=-2などとやって遊んでいるのだが(平均ビットレートは30〜40kb/sくらい)、
変な歪みもなくてよい。