結論
コンピレーション・アルバムに対して,以下のどちらかを実行する.
-
albumartist
とartist
を同じ名前にする - 設定
MY MUSIC
のCompilation Metadata Fields
にalbumartist
を追加する
詳細
以下のような現象に遭遇しました.
- アルバム一覧からあるアルバムを選択してアルバムの再生ボタンを押しても,アルバムの再生が始まらない
- アルバム一覧からあるアルバムをキューに追加しようとしても,キューに追加できない
- アーティスト一覧からあるアーティストを選択し,そのアーティストのアルバム一覧からあるアルバムを選択したあと,戻るボタンを押すとエラーが発生して戻れない
問題が発生するのは,複数人のアーティストの作品を集めたアルバム,いわゆるコンピレーションと呼ばれるものだと分かりました.コンピーレーションアルバムの場合
-
artist
が複数あるか,1つのartist
に複数人設定している -
artist
とalbumartist
が異なる
という状態になっています.iTunesなんかでもアーティスト毎にアルバムが分離してしまったりすることがあります.
問題を調査するため,SSHを有効にしてログインし,tail -F /var/log/volumio.log
でログを確認します.
2018-08-22T15:46:33.615Z - info: CorePlayQueue::addQueueItems
2018-08-22T15:46:33.615Z - info: Adding Item to queue: albums://<albumartist>/<album>
2018-08-22T15:46:33.616Z - info: Exploding uri albums://<albumartist>/<album> in service mpd
2018-08-22T15:46:33.620Z - info:
空のinfoログが出力され,何かに失敗していることがわかります.
直前のログから,ControllerMpd.prototype.explodeUri
が呼び出されていることがわかります.
if (compilation.indexOf(artistName)>-1) { //artist is in Various Artists array
var GetAlbum = "find album \""+safeAlbumName+"\"" + " albumartist \"" +safeArtistName+"\"";
}
else {
var GetAlbum = "find album \""+safeAlbumName+"\"" + " artist \"" +safeArtistName+"\"";
}
compilation
はMY MUSIC
のCompilation Metadata Fields
で設定した値が入っているようです.ヘルプを見ても何に使うのかさっぱりわからなかったのですが,ようやく理解できました.
compilation
に追加しておかないと,albumartist
とartist
が一致している場合以外では正しい結果が得られないのだと思います.実際,albumartist
とartist
を同じに設定すると,アルバムを再生できることをすでに確認していたのですが,これが原因のようです.
album://..
の仕様には改善の余地があると思われますが(例えば,albumartistやartistをクエリーパラメーターにするとか),設定もしくはタグの編集で回避可能だとわかりました.