久々の開発日記です。前回のAlbus Box開発日記で「歌詞表示機能を作りたい」という話をしていましたが、形になってきたので開発日記を書いておこうと思います。

歌詞表示機能

今回の日記における変更点といえば歌詞表示機能くらいなんですが、今後Albus Boxの目玉となり得る重要な機能の一つです。まずはデモ動画を貼り付けておきますので、よかったらご覧ください。

画面上部の円の内部に歌詞が表示されているのがお分かりいただけるかと思います。

歌詞はJSON形式で保存しており、これを書き換えることで歌詞ファイルが利用可能です。なお、歌詞ファイルのファイル名は「<音源ファイルのMD5ハッシュ値>.lyrics」としています。ハッシュ値で歌詞ファイルと音声ファイルの対応関係を表す形をとっています。 現状、歌詞設定画面はまだ作っておりません。現状、歌詞ファイルを手動で用意する必要があります。歌詞設定画面ができたら次期バージョンver.0.2.0をリリースする予定です。

おそらく複数行に渡る歌詞を一度に表示することも可能かと思いますが、そのあたりはまだあまりテストしていません。動作確認をしながら、今後少しずつ調整していきます。
歌詞の表示切り替え時にフェードイン・フェードアウトする点に拘っています。曲のテンポによってフェードイン・フェードアウトの適切な速さが分かれるので難しいところですが、とりあえず仮に0.2秒で切り替えとしています。

6年前に公開したGamut Boxではウォークマンと共通のlrc形式で歌詞ファイルを読み書きしていましたが、拡張性の観点から今回は独自のフォーマットにしました。現在はまだ構想段階ですが、ゆくゆくは歌詞のフォントサイズを歌詞ごとに調整できるようにしたり、歌詞のフォントの色を歌詞ごとに変更できるようにしたり、フェードイン・フェードアウトの長さも歌詞ごとに調整できるようにしたいなと思っています。

パフォーマンス改善(?)

スペクトラムなどの表示項目の更新頻度とFFTアナライザの呼び出し回数を従来の半分にし、時間のかかる処理の実行回数を落とすことで改善を図りました。スペクトラムはあまり高頻度に更新しても殆ど変化がないので、少しくらい落としても影響はないと考えています。
しかし、(特にWindows版の場合)もともとCPU使用率等がそれほど高くないので、全体的なパフォーマンス向上と言えるほど劇的な改善は見られませんでした。Mac版は少しは良くなったかな?程度です。
今後もパフォーマンス改善を目指していきたいと思います。

M1 Macでの動作確認

Rosetta2を用いた動作確認を行いましたが、Apple Chip搭載機でも問題なく動作していることが確認できました。Rosetta2を通したM1 MacBook Airでのビルドも可能でした。

今後の予定

まずは歌詞設定画面を作ろうと思います。UIを工夫しなければならないので、下手したら歌詞表示機能自体の実装より難航するかもしれません。Albus Boxの小さい縦長ウィンドウにどうやって設定項目を収めるか迷っているところです。また何か進展があったら開発日記に書いていきます。