ugnagブログ

たいした内容はありません。思いつきで書いているだけ。
開発日記がメインかな。

<< 現在進行中 | main | ちょっとしたメモ書き >>

MP3プレーヤー

やっと音まではでるようになった。
とは言ってもまだ完成はしていないが。


いやー、ここまで結構大変だった。

使用したライブラリ(タグ取得、サウンド再生等)を直接使うと、
変更した場合の修正が大きいため、違いを吸収するためのラッパークラス的なものをいくつか作ったのだが、これに結構時間がかかった。

さらに、タグ情報だけでも、ファイルによって「アルバムアーティスト」があったりなかったり、「トラックアーティスト」も同様だったり、これだとリストで表示したときに見難いし、ソートもできない。

また、タイトルやアルバム名、アーティスト名が大文字だったり小文字だったりもしている。

これらを統一表示させるための工夫も必要となり、そのあたりでも時間をくってしまった。


次に時間がかかったのは、ボタンをアイコン表示にしようとしたこと。
アイコンだと、
・通常状態
・クリック時
・不使用時
と画像が3種類必要となる。
画像ソフトで予め3種類用意しようとしたが、途中で
「アイコンくらい、起動時にプログラムで修正してしまえばいいのでは?」
とか思ってしまったもので、あれこれと調べて時間がかかった。
できることはわかって、後回しにすることにしたのだが。。。

それから、設定ファイル。これもあれこれ回って結局Popertiesクラスを使うことで落ち着いた。


わけがわからなかったのがサウンド再生で使ったBasicPlayer。
シークすると、それ以降のプログレスイベントのときに、現在位置がおかしくなるという事象が発生。
まあ、結局はラッパーにしたクラスで問題があったのだが、
これが一概にこちらが悪いともいいきれない。
イベントのコールバックの引数で曲情報が渡さえれてくるのだが、
それを使ったためにおかしくなったのだった。
イベントの最初に送られてくる情報を保存しておき、プログレスイベントではそれを使わないといけないようだ。
だけど、渡してくるんだから、そっちを使うのが人情というものだろうと思ったりもする。

あと困ったのが、ボリュームの問題。
最初、ボリュームが9(0から100まで)でそこそこの大きさになる。
普通に使うレベルを考えると0から12くらいがいいところ。
さらに、そんな感じだとメモリを1つ動かすのも微調整が必要。

うーん、最初は動きが大きく、終盤で小さくなるようなことはできないか?
考えたら、ありました。対数。
対数の計算なんて、すっかり忘れている。

そこで、またあれこれと実験をして、ようやく自然な感じになりました。
ボリューム用のスライダーでは普通に0から100までの値を設定し、
スライダーの変更時には、スライダーの値からライブラリの引数用の値を計算し、設定する。
その計算はラッパークラスで行った。

なんだかんだと、細々したところで結構時間がかかっています。
プログラム・開発(MP3用ツール) | comments (0) | -

Comments

Comment Form

本文に書いて下さい
本文にh抜きで書いて下さい