今日は、プラグイン開発について書いてみる。といっても、まだMusicBee本体を使い始めたばかりであるし、APIのドキュメント、ソースも熟知しているわけでもないので、基本的な部分だけである。
開発環境は、VirtualBoxにWindows 7 HomePremium 64bitをインストールし、そこへVisualStudio Community 2013をインストールして開発環境とした。仮想環境を使うのはfoobar2000時代からのことで、再生に使うメインのアプリを問題なく動かしながら、バグを出しても影響を出さないこと、最悪、OSをフリーズさせるようなバグを出しても日常作業に問題を出さないためである。
ホストOSがWindows8.1なので、Hyper-Vも使えるのであるが、ゲストOSがWindows7 HomePremiumなので、サウンドカードの問題から、VirtualBoxとなった。foobar2000はサウンド出力にnullデバイスを指定できるので、問題ないのであるが、MusicBeeはサウンドカードがない環境では動作しないようである。
私が最初に作ったプラグインの機能は2つである。再生が終わったトラックの情報を自分の管理しているWebサーバに送信すること、iTunesからのインポートに失敗したり、リッピングのやり直し時のファイルの置換に失敗して再生回数がリセットされた場合に、手動で再生回数を設定することである。
前者はplayerのplaycountが変化した、というイベントが用意されているので、そのタイミングで、送信することにした。HTTP送信はC#なので簡単である。iPodからのデータの取得はイベントが分からなかったので、同期が正常に完了した場合に、対象のトラックを選択し、右クリックメニューから、サーバへ送信という手順を取り、同様の処理が行われるしようとした。自分だけが使うので、とりあえずの実装として、この仕様にした。今後、調査してから仕様を変更したい。
再生回数の変更は英語の開発Wikiにサンプルソースがあり、2行で、終わる。対象ファイルのタグの更新APIを呼び出し、アップデートのAPIを更新するだけである。ただし、foobar2000のトラックのrefresh()と違い、表示がうまく更新されない。トラックの編集でプロパティを見ると値は更新されており、画面も更新されるのであるが、リアルタイムで更新されないので、こちらも調査中である。
ソースは別途アップすることとして、本日はここまでとしておく。
コメント