Music Player部分は、昨年のNucleo版と同じようにLVGLのデモをベースとしていますが、次の点がNucleo版やデモとは異なります。
- WADファイル内のMIDIデータを元に演奏している訳ではなく、SDカードに保存されているFLAC形式の音楽ファイルを再生している。
- 44.1Kのデータを1/3に間引いたものをFFTしてスペクトラム表示を行っている。
- FLACファイルに含まれるメタデータからタイトルとアーティスト情報を取り出して表示している。
FLACのデコーダとしては本家のデコーダが有名ですが、1ファイルだけで作られているdr_libsというデコーダ があったので、これを使ってみました。
DualSenseでのボタン操作もできます。入力操作対象のボタンをフォーカス表示したかったのですが、Image Button Widget を使った丸ボタンでは、outlineを描画してしまうと、ボタン周囲に四角で表示されてしまいます。丸ボタンの周囲を囲ったImageを新たに作成すれば良いのですが、デモ画像のデータには元データとして使えるPNG形式のようなファイルが用意されていないので、代わりに少し暗く表示することで操作対象ボタンを表示することにしました。上図の例では、PLAYボタンが暗めに表示されており、下図の例ではFFWボタンが暗めに表示されています。
そして、次の図ではホームボタンの周囲に枠線が引かれており操作対象であることを示しています。
また、タイトルやアーティスト名が長い場合には、次の2枚の画像に示すようにスクロール表示する機能を入れてあります。