c-wrapper と id3lib で MP3 情報とる
かえる三十郎 - Rubyでmp3のタグをいじるには3の内容を Gauche に移植してみました。
(use gauche.uvector) (use c-wrapper) (define (main args) (c-load-library "libid3") (c-include "id3.h") (let* ((tag (ID3Tag_New)) (#f (ID3Tag_Link tag "test.mp3")) (frame (ID3Tag_FindFrameWithID tag ID3FID_ALBUM)) (field (ID3Frame_GetField frame ID3FN_TEXT)) (buf (make-u8vector 1024)) (size (ID3Field_GetASCII field (cast <c-ptr> buf) 1024)) (album (u8vector->string buf 0 (- size 1)))) (print album)))
これに、misc_support.hの内容に相当する関数を Scheme 側で付け足してやれば、差し当たって十分だね。
ライブラリ側で得たメモリの解放に付いてはまた後で調べる。