• RPi4版 v1.0系 不具合報告スレッド

    consumeモードの件はベータテスト時に話題になりました。

    https://www.symphonic-mpd.com/forum/topic/88/rpi4-edition-ベータテスト/454?_=1596544672115a

    Consumeボタンを押すと即時に設定が反映されます。(1秒程度)

    mpdの設定は(キュー、リピート、ボリュームなど)は、/var/lib/mpd/stateファイルに保存されます。

    consume設定もここに保存されるはずなのですが、切り替えただけではstateファイルに保存されません。
    mpdを正式な手順で停止しても保存されません。
    そのため、ラズパイを再起動するとconsume設定が元に戻ってしまうという現象が発生していました。

    consume設定が確実にstateファイルに保存されるのは、曲を再生したときです。
    そこで、MPD設定画面のOKボタンを押したときに、「設定の反映→再生→停止」のようなことをやっています。

    ある程度動作テストは重ねたのですが、今ひとつ確実性に欠ける実装だなと思っています。
    不具合リストに挙げ、いずれ改善に取り組みたいと思います。


    ちょっと手間ですが、
    「Consumeボタンで切り替え⇨設定画面を閉じる⇨曲を再生する」
    という手順を踏んでみてください。
    現在のところ、この手順なら切り替えた設定が確実に保存され、ラズパイ再起動後も設定が復元されるはずです。

  • @パパリウス さま
    丁重な解説ありがとうございました。
    そのようにしてまいります。

  • パパリウスさま、
    プラグインを作っていて気になる動作を見つけましたので報告いたします。

    Webブラウザで、NASにあるカンマ「,」を含む名前のフォルダーを開き、プラグインメニューから「UPDATE LIBRARY」を実行すると、エラーが表示されます。

    確認ダイアログのウィンドウ表示は正常で「Scan music directory」のテキストボックスには正しいパスが表示されます。
    しかし「OK」をクリックし処理させると「error」の赤色ポップアップが表示されます。
    UPDATEの処理は実行されないようです。

    網羅的に試してはいませんので、確実なことは言えませんが、他の文字ではこの現象発生しないようです。
    (また、カンマを含む名前のフォルダーより上階層のフォルダーから「UPDATE LIBRARY」を実行する場合には正常に処理が完了します。)

    動作環境:
    Raspberry Pi 4 Model B Rev 1.2 (4MB RAM)
    symphonic-mpdのバージョンは1.0.7
    WebブラウザはChrome 84.0 (Windows 10 Home Ver. 1909)

    よろしくお願いいたします。

  • @radiowave さま
    私の方でも様子見てみました。
    記載の通り、","を含むディレクトリを作成した場合、当該ディレクトリを指定して「UPDATE LIBRARY」を実行すると、
    ご報告と同じ状態になります。
    また、この状態の場合journalctlに以下の記録があります。

    smpd ympd[15830]: sh: -c: line 0: unexpected EOF while looking for matching `"'
    smpd ympd[15830]: sh: -c: line 1: syntax error: unexpected end of file
    

    jounalctlの記載から判断すると、
    プラグインのためのパラメータ渡しの際にセパレータとして","を使用しているため途中でUPDATE LIBRARYのための文字列が切れてしまうのが原因だと思われます。

    セパレータを他の文字にするか、それとも","は使わないように許容して頂くかちょっと検討 + パパリウスさまにも相談してみますね。

  • @sunatomo さま
    確認していただきありがとうございました。
    アーティスト名やアルバム名にカンマ「,」を含むことはかなり稀です。
    回避策として全角のカンマ「,」に置き換えることも可能だとは思います。
    無理なく対応できるのであれば、対処をお願いしたいくらいの気持ちです。

    (ちなみにCIFSのファイルシステムに対する処理を前提にしているのであれば、ファイル名に対する禁止文字「:」「|」等をセパレータに使うことも可能かと思います。
    あるいはエスケープシーケンスを導入するか、URLエンコードするか等々... )

    よろしくお願いいたします。

  • @radiowave さん

    ご報告をいただきありがとうございます。
    不具合リストに追加して対応を進めたいと思います。

    @sunatomo さん

    プラグインごとに禁則とすべき文字は変わってきますので、プラグイン機構には変更を加えず、ライブラリアップデートプラグインのみの修正で対応したいと思っています。

    自由入力欄を持つプラグインとしては、検索プラグインなどが該当すると思いますが、カンマの扱いはどうなっていましたでしょうか?参考にできれば助かるのですが。

  • @パパリウス さま
    実は、検索のプラグインの場合可変長パラメータを想定して専用文字列"//"をセパレータとしています。
    これにより、websocketで電文をやり取りする場合はコマンド+パラメータ1個で渡し(この場合の電文のセパレータは","です)、
    後ろのパラメータを検索のサブルーチンで処理する際は"//"で分割しているため、仮に途中で","が入っても大丈夫だったようですね。
    ↑
    "//"が適しているかはもしかしたら検証が必要かもしれませんね。

  • @sunatomo さん

    情報提供ありがとうございました。

    ソースを追ってみましたところ、mpd_client.c内でstrtokでトークンの切り出しをしているところが原因でした。

    修正してソースをpushしましたので、webui-plusにも反映していただければと思います。
    一緒にsearch欄も修正したいと思いますので、ソースをアップしていただけると助かります。

  • process cut-downがextremeになっていると、ランダム再生を止めることができません。

    ランダム再生のアイコンをクリックすると、一瞬、アイコンがブルーになりますが、すぐ黒に戻ります。と同時に「random deactivate」と表示されます。なので「ランダム再生になっていないのでは」と思うと、さにあらず。ランダム再生になっていて、どう操作しても元に戻すことができません。
    process cut-downをdefaultにすることで、ランダム再生のオンオフをコントロールすることができるようになることを確認しました。

  • @ジャイアン さま
    process cut-downとの関連は正直追いきれていませんが、
    randomボタンの件は当方でも現象が再現しました。

    ボタンクリック後にRaspberryPiのmpdから1秒間隔で返されるステータスの解析に誤りがあるようです(ボタンクリックでの通知に対応した際にバグを入れた可能性が大です)。申し訳ありません。
    23:30追記:
    RaspberryPiからWebブラウザへステータスを返す電文を拡張した際、
    randomの電文のスペルが誤記載であったため、表示が乱れたのが原因でした。
    また、通知はボタンを押した直後にさせるように仕様変更して対応します。

    取り急ぎ、ympd-plusの次リリースまでには修正してメインのリポジトリにソースコードを返します。