Raspberry Pi Zero W + DACで音楽プレーヤーmoOde audio playerを使う

RaspberryPiで動くもう一つの有名処の音楽プレーヤーも試してみた。
ただし、2017年12月15日現在のところ公式サイトからダウンロードできるのはソースとかレシピだけで、バージョンも正式版じゃなくてベータだけ(moodle audio player 4 BETA12)。
聞いてたのとちょっと違う。最新じゃなくてもいいから正式リリース版のイメージファイルが欲しかったな。

仕方がないのでレシピに従ってRaspbianをmicroSDカードに入れてRaspberryPi Zero W (以下RPi0W)を立ち上げ、ネットワークに接続してそこからSSHでログインしてRPi0W上でファイルを操作したりコンパイルしたりということに。RPi0Wは非力ということもあって例えばmpdなど大きめのプログラムのビルドには時間がかかる。結局、試行錯誤含め12時間以上かかって完成。
レシピのとおりにやればLinuxの知識ゼロでもなければおそらく完成までたどり着けるとは思うけど、ベータ版(レシピv2.2)ということもあってかということもあってか僅かだがレシピに間違いもある。1行ずつ実行してエラーになっていないことを確認するのが確実かと。
レシピの「SR8」という項目の電源断の後は、(電源再投入してから)ブラウザで無線LANの再設定を行う必要があった。これをやらないとLANには繋がるけど名前解決できないなど中途半端になった(オマ環かもだけど)。

以下は完成後。

moOde audio player 1
ブラウザでmoOde audio playerのIPアドレスを指定して開く。右上の「Beta12」(現在のバージョン)をクリックするとメニューが表示される。
Configureで設定。(その下のCustomizeも)

moOde audio player 2
Configurarion settingの画面。Sourcesは楽曲の置き場、Audioは音響関係の設定・・など目立つのは4つだが、その下の赤枠の部分に3文字が幾つかあるのもそれぞれ設定メニューなので一応確認するべき。

moOde audio player 3
Audio Configの画面。とにかく、音声の出力デバイスを指定しないことには話にならない。
I2Sで出力するデバイスがリストにあるならそれを指定する。持っているのがリストになければGenericで始まる選択肢を選択。DACチップの合うのを選びたいが、この設定画面ではDACチップが表示されないのでどれを選べば良いか判り難い。Customize画面では表示されるので後ほど。
選択したら[SET]を押すのを忘れない。出力デバイスを変更したらシステムの再起動を求められるかも。その場合は再起動も。

moOde audio player 4
ネットワークの設定画面。
RaspberryPiの機種によって有線LANと無線LANで設定箇所が違う。
設定途中でも一度設定し直すことになるかと思われる。(変更箇所は無かったが適用(APPLY)が必要だった)
設定が終わったら[APPLY]を押す。

moOde audio player 5
カスタマイズ設定画面。
出力デバイスはこちらの画面の方がわかりやすい。
赤枠のDeviceの項目を変更するとその下のChipも対応して表示される。
例えば先日購入したDACはPCM5102というDACチップを搭載したものなのでGeneric-1 I2S(hifiberry-dac)を選択すれば良いというのが解る。
変更したら[UPDATE]を忘れずに。

moOde audio player 6
System Informationの画面。
そんなに大した情報は無いかも。多くは実際の値ではなく設定内容だし。

moOde audio player 7
続き。オーディオデバイスの辺り。

moOde audio player 8
楽曲置き場の設定画面。(Menu→Configure→Sources)
MicroSDカードに楽曲データを置くなら上の画像の下半分。LAN内のNASにある楽曲データを使うなら画面の上半分。
新規にNASを指定するなら[CREATE]を押す。

moOde audio player 9
上の画像はWindows共有の場合。必要項目を設定したら一番上の[SAVE]を押す。
NASに正しく接続できたら自動的にNAS内の楽曲情報を読み込む。画面左下の通常は「Browse」の部分に「Updating」と表示されるので、Browseに戻るまでは再起動したり触りまくったりしないで待つ。

moOde audio player 10
画面下中央の「Library」を押すと楽曲一覧などが表示される。左列はジャンルとアーティスト、中央列はアルバム、右列は選択したアルバムに収められている楽曲一覧。
一覧はわかりやすそうで意外と操作性は悪い。中央列でアルバムを選択すると右下にそのアルバムの情報が表示されるのでアルバムのアルバムアート画像をクリックすると「Add」「Play」「Clear/Play」が表示される。
「Add」は選択したアルバムの全曲をPlayback(キュー)に入れるだけ。
「Play」は選択したアルバムの全曲をPlaybackに入れると同時に再生開始。
「Clear/Play」は既存のPlayback内のキューを全削除してから、選択したアルバムの全曲をPlaybackに入れると同時に再生開始。
右列の個別の曲の右端をクリックして個々にPlaybackに入れたり再生することも可能。

moOde audio player 11
画面右下の[Playback]をクリックすると左にキュー兼プレイリストが表示され、右半分は現在再生中の状態が表示される。
上の画像では中央の上の○が現在の再生中の曲の曲長と再生の進行状況。
下の○は音量ダイヤルを模したもの。上の画像では下の○の左下の方に緑の「67」というのが表示されているがこれが音量で67/100を示している。本来はこの67が円の中心に来るのが正しいのかな?おそらく不具合でズレた位置に表示されている。音量最大が100で音量最低が0。

moOde audio player 12
ところで、moOde audio playerにはUPnP rendererやDLNA serverの機能もある。
PnP rendererの方は試してないが、DLNA serverはWindows Media Playerなどで試すことができる。
基本はDLNA serverをONにして[SET]。必要に応じてデータベースをリビルドする。

moOde audio player 13
Windows Media Playerの左下にMoode DLNAという(指定した)名前が表示されて、MicroSDカードに入っている楽曲が表示される。初期状態のmoOde audio player(のmicroSDカード)にはテスト用の1ファイルだけが入っているのでそれが表示される。接続しているNASの楽曲は表示されない。
ここまでは良いのだが、moOde audio playerのDLNA serverをオフにしてもサーバー機能がオフにならないのは何でだろう。

moOde audio player 14
楽曲を再生中にその情報を見ることができる。再生中またはPlaybackの左列で選択してメニューから[Audio info]をクリックで表示。
上の画像はCDをFLACファイルにしたもの。CDなので16bit, 44.1kHz

moOde audio player 15
上の画像は俗に言う「ハイレゾ」の音楽ファイル。32bit, 192kHzのもの。
音楽関係は全然無知なので素直に疑問だけど、リサンプリング無しなのに入力レートよりも出力レートが1.3倍なのは何でかしら。(上のCDの方は1.5倍)

プレイリストの変更(編集)機能がベータ版だからか上手く動かない。ライブラリのアルバム/個々の曲の「Clear/Play」は正常に機能する。
32bit, 192kHzのハイレゾ音声を再生するとブッチブチで聴けたものではない。RPi0Wではちょっと非力過ぎるのかしら。でも、volumioでは普通に再生できたのになぁ。

関連記事:

どうしてもWindowsの共有フォルダが見えない対処

この記事は自分のための備忘録です。

Windowsの家庭向けエディションではNFSが使えないのでWindows PCとのファイルの受け渡しにはWindowsの共有機能を使おうかということになるんだけど、最近のWindowsはその共有がなんかわかりにくくて困る。
Windowsは昔からのクセで3ヶ月〜1年毎くらいにはクリーンインストールするんだけど、最近はその度に「なんで共有設定したのにフォルダが見えないの?」って悩むことに。
おそらくWindows 10など新しいWindows同士なら問題無い筈だが、Linuxなどからはワークグループ内のWindowsのPC名は表示されてもその中の共有フォルダが見えないのよね。

この記事では普通にネットワークの設定やフォルダを共有するあたりは既に出来ているものとして、知らないと解決無理で且つ忘れやすいところだけ。最初のSMB 1.0/CIFSサーバー有効化は2017年秋のFall Creators Updateの変更によるものなので新しい悩みの種だけど。

SMB 1.0/CIFSサーバー有効化

Windows共有設定 1
Windowsの検索で「機能」を入力すると候補として「Windowsの機能の有効化または無効化」が表示されるのでそれをクリック。

Windows共有設定 2
リストから「SMB 1.0/CIFSファイル共有のサポート」を探す。そこのチェックボックスがおそらく■になっている筈。
その左の を押す。

Windows共有設定 3
「SMB 1.0/CIFSサーバー」にチェックが付いていない(筈な)のでチェックを付ける。
[OK]を押す。

Windows共有設定 4
画面が勝手に進行する。

Windows共有設定 5
「必要な変更が完了しました。」が出たら[閉じる]を押して終了。
なお、その後にWindowsの再起動を忘れずに

これで他の古いWindowsやLinuxなどから共有設定した筈のフォルダが見える(使える)ようになった筈。

マイク○ソフトに言いたい。設定をあちこち散らばらせすぎるとわからんくなるからヤメて!!

セキュリティ上の理由で「SMB 1.0/CIFSサーバー」が標準で無効化されたようなので必要がないのに無闇矢鱈に有効化しないこと。

少し古いクライアントでアクセスできない場合

Windows 10 共有設定 1
ネットワークと共有センターを開き、共有の詳細設定を選択する。
項目の中から「ゲストまたはパブリック」を展開する。
「ネットワーク探索を有効にする」にを付ける。
「ファイルとプリンターの共有を有効にする」にを付ける。

Windows 10 共有設定 2
項目の中から「すべてのネットワーク」を展開する。
「40ビット暗号化または56ビット暗号化を使用するデバイスのためのファイル共有を有効にする」にを付ける。古い端末以外ではこれを変更すると逆に接続できなくなることがある。後述のVolumioとかもこれを触ったらダメなので128ビット暗号化にしておくこと。
「パスワード保護共有を無効にする」にを付ける。

共有フォルダの側のアクセス権限を変更・確認する。

Windows 10 共有設定 3
共有させるフォルダを右クリックしてプロパティを表示し、上部の[共有]タグを選択。
「ネットワークのファイルとフォルダーの共有」の中の[共有]をクリック。
クライアントによっては共有する相手にEveryoneを追加し、アクセス許可のレベルに「読み取り」、または「読み取り/書き込み」を設定する。

Windows 10 共有設定 3
共有させるフォルダを右クリックしてプロパティを表示し、上部の[共有]タグを選択。(要するに前の手順の1階層前の画面)
「詳細な共有」の中の[詳細な共有]をクリック。

ここまでで少し古いクライアント程度なら共有フォルダにアクセスできる筈。

特に古いクライアントから共有フォルダにアクセスできない場合

共有フォルダを提供する側の変更だが、普通はここまで変更する必要はない筈。

レジストリエディタ
基本的にはレジストリエディタで設定を変更する。慣れていないと探しにくく解りにくいけど。

レジストリエディタ
幾つかの設定はローカルグループポリシーエディタでも変更できる。ただし、Homeエディション以下には入っていない。

[匿名の制限] チェック
レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous

0 — 制限なし。既定のアクセス許可に従って制限される
1 — セキュリティ アカウント マネージャのアカウントおよび名前の列挙を許可しない
2 — 明示的な匿名アクセス許可がない限りアクセスできない
初期値は0の筈。この記事では変更しない。
下の戻し用レジストリにだけ含める。

ローカルセキュリティポリシー「ネットワークアクセス: Everyoneのアクセス許可を匿名ユーザに適用する」を無効から有効に変更。 レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\everyoneincludesanonymous
0から1に変更。

「ネットワークセキュリティ: 次回のパスワード変更時にLan Managerのハッシュ値を保存しない」を有効から無効に変更。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\NoLmHash
1から0に変更。

「ネットワークアクセス: 名前付きパイプと共有への匿名のアクセスを制限する」を有効から無効に変更。
レジストリ
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\restrictnullsessaccess
1から0に変更。
面倒なのが嫌いな人向けにレジストリファイルを用意した。ダウンロードして実行すると上の変更が適用される。
control_lsa.reg
1
2
3
4
5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"NoLmHash"=dword:00000000
"everyoneincludesanonymous"=dword:00000001
serviceslanmanserver_parameters.reg
1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"restrictnullsessaccess"=dword:00000000

初期値に戻し用のレジストリファイル

control_lsa_retrieve.reg
1
2
3
4
5
6
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"NoLmHash"=dword:00000001
"everyoneincludesanonymous"=dword:00000000
"restrictanonymous"=dword:00000000
serviceslanmanserver_parameters_retrieve.reg
1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"restrictnullsessaccess"=dword:00000001
(以下2018年1月追記)

中途半端に特殊な場合

Volumio2は2017年最後の更新でWindows共有の設定が変更になった模様。一部の人がアクセスできなくなったと言っている。
試した限りではプロトコルとしてSMB2.0またはSMB2.1を指定してマウントしてやる必要があるっぽい。SMB3.0以降はNG。

VolumioでSMBマウント
Volumioの設定でマイミュージックを開く。
「ネットワークドライブ」の項目で[新規のドライブを追加]をクリック。
[拡張オプションの表示]をクリックすると設定項目が増える。
「オプション」に「vers=2.0」または「vers=2.1」を入力する。その他の項目はこれまでと変わらず。

VolumioのWebUIでは、Windowsのファイル共有のフォルダをネットワークドライブとして登録しようとして失敗したものを「編集」で開いてオプションを登録して保存してもダメみたい。登録失敗しているドライブを一度削除してから再度「新規のドライブを追加」で追加することが必要。

これでたぶんいける筈。

2018年1月21日追記:
VolumioでWindows 10の共有をマウントするならこの記事の「特に古いクライアントから共有フォルダに・・」部分以外を全部やってね。ただし、共有の詳細設定の「すべてのネットワーク」の「ファイル共有の接続」で「40ビット暗号化または56ビット暗号化・・」はダメ、128ビット暗号化を使用して・・」にすること。
あと、共有する側で共有名に日本語を使うとVolumio側でいろいろトラブル筈なので共有名には日本語を使わない。(共有するフォルダ名やファイル名に日本語を使うなという意味ではない)
Windows(サーバ側)でSMB1.0を有効にしてクライアント側でSMB2.xを指定というのは何をしたいのか小一時間とは思うけど・・・

関連記事:
Up