軽快なWindows向け音楽プレーヤー、「Sound Player Chiyomaru」

私はまぁ音楽を狂ったように聴いている関係で、めちゃくちゃたくさんの音声ファイルをローカルで管理している。
音楽聴くぞーってときはfoobar2000をずっと使っている。 これがまぁめっちゃよくて、音楽ライブラリの曲数が多くても重たくないし最高である。

ただ、音楽以外でライブラリに入れたくない音声ファイルも、まぁ、あるわけです。それはもう色々と。
なんかのボイスとか、ああいうのとか!そういうのとか!色々!ね!
というわけで、そんなやつは別の再生ソフトで聴いていて、 Windows 10のころまではSound Player Lilith for Unicode OSs (ulilith)をずっと使っていた。

ulilithも大変優れたソフトでお気に入りだったんだけど、Windows 11になってから自分の環境だと上手く動かなくなってしまった。
それ以降いくつかのソフトを試してはみたもののあまりしっくり来なくて、そうこうしているうちに大サブスク時代が到来。
音楽再生ソフトなんてまぁもうあんまし使わないでしょうし、ただ再生するだけならデフォルトのメディアプレーヤーで十分でしょう。

でも安心!今は大AI時代でもあるので、AIの超テクノロジーで、もしかしたら自分で作れちまうんじゃあないか。
ということで、本当に出来上がってしまったのがSound Player Chiyomaru (S:P Chiyomaru)である。

ダウンロードはこちらから。

なおここの文章は100%AIフリー!オーガニックな人間の手で書かれています。添削すらしていない。愚かだね。

何ができるのか

  • MP3 / FLAC / WAV / AAC (M4A) / WMAの再生
  • 再生モード: 通常 / 1 曲リピート / 全曲リピート / ランダム / 1Shot
  • 出力: WASAPI 共有モード / 排他モード、出力デバイスの選択
  • ReplayGain(トラック / アルバム)対応
  • プレイリスト: M3U8 / M3U / PLS の読み込み。ドラッグ & ドロップでの追加と並べ替え、元に戻す・やり直し、並べ替え、シャッフル、M3U8 での保存
  • アルバムアートワークなどのタグの表示
  • ミニモード、常に手前に表示
  • 謎の配色バリエーション
  • ファイルの関連付けへの対応

再生回りはその辺の再生ソフトができることとあまり変わらない。
一応WASAPI排他モードも使えて、いわゆるビットパーフェクト再生らしいこともできている…はず。
ビットパーフェクトってなんだよって感じだけど、できるからって言われたので、そうですかお願いします、となっている。
ただそっちの使い方はあくまでオマケで、デフォルトは共有モードになっている。
ビットパーフェクトを目指すならReplayGainは要らないが、使えるようにはしている。ただ、イコライザはつけていない。私が使わないので。

再生で変わったところとしてはプレイリスト上の曲を右クリックして「次にこの曲から再生」ができる。
予約再生とかそういう感じの機能。今の曲が再生し終わると、次に指定した曲から再生される。
見た目が変わったりもしないので手抜き感がすごいけど、欲しかったからつけた。

いわゆるライブラリ機能を持たせていない。冒頭に書いた通りおれはfoobar2000を使うからだ。
その代わりかは微妙だけどm3uのプレイリストは読める。 画面上のプレイリストもそこそこ色々できるようにはしているつもり。
いわゆるシャッフル再生はプレイリスト側のシャッフルを使うのがちょっと判りづらいかもしれない。
(再生モードのランダムはプレイリスト内ですでに再生された曲も次回以降抽選対象となるので、 プレイリストをシャッフルして通常再生すればいわゆるシャッフル再生となる)

何が良いのか

起動がたぶんおそらく速い。ついでに軽い。ただし私の環境で使っていた限りでは…。
自分のPCのスペックは世の中的には高い方な気がするので、ほかの環境だとどうなのかはよくわからない。

仕様のドキュメントを作っているときに、やっぱ速くて軽いのが正義っしょーって言っていたら、
起動0.5 秒以内、メモリ50MB以内を目標と提示してきたので、「ええやん」と言いました。

最終的にメモリは100MBまで緩和することとなった(ほとんど超えることはないはず)が、
ファイルをダブルクリックしてから再生が始まるまでの速度に関してはかなりいい感じだと思っている。

すぐ聴けて、画面端ににずっと置いておいても気にならないっていうのが一番欲しかったので、 そこに関してはもう大満足である。

技術的なこと

Windowsデスクトップアプリなので、C#が固いよねーと思っていたが、予想通りC#で、WinFormsを提案してきた。
C#大好きなので最高だね。

でもNativeAOT使えるしAvaloniaがいーんじゃない?と。
こちらから提示してあーだこーだ議論したり色々計測したりしてもらった結果、最終的にAvalonia+NativeAOTに決めた。

仕様を決めるところは一番拘りたいところなので色々と言ったが、いざコーディングの段階に入ったらもうほぼすべてお任せである。
細かい文言やXAMLの調整だけちょっと自分でやったが、それは単にトークンがもったいないなって思っただけだ。

一応コードはふんふんと読んではみたものの、再生周りはC#で音声扱うなら定番のNAudioにお任せしていて、
それ以外はすごく泥臭い処理で、読んでいてめちゃくちゃ面白いものでもない。

逆にこういう面倒なのも全部書いてくれるのがAIくんの良いところである。仕事でこういうのを書いていたことを思い出すと逆にぞっとするまである。

最初は曲情報のタグを読み取る処理も外部のライブラリを採用していたけど、
読むだけ(編集機能を付けていない)だし自前で書けるんじゃない?って訊いてみたら、
自前で書いた方が速いし軽いって言ってきた。速くて軽いのは嬉しいことなので、(AIの)自前実装である。
自分が書かなくていいなら面倒なことも頼み放題だ。

コミットコマンド1つまで頼むのどうなの?って前は思ってたけど、
結局コミットメッセージ考えるのが一番面倒まであるので、もう任せた方が良いと思っている。

誰かに使わせるライブラリとかならともかく、GUIアプリケーションなら、結局見えている最終の手触りが問題なければよいでしょう、
ということで、そこに関してはコメントはしまくっている。
おれはなんにもすごくない。Claude Opus 5.5がえらい。AIぱわーに酔っちゃうのもわかる気がする。

ということで、とっても自分好みのソフトになりました。やったね。

名前のこと

闇属性、戦士族、ATK1600のリンク2のモンスター、あるいは闇属性、戦士族、ATK 800、DEF 1000のレベル2 効果モンスター。
SoundPlayerってS:Pだよなぁってことで。なので漢字で書くなら小夜丸だ。