今年も終わり
あと1時間ほどで、2007年も終わりですね。
今年もいろいろありました。
アンプをたくさん作ったり、touchをいじりまくったり。
まあ、楽しかったです。
それからアプリ作りで、プログラミングの知識が上達したんじゃないかと。
特に、Objective-Cの深いところとかw
最近だけ振り返ってもだめですが、実はまだやり残していることが。
あの結局部品だけ買って完成を見る事の無かったアンプ...
USB端子やらアナログスイッチを買ったやつです。
これはまた来年やりましょうか。
過去の記事を見てもそのくらいですかね。
よいお年を。
今年もいろいろありました。
アンプをたくさん作ったり、touchをいじりまくったり。
まあ、楽しかったです。
それからアプリ作りで、プログラミングの知識が上達したんじゃないかと。
特に、Objective-Cの深いところとかw
最近だけ振り返ってもだめですが、実はまだやり残していることが。
あの結局部品だけ買って完成を見る事の無かったアンプ...
USB端子やらアナログスイッチを買ったやつです。
これはまた来年やりましょうか。
過去の記事を見てもそのくらいですかね。
よいお年を。
libid3tagを使って歌詞を取得
id3tagライブラリを使って、mp3なんかから歌詞を取得する方法。
丁寧に解説されているのでこれを読めばおk。
[mad-dev] libid3tag demystified
おおまかな手順としては、
1. ファイルを開く。
2. ファイルからid3タグを取り出す。
3. タグからフレーム(TPE2:アーティスト、USLT:歌詞など)を取り出す
4. フレームからフィールド(文字列や整数、バイナリ)など)を取り出す。
のような感じ。
iTunes で埋め込まれる歌詞はUSLTフレームにあります。
フィールドのタイプはframetype.cで宣言されています。
続きにサンプル。
解説を読む前に作ったので組み方が適当ですが。
丁寧に解説されているのでこれを読めばおk。
[mad-dev] libid3tag demystified
おおまかな手順としては、
1. ファイルを開く。
2. ファイルからid3タグを取り出す。
3. タグからフレーム(TPE2:アーティスト、USLT:歌詞など)を取り出す
4. フレームからフィールド(文字列や整数、バイナリ)など)を取り出す。
のような感じ。
iTunes で埋め込まれる歌詞はUSLTフレームにあります。
フィールドのタイプはframetype.cで宣言されています。
続きにサンプル。
解説を読む前に作ったので組み方が適当ですが。
謎のフォント Apple Symbols
Leopard? に入っているAppleSymbolsフォントにこんなグリフが含まれていました。
ん?どこかで見たとことあるぞ。

これを使えばアイコンなんかが簡単にできますね。
他にも、Mac関連のマークなんかも含まれているようです。
これを表示するにはことえりメニューから文字パレットを開いて、表示をグリフにします。
ん?どこかで見たとことあるぞ。

これを使えばアイコンなんかが簡単にできますね。
他にも、Mac関連のマークなんかも含まれているようです。
これを表示するにはことえりメニューから文字パレットを開いて、表示をグリフにします。
UIKit に NSTask は無い...
昨日からいろいろと悔しいので、mpeg4の歌詞を読みとる方法を考えていました。
結論から言うと出来ました。
AtomicParsleyをいじって歌詞のみを出すものに変更して、それをLyricsからNSTaskで実行と...
それまでは行ったんですが、コンパイルしてみるとBus error...
どうもNSTaskのallocが出来ていないようです。
これはもしやと思いヘッダを見てみるとNSTaskクラスが無い...
えー...
あれかなり便利なんですが何で無いんでしょう...
まあ、iPhoneにはUNIXコマンドが標準では入っていないので無理もありませんが。
これはどうしようも無いのでCのpopenを使いました。
popenとpclose
この辺を参考にこんなコード。
iTunesで埋め込まれたものは改行コードが ¥r なので ¥n に変換するのを忘れずに。
そのままだと改行されません。
あとはコントローラを追加すればとりあえずLyricsは完成かな。
それから、メモリ管理。
それから、いちいち終了しないようにせねば。
結論から言うと出来ました。
AtomicParsleyをいじって歌詞のみを出すものに変更して、それをLyricsからNSTaskで実行と...
それまでは行ったんですが、コンパイルしてみるとBus error...
どうもNSTaskのallocが出来ていないようです。
これはもしやと思いヘッダを見てみるとNSTaskクラスが無い...
えー...
あれかなり便利なんですが何で無いんでしょう...
まあ、iPhoneにはUNIXコマンドが標準では入っていないので無理もありませんが。
これはどうしようも無いのでCのpopenを使いました。
popenとpclose
この辺を参考にこんなコード。
const char* argvv = "/getLyrics /test.m4a";
int MAXBUFSIZE = 10000*2;
FILE* pipe;
//出力バッファを準備
char* buffer = malloc(sizeof(char)*MAXBUFSIZE +1);
int readNum = MAXBUFSIZE;
memset(buffer, 0, sizeof(buffer));
//パイプを開く
pipe = popen(argvv, "r");
if (pipe == NULL) {
return -1;
}
//stdoutから読み込み
readNum = fread(buffer, sizeof(char), MAXBUFSIZE, pipe);
while (readNum > 0) {
readNum = fread(buffer, sizeof(char), MAXBUFSIZE, pipe);
}
//いらんものを解放
pclose(pipe);
printf("%sn", buffer);
free(buffer);
iTunesで埋め込まれたものは改行コードが ¥r なので ¥n に変換するのを忘れずに。
そのままだと改行されません。
あとはコントローラを追加すればとりあえずLyricsは完成かな。
それから、メモリ管理。
それから、いちいち終了しないようにせねば。

