今回は、多くの実装を行った



スペクトラム表示

まずは再生中の音をリアルタイムで確認できるスペクトラム表示を追加した
現在は25バンド表示で、解析方式はMaiMaiとCAVACOREの2種類を切り替えられるようにしている

Spectrum

このスペクトラムは、単純に再生状態を見て適当なアニメーションを動かしているわけではなく実際に再生経路を通っているPCMデータを解析して表示している

現在対応しているのは、MaiMai Music、MPD Renderer、CD DIRECT、Spotifyの4系統
それぞれの再生経路からPCMを解析用に分岐させ、共通のSpectrumエンジンへ送る仕組みにした
重要なのは、スペクトラム表示のために再生する音そのものは加工していないこと

サンプリングレート変換、音量変更、ビット深度変換などは行わず解析用にPCMを横から参照するだけにしている
Spectrum側への転送もノンブロッキングとしているので、Spectrumが停止しても音楽再生側はそのまま継続する設計にした

表示は、音があるときはバーが動き完全な無音部分では下側の緑色のラインだけが残り再生を停止するとSpectrum自体も消える
こういう動きのある表示が入るとオーディオ機器っぽさがかなり増した気がする

Music Libraryの拡張

Music Libraryまわりもかなり手を入れた

LIBRARY

ネットワーク共有フォルダだけでなくUSB接続した外部ストレージもMusic Libraryとして登録できるようにした

ネットワークストレージとUSBストレージは同時に利用できるためNASの音源とUSB HDDやUSBメモリ内の音源を1つのMusic Libraryとして扱える

内部では音源そのものをコピーして管理するのではなく、それぞれの保存場所をライブラリのソースとして管理している
そのため大量の音源があってもMaiMai Audio Linux側へ音楽ファイルを複製する必要はない

通常のライブラリ更新では追加や変更された音源を確認し必要な場合には「メタデータを全再読込」からライブラリ情報を作り直すこともできるようにした
NASだけに依存せずUSBストレージを直接つないで単体の音楽プレーヤーとして使うこともできるようになったので、用途はかなり広がったと思う

CDプレーヤーの機能拡張

CDプレーヤーも機能を追加した
普段はシンプルなプレーヤー画面だけを表示しているが、2曲目以降を直接選びたい場合には▼をクリックするとCDのトラック一覧が表示されるようにした

maimai_cd_00

もちろん曲をクリックすれば、そのトラックから直接再生が開始される

CD

CD再生そのものは、一般的なデスクトップ用CDプレーヤーを動かしているわけではない
MaiMai Audio LinuxではCDから読み出したPCMをバッファリングし、そのままALSAを経由してDirettaへ送る専用の再生経路を使っている

今回追加した曲一覧もこのCD DIRECTの再生制御と連動しているため一覧から選択したトラック番号をそのままCD再生側へ渡して再生を開始する仕組みになっている

普段は曲一覧を閉じておけるので、CD PLAYERのシンプルな見た目を維持しながら必要なときだけアルバム全体を操作できるようにした

CPU設定とSystem Activity

省電力化のためのCPU設定も追加した
これはBIOSの設定を書き換えるものではなくLinux側が持っているCPUの動作制御機能を利用している

CPUの動作方針をPOWER SAVE、BALANCED、PERFORMANCEから選択できるほかCPUが継続的に使用できる電力上限についてもいくつかのプリセットから選べるようにした
オーディオ用Linuxだからといって常にCPUを最大性能で動かす必要はないので、用途や発熱に合わせて調整できるようにした形になる

そして設定を変えるだけでは実際に何が起きているのか分かりにくいので、System Activityも追加した

CPU設定とSYSTEMACTIVITY

ここではCPU負荷、CPUクロック、CPU温度、消費電力などをリアルタイムで確認できる
さらに稼働サービス数、内部サービス数、サービスが使用しているメモリ量、タスク数、リアルタイムカーネルの状態などもまとめて表示するようにした

例えばBALANCEDとPOWER SAVEで実際のクロックや消費電力がどの程度変わったかをブラウザ上ですぐ比較できる
Linuxの設定値だけを並べるのではなく、「設定した結果、現在どう動いているのか」までGUIから確認できるようにしたかった部分でもある

かなりオーディオ機器らしくなってきた

今回の更新では、新しい再生方式を増やすというよりもこれまで作ってきた機能を実際に使いやすい形へまとめる作業が多かった

Spectrum、Music Library、CD PLAYER、CPU設定、System Activityとかなり色々な部分に手を入れた

最初はDirettaをLinuxから簡単に使えるようにすることが目的だったが、ここまで来ると単なるDiretta Host用Linuxというよりブラウザだけで操作できる一台のオーディオ機器にかなり近づいてきたと思う