findしたファイルをxargsを使ってコピー

mad 0.21以降ではcover.jpgというファイルが存在すればカバーアートをmpdの機能だけで表示できるようになった,ということでこれを使えるようにするために,これまでFolder.jpgというファイル名で保存していたカバーアートの画像をcover.jpgというファイル名にもコピーしよう,と考えました。renameしてしまうと,他でいろいろと差し支えがでてきそうなので,コピーすることにします。

深いディレクトリ内に保存されているFolder.jpgを見つけてコピーするためには,当然,findでファイルを見つけなくてはならないのですが,それをコピーコマンドに渡すためにはxargsを使います。別のディレクトリにコピーする,というサンプルはネット上にたくさんありますが,同じディレクトリにコピーするという例はみつかりませんでしたのでメモを残しておきます。

find . -name Folder.jpg

とすればカレントディレクトリ以降のFolder.jpgが全て表示されます。これをxargsに渡すのですが,同じディレクトリにコピーするためにはディレクトリ名を抽出する必要があります。そこで,dirnameを使うのですが,dirnameは標準入力を受け付けません。しょうがないのでバッククォートをつかいます。

surname `find . -name Folder.jpg` | xargs -I {path} cp {path}/Folder.jpg {path}/cover.jpg

とします。xargsのオプションの-I {path}のpathという文字列はなんでもOKで,標準入力から受けた文字列を置き換える変数名みたいなものです。

これで期待する動作をさせることができます。

Chord Mojo2 + Poly

音はよいけど使い勝手や設定が面倒で本質以外のところで好き嫌いがわかれると思われるChordのPolyです。

これまで使っていたAK100とXduooのDACアンプXD-01がいろいろと使いにくいことになってきたため,それを一度は使ってみたかったChordのDACを調達する理由にしてMojo2の中古をe-earphoneの中古の日にたまたま見つけてしまったのでさっさと調達してしまいました。そうするとやっぱりPolyもいるよな,って話になってこれもはじめてメルカリを使って中古を調達しました。

AK100とXD-01を光ケーブルでデジタル接続した音は決して悪くないのですが,AK100は64GBのマイクロSDを2枚挿入して使っていますが(本当は製品の仕様外使用),2枚目を認識しなくなってしまいました。sdカードを出し入れするとたまには認識しますが,出先でマイクロSDの出し入れをして再認識させるなんてことはどう考えても紛失するリスクのほうが高くて泣きそうです。XD-01はもともと仕様として高感度のイヤホンではボリュームを大きくできないためボリュームを絞ったところでのギャングエラーが半端なく大きくて非常に使いにくいところがありました。しかも,充電用のマイクロusb-b端子がやたらと繊細でケーブルを選ぶところがあって,今まで使った様々なマイクロusbケーブルのなかでちゃんと充電できるのはAK100に付属していたケーブルだけ,というなんとも困ったヤツでした。

それでも,長距離の出張でもなければ使わないし,コロナのおかげで出張がなくなってこれらを持ち出すこともすっかりなくなっていました。最近になってコロナ何するものぞ,ということで出張が復活し始めたため,これらを持ち出すと上記のような最初からわかっている問題が気になり出して,内に飼っている悪魔が買い替えをささやき始めた,という次第です。悪魔の囁きには贖えず,結局,Mojo2 + Polyを調達してしまいました。

調達してから気がついたのですが,PolyはMojo2にも使えるけれどもファームウェアのバージョンが3.0.0以降でなくてはならないということでした。しかも,3.0.0以前から3.0.0にアップデートするためにはMojoの本体が必要という,鬼仕様でした。メルカリに出品していた人はちゃんとVer.3にアップデートしてMojo2で使っていた,と説明に書いておられたので心配はなかったのですが,何も考えないでうっかり中古を調達すると死んでしまうところでした。

そもそも,Chordは音についてはマニアックだし,DACのアルゴリズムも素晴らしいと思いますが,ユーザーインターフェースのような部分のソフトについてはある意味,素人っぽい,というかど素人のようなところがあって,その製品価格とのバランスはかなり悪いという気がします。据え置きのオーディオならそれでも差し支えないのでしょうけれど,持ち歩くDACアンプ+プレイヤーで,かつ,スマホでの操作が前提の機械ならばユーザーインターフェースはそれなりにウェイトが大きいわけで,どう考えても中国の新興メーカーに大幅に遅れをとっているように思います。

AK100はマイクロsdカードが2枚挿入できましたが,polyは1枚だけです。普通は1枚ってのが当たり前だと思いますが,使えるSDカードの最大容量に関する情報がどこにもありません。sdxcなのかsdhcなのかくらいは書いてくれ,と思いますが,私は見つけられませんでした。さすがにこのご時世に最大64GBどまりってことはないだろうと思いますが,手元には64GBのマイクロSDカードしかないので実際にどれだけの容量が使えるのかはわかりません。

Polyは小さなLEDが2灯あるだけで画面などはありません。すべてスマホからコントロールする仕様です。ネットワークプレイヤーとして使うつもりはまったくないので,sdカードに入れたデータを再生するということだけを考えていますが,見事にはまりましたので忘れない様にメモをしておきます。ネットワークプレイヤーとしての使い方も含めて基本的な設定方法はphilewebに掲載されている内容が参考になると思います。この記事は,bluetoothで接続する設定用アプリであるgofigureがリリースされる前のもののようですので,wifiのホットスポットモードを使うことが前提になっています。

Polyがsdカードのデータを再生するのはmpdを使うということですので,中身は普通にlinuxが動いているものと思われます。上記philewebの記事に書かれている手順に従って,,
1. 起動する
2.Congigボタンにピンを挿してhot spotモードに切り替え
3. P.statesのLEDが青と緑で交互に点滅
4. スマホでPoly-xxxxxx (xxxxxxは数字)に接続
5. 勝手にブラウザが立ち上がってPolyにアクセス
6. Poly Remote Setupのなかの「Keep in Hot-Spot mode」のチェックをはずし
7. MPD Bit Perfect modeとreboot on saveにチェックを入れ
8. otherを選択して
9. saveボタンを押す。
でリモート接続の設定ができます。keep in hot-spot modeのチェックをはずさないと再起動してもhot-spotモードで起動してしまって慌てます。

画面の上部にタブがあってwifi settingというメニューがあるのでこれを選ぶとwifiの設定画面に移行します。これはSSIDとパスワードを入れればOKです。reboot on saveにチェックを入れてsaveを押すと設定が反映された,というポップアップメッセージがでるのでcloseを押してしばらく待っていると勝手に再起動します。P.statesのLEDが緑で常時点灯になればネットワークに接続しています。

なんの説明もありませんが,ネットワーク上でDHCPサーバーが動いていることが大前提です。macアドレスから固定IPをDHCPで割り振ろうとしたらなぜか失敗して接続できなくなりました。かなり焦りましたが,結局,スマホにインストールしたgofigureからbluetooth接続して設定を消去して再度パスワードを設定することで接続できました。手間がかかりすぎるので固定IPを使うのは早々に諦めました。

結局のところ,gofigureからbluetoothで接続して設定するのが一番簡単そうです。gofigureを起動すると近隣にあるPolyを勝手に検索するのでそれで接続します。ペアリングで合言葉の数字をいれるわけでもなく,すぐに接続できてしまいます。これって,セキュリティは何も考えてない,ってことだと思いますが,いつでもだれでもgofigureを起動していればPolyに接続できてしまう,という恐ろしい仕様だと思われます。まぁ,オーディオ屋が考えるネットワークなんてそんなもんでしょう。

gofigureから接続すれば,hot-spot modeで設定したことと同じ内容の設定ができます。電池の残量などが表示されるのがちょっとうれしいところでしょうか。また,wifiネットワークは複数設定できますが,それを選択するのもタップするだけですし,接続が完了すれば,その設定名をタップすると設定されているIPなどのネットワークの設定情報を見ることができます。また,設定を削除するときは設定名を長タップすればメニューがでて簡単にできます。

hot-spot modeではPolyのIPがどのように設定されているか,dhcpサーバーのログを見ないとわからないという普通,ネットワークに詳しくない人は絶対にやらない方法が必要なので非常に使いにくい仕様です。動作のプロセスをある程度想像できて,その情報を取得する方法を知っていたって面倒です。知らない人にはちんぷんかんぷんです。基本的にユーザーはlinux使えるのが当たり前でしょ,って感じでネットワークに詳しくない人が使うことは想定してないんじゃないか,とさえ思ってしまう鬼仕様です。

AK100に使っていた64GBのマイクロsdカードは普通に認識しました。

macOSにインストールしているCantataからPolyのIPアドレスを設定するだけで他はデフォルトのままでカバーアートも表示されて簡単に使えました。とはいえ,モバイル環境ではいちいちmac bookを取り出して再生や停止をやってられません。スマホからコントロールできなければたいへん不便です。

ところがスマホのmpdクライアントではまりました。

android用のmpdクライアントにはM.A.L.P.,MPDroid,MaximumMPD,Supersonicがあるようです。私のスマホはOppo A54なのでAndroid 12互換のColor OS 12です。

MPDroidは起動時に新しいOSに対応していない,というメッセージが出てごちゃごちゃ文句をいうので却下。

M.A.L.P.は評判もよいようですが,カバーアートの表示をしようとするとHTTP経由が前提で音楽ファイルの在り処を%dとしてパスを指定する様になっていますが,そもそもPolyでhttpdが動いているのかどうかよくわかりません。もちろん,hot-spot modeではブラウザ経由で設定するのでhttpdは動くはずなのですが,httpdにとってのルートディレクトリと音楽ファイルがマウントされているディレクトリとの相対的な関係がわからないので設定すること自体が無理な相談です。よって却下。

MaximumMPDはカバーアートを表示のためにmpd経由またはhttp経由を選べるようですが,兎に角,有無をいわせずどこかにアクセスしてファイルをダウンロードしようとする,という謎の挙動をするので却下。

Supersonicはダウンロード数が500くらいで大丈夫か,って感じですし,そもそも,mpd 0.21.0以降にしか対応しないという妙に新しいもの好き仕様です。手持ちのmpdは全て0.1x.xxなのでmpdのバージョンが古いといって接続さえもしてくれません。しかし,幸いにもPolyに載っているmpdは0.21.xxでしたので,Supersonicで接続することができました。しかし,悲しいことにカバーアートは表示できません。

mpd 0.21以降はmpd自身がカバーアートを表示する機能を取り込んだ,ということなのですが,いろいろと調べてみるとカバーアートのファイル名がcover.jpgでなくてはならない,ということでした。AK100は音楽ファイルを置いているディレクトリにFolder.jpgを置いておけばカバーアートを勝手に表示してくれたのですが,ハードコーディングされているファイル名が違うとは。こればっかりはどうしようもありません。しょうがないので試しにFolder.jpgをコピーしてcover.jpgも同じディレクトリに置いてみました。

そうすると,Supersonicでちゃんとカバーアートが表示されました。カバーアートの表示によってmpdに負荷がかかるため音質に悪影響を及ぼす,という話もあるのですが,そんなことよりも何百枚もあるCDからカバーアートなしで選曲するのは拷問に近いのでモバイル環境では利便性のほうが重要です。というわけですべてのディレクトリあるFolder.jpgをcover.jpgにコピーしなくてはなりませんが,これは適当にfindコマンドと組み合わせれば時間はかかるにしても手間をかけずに簡単にできるはずなのでなんとかなりそうです。

ネットワークの基本的な知識はあるつもりでいますが,それでも,Polyの中の動作環境や設定ファイルが見えない状況で,動作を想像しながらクライアント側の設定をせねばならない,というのは相当にたいへんです。これって,ネットワークに詳しくないような人はどうやって使いこなしているのでしょうか。動きはじめれば快適であろうことは容易に想像できますが,最初のハードルがなんぼなんでも高すぎると思いました。

まぁ,マニア向けのオーディオメーカーだからユーザーもマニアでしょ,ってことなのかもしれません。オーディオマニアがネットワークマニアだとは思えないんだけど。