2016年11月26日土曜日

LightMPD_Upnpアダプター完成

デジファイの音さんのUPNPアダプター(図5 イーサーネットの分離(UPnPモード))で音出しに成功した。
https://sites.google.com/site/digififan/home/digifi-labo/lightmpd-upnpgw


Lightmpdをこのように2台のAPUでカスケード接続すると、JPLAYに肉薄するほど高音質に激変する。

Lightmpdの凄いところは、音質以外に、ファイルの編集をするために、telnetやSSHなどでLightmpdにアクセスし Linux と格闘する必要がないという点だ。これはかつてなかった快挙だ。

要するに、WindowsでLightmpdをインストールしたSDカードをそのままWindowsで開き、中の設定ファイルを直接編集できるということだ。

Linuxのコマンドは不要だし、Linuxの階層を意識したり行ったり来たりする必要もないし、Vi を使う必要もない。 しかも、各環境に合わせてすべての設定ファイルが、ほぼデフォルトで使えるように準備されている。これは本当に便利だし凄いことだ。

これならLinux素人でも十分に挑戦できる!

もしかしたら、JPLAYのAudioPCのWindowsServerCoreモードの構築より簡単かもしれない。

1.接続

下図のとおりにLANケーブルを繋ぐ。

2.UPnPアダプター側の設定

BOOTイメージ
apuboot4g.img.xz
パッケージ
lightmpd-upnpgw-apu1-v1.0.0.zip
     
① lightmpd.conf       
------------------------------------------      
[network]      
        interface=eth0      
        address=192.168.3.1      
        gateway=192.168.3.2      
        netmask=255.255.255.0      
        nameserver=192.168.3.2      
        domain=mydomain.jp      
       
[ntp]      
        server=192.168.0.0      
        ntpd=no      
        timezone=Asia/Tokyo      
       
[network:player]      
        interface=eth1      
        address=10.0.0.1      
        netmask=255.255.255.252      
       
[network:nasgate]      
        interface=eth2      
        address=10.0.1.1      
        netmask=255.255.255.252      
       
[upmpdcli]      
        enable=yes      
        upnpiface = eth0      
        mpdhost=10.0.0.2      
        mpdport=6600      
        friendlyname=UpLightMpd      
        ohproductroom=UpLightMpd              
        logfilename=/tmp/upmpdcli.log      
        openhome = 1      
        ohmetapersist = 1              
        loglevel = 3      
       
[polipo]      
        enable=yes      
#      
        proxyAddress = 0.0.0.0      
        allowedClients = 10.0.1.2      
#      
        chunkHighMark = 1024      
        chunkLowMark = 256      
        chunkCriticalMark = 768      
        objectHighMark = 2048      
#      
        dnsQueryIPv6 = no      
        cacheIsShared = false      
        dnsUseGethostbyname = yes      
        disableConfiguration = true      
        disableIndexing = true      
        disableLocalInterface = true      
       
[telnetd]      
#  yes | no      
        enable=yes      
        port=23      
       
[cpuaffinity]      
        type=0      
       
[irqpriority]      
        setdefault=no      
       
[nat]      
        masquerade=network:player,network:nasgate      
        dnsforwarding=yes      
        ntpforwarding=yes      
        8023=10.0.0.2:23      
-----------------------------------------------

3.player側の設定

BOOTイメージ
apuboot4g.img.xz
パッケージ
lightmpd-upnpgw-apu1-v1.0.0.zip

① lightmpd.conf    
---------------------------------
[network]
interface=eth0
address=10.0.0.2
gateway=10.0.0.1
netmask=255.255.255.252
nameserver=10.0.0.1
domain=mydomain.jp

[ntp]
server=10.0.0.1
ntpd=no
timezone=Asia/Tokyo

[network:nasgate]
interface=eth1
address=10.0.1.2
netmask=255.255.255.252

#[route]
#nas-ip/32 = gateway
#192.168.0.0/32=10.0.1.1

[route]
nas-ip/32 = gateway
192.168.3.10/32=10.0.1.1

[mpd]
load_module=mpd-0.19.18rt-native-dsd-upnp

[polipo]
enable = yes
proxyAddress = 127.0.0.1
allowedClients = 127.0.0.1
#parentProxy = 10.0.1.1:8123
dnsQueryIPv6 = no
chunkHighMark = 1024
chunkLowMark = 256
chunkCriticalMark = 512
objectHighMark = 2048
cacheIsShared = false
dnsUseGethostbyname = yes
#
# disableVia = false
disableConfiguration = true
disableIndexing = true
disableLocalInterface = true
#
replyUnpipelineTime = 40
smallRequestTime = 20
maxSideBuffering = 15000

[rpcbind]
enable=no

[telnetd]
# yes | no
enable=yes
port=23

[webconsole]
# yes | no
# start page: http://thishost:${port}/index.html
enable=no
port=9000

[cpuaffinity]
# 0 normal
# 1 cpu1: usb irq handler
# 2 cpu1: usb irq handler
type=2

[irqpriority]
setdefault=no
xhci_hcd#0=FIFO:99

[debug]
interfaces=yes
resolvconf=yes
ntpd=yes
ntpconf=yes
ifconfig=yes
cards=yes
mounts=yes
ps=yes
mpdversion=yes
date=yes
ntpq=yes
music=yes
messages=yes
save=no
-----------------------------------------

② mpd.conf
-------------------------------------
realtime_option {
    memlock               "yes"
    stack_reserve         "2048"
    heap_reserve         "10240"
    main_priority         "OTHER:0"
    player_priority       "FIFO:53"
    decoder_priority     "OTHER:0"
    update_priority       "OTHER:0"
}

audio_output {
        type             "alsa"
        name             "uda"
        device           "hw:0,0"
        priority         "FIFO:54"
mixer_type       "disabled"
# dsd_usb         "yes"
dsd_native              "yes"
dsd_native_type         "2"
buffer_time     "150000"
period_time     "37500"
}

#decoder {
#      plugin                    "sndfile"
#      enabled                   "no"
#}

#decoder {
#      plugin                    "audiofile"
#     enabled                   "no"
#}

input {
      plugin "curl"
      proxy                     "127.0.0.1:8123"
}      

###### decoder selector
#decoder {
#   plugin                       "dsdiff"
#   enabled                      "yes"
#}

#decoder_selector {
#   suffix                       "mp3"
#   plugin                       "mad"
#}
#
#decoder_selector {
#   suffix                       "m4a"
#   plugin                       "ffmpeg"
#}
#
#decoder_selector {
#   suffix                       "wav"
#   plugin                       "audiofile"
#   scan_plugin                  "ffmpeg"
#}
#
#decoder_selector {
#   suffix                       "flac"
#   plugin                       "flac"
#}

database {
   plugin "simple"
   path "/var/lib/mpd/tag_cache"
   compress "no"
}

#
music_directory "/var/lib/mpd/Music"
playlist_directory "/var/lib/mpd/playlists"
#sticker_file             "/var/lib/mpd/sticker.sql"
log_file "/var/lib/mpd/mpd.log"
pid_file "/var/run/mpd.pid"
state_file "/var/lib/mpd/state"

user "root"
group                   "root"

bind_to_address "any"
port "6600"

#
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
metadata_to_use "artist,album,title,track,genre,date,disc"

#audio_output_format "96000:24:2"
#
# extended audio format
#audio_output_format "X4L4:24:2"

#LIBSAMPLERATE
#samplerate_converter            "Best Sinc Interpolator"
#samplearte_converter            "Medium Sinc Interpolator"
#samplearte_converter            "Fastest Sinc Interpolator"
#samplearte_converter            "ZOHc Interpolator"
#samplearte_converter            "Linear Sinc Interpolator"
#samplearte_converter            "internal"

# SOXR
samplerate_converter            "soxr very high"
#samplerate_converter            "soxr high"
#samplerate_converter            "soxr medium"
#samplerate_converter            "soxr low"
#samplerate_converter            "soxr quick"
#
#samplerate_converter            "soxr very high openmp"
#samplerate_converter            "soxr high openmp"
#samplerate_converter            "soxr medium openmp"
#samplerate_converter            "soxr low openmp"
#samplerate_converter            "soxr quick openmp"


follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
default_permissions     "read,add,control,admin"
#
mixer_type "disabled"
#
audio_buffer_size "4096"
buffer_before_play "50%"
#
filesystem_charset "UTF-8"
id3v1_encoding "UTF-8"
------------------------------------------------------

③ WAVがノイズになる場合の対処方法

これは、キャッシュサーバーpolipoをカスケード接続すると現れる現象で、デジファイの音さんが現在調査中。問題が解決されるまでは以下の方法で対処する。

(1) ffmpegを使う

wavは sndfileかaudiofile,ffmpegのいずれかでデコードされるが、
今回、sndfile や audiofile を使うとノイズの嵐になるので、これらを使えなくしffmpegを使う

player側の mpd.conf の audio_output {   } の下当たりに以下を書き込む。

decoder {
      plugin                    "sndfile"
      enabled                   "no"
}

decoder {
      plugin                    "audiofile"
      enabled                   "no"
}

これでWAVはノイズなく再生される。しかし352KHzWavは依然ノイズの嵐となる。
352KHzを聴かないならこれで十分だが、聴きたいなら(2)の方法で対処する。

(2) player側のpolipoのみ使う設定にする

これは、UnPNアダプター側のpolipoを経由せずに直接NASからデータを取り受ける方式。

上記(1)の設定をキャンセル(全てコメントアウト)する。

#decoder {
#      plugin                    "sndfile"
#      enabled                   "no"
#}

#decoder {
#      plugin                    "audiofile"
#      enabled                   "no"
#}

player側の lightmpd.conf の[route]にNASのIPアドレスを指定する。
parentProxyはコメントアウトする。

 [route]
nas-ip/32 = gateway
192.168.3.10/32=10.0.1.1

[polipo]
#parentProxy = 10.0.1.1:8123

これで、playerのpolipoだけを使う設定となり、WAVが全くノイズなしで再生される。

192KHzも352KHzもOKだ。


④ DSD再生について

DDCが対応していれば、Dopではなく、NativeDSDを使うことができる。
player側の mpd.conf で、

Dopの場合
dsd_usb                   "yes"
#dsd_native              "yes"
#dsd_native_type       "2"

NativeDSDの場合
#dsd_usb                "yes"
dsd_native              "yes"
dsd_native_type        "2"

なお、忘れてはいけないのは Minimserverのstream,transcodeの設定だ。
Dopの場合、 dff:dopwav、dsf:dopwav と記述されている。
これを削除すと、NativeDSDで再生されるようになる。
 



4.NASのIPアドレス

NASのIPアドレスをLightMPDのネットワークに合わせて変更しておく。


5.ControlPoint

Upplay Kinsky Kazooで再生確認。
ControlPointの中では、Upplayが明らかに一歩抜きんでいる。Kinsky、Kazooは落ち着いた感じ。




6.音質

LightMPDのネットワークをホームネットワークと分け、更に、UNPNアダプターとUNPNプレイヤーをカスケード接続し2本のネットワークに分け、楽曲もNASにすることで、音質はここまで変わるかというくらい変わる。

これまでLightMPDは、綺麗な音だがやや細く伸びがなく、心に響いてくるJPLAYには一歩足りない感じであったが、解像度が高く、深みと厚みが出て艶のある心に響いてくる音に変わった。聴き始めるといつまでも聴いていたい気持ちになる。

これまで、あまりいい録音でないと思っていた楽曲が見違えるほど良くなる。これはほんとうに凄い。

LighrMPD恐るべし!JPLAYStreamerと遜色なし?!。


2016年11月18日金曜日

RaspiをJPLAYのNASにする(2)

これが現在の最新のJPLAYのネットワークだ。

実は、RaspiでNASができて、JRIVERで再生まで上手くいったのだが、なぜかKAZOO、KINSKY、UPPLAYで再生できない。KAZOO、KINSKYは、NASのMnimserverを認識し楽曲が表示されるが、プレイリストに楽曲が入らない。UPPLAYは、プリリストには入るが再生しない。

更に、KAZOO、KINSKYは、内蔵HDDの楽曲すら再生しなくなった。

二日間、あれこれやったが全く進展なし。

今夜、ふと、もしかしたらファイヤーウォールの所為かと思い、Norton Internet Securityのファイヤーウォールの許可を確認するが、関連のプログラムは全て許可となっている。

そこで、まさかとは思ったが、Windowsファイヤーウォールを確認してみると、やはり、以前確認したとおり、Norton Internet Securityによって無効にされている。

しかし!どこをクリックしても反応しないはずが、詳細設定だけが開くことができる。ん?


詳細の画面をみて驚いた。なんとドメインプロファイルというのがあり、「Windowsファイヤーウォールは有効です」になっているではないか。プライベートもパブリックも無効にもかかわらずだ。
そこで、その下のWindowsファイヤーウォールのプロパティを覗いてみた。

プロパティ画面のドメインプロファイルのファイヤーウォールの状態が「有効」になっている。無効にしようと思ったが、保護されているネットワーク接続のカスタマイズをクリックしてみると、

イーサネット3、4,5が表示されすべてにチェックがされている。我が家ではイーサネット3はホームネットワーク(インターネット)、イーサネット4はLightMPD用、イーサネット5がJPLAY用に使っている。

そこで、ホームネットワーク以外のチェックを外した。これでWindowsファイヤーウォールで保護されなくなると思われる。

念の為、Norton Internet Securityのスマート・ファイヤーウォールも一時停止すると、

なんと!これまで白地に赤文字でエラーだったControlPCのMinimWatchのアイコンが突然黄→緑と変化しrunningになったではないか。

これでいけそうだと思い、UPPLAYで再生してみると、すんなり再生された。


あーよかったーー。やっとできたーー。疲れた。

まさか、無効にしたはずのWindowsファイヤーウォールが原因だとは夢にも思わなかった。その後、Norton Internet Securityのスマート・ファイヤーウォールを有効にしても、問題なく再生できる。

音質は変わらないが、静けさが断然良くなった感じだ。内蔵HDDも悪くないがNASの方がいいかな!苦労したので (;^_^A

なお、先ほどまでMnimWachだったアイコンが、MnimServer[raspinas] is running に変わった。

これで一件落着、めでたしめでたし。

KINSKYも問題なく再生してくれた。


しかし、KAZOOだけはどうにも再生しない。アップデートしてからKAZOOはどうかしてしまったようだ。

2016年11月13日日曜日

RaspiをJPLAYのNASにする

NAS : RaspberyPi 2B(上のケース)とUSB-HDD(下の黒い箱) 

これまでNASを使ってこなかった。それは、PC内臓HDDの方が直結で音質の劣化が少ないと思ったからだ。

しかし、JPLAYデュアルで、ホームネットワークとJPLAYネットワークを分離することで、劇的に音質が向上することがわかった。

ネットワークを別にすることが高音質の重要な要素だったのだ。

そこで、今回、楽曲も内臓HDDから外部のNASへ移行してみることにした。

NASを購入しようかと思ったが結構高価だ。

そもそもNASはLinuxにHDDが付いたPCであり、中古のPCにHDDを付ければ簡単に構築できるはずだ。

そこで、最近出番がなくなり寂しい思いをしていた(であろう)RasperryPiをNASに仕立てることにした。

幸いに、MnimServerのHPにRaspberryPi用のMnimServerがあり、メディアサーバーにも簡単にできそうだ。

HDDは、手元にあった玄人志向のHDDケース(USB2.0)にWDの3TBHDDを搭載したUSB-HDDを使う。


1.USB-HDDをフォーマットする

LINUXでHDDを使う場合、Windows標準フォーマットであるNTFSが使えない。

そこで、LINUXの大容量HDD用フォーマットである ext4 でフォーマットしようかと考えたが、ネットにWindowsで認識されない場合もあるとか書いてある。

結局、WindowsでもLinuxでも使える  exFAT フォーマットを使うことにした。これだとMacでも読める。

USB-HDDをUSBでWindowsPCに繋ぎ、「ディスクの管理」でフォーマットする。

フォーマットが終わったら、フォルダー「MUSIC」を作成し、この中に楽曲をコピーしておく。

2.MicroSDカードをフォーマットする

4GBのMicroSDカードを用意し、SDFormatterでフォーマットする。

再利用の場合で元の容量と合ってない場合は、オプション設定で、論理サイズ調整をONにしてフォーマットすると元の適正なサイズに戻る。




3.RaspberryPiにOSをインストール

コマンドラインで作業および動作させるので、RASPBIAN JESSEIE LITE を使う。(最新は(2018-03-13-raspbian-stretch-lite)。
ディスクトップを使いたい場合は、RASPBIAN JESSEIEをダウンロードする。

RaspberryPiのHPからダウンロードし解凍したら、イメージをDDWin(管理者)でMicroSDカードに書き込む。




3.SDカードから起動しIPアドレスを確認する

RaspberryPiに、LANケーブル、SDカードを挿入し、HDMIでディスプレイに接続し、電源を接続してRASPBIAN JESSEIEを起動する。

LOGIN  : Pi
PASSWORD : Raspberry
を入力し、コマンド、プロンプトが出たら、

$ ifconfig

でルーター(DHCPサーバー)から割り振られた eth0 のIPアドレスを控えておく。


4.SSHでログインし設定をする

Windowsで作業をする方が断然楽なので、RaspberryPiをディスプレイから外し、WindowsからSSHで作業を行う。

Puttyに先ほど調べたIPアドレスを入力しアクセスする。




5.USB-HDDをマウントする

RaspberyPiでexFAT が扱えるように以下のファイルをインストールする。

$ sudo apt-get install exfat-fuse exfat-utils

USB-HDDをマウントするためUUIDを調べる。

$ sudo blkid


/etc/fstabにマウント設定を書き込む

$ sudo vi /etc/fstab


 UUID="AA41-69F2"        /mnt/hdd/usbhdd    exfat-fuse    async,auto,dev,exec,gid=65534,rw,uid=65534,umask=007    0       0

再起動。
$ sudo reboot

再起動後、マウントできているか確認。

$ sudo df



6.samba をインストールする

$ sudo apt-get install samba

sambaの設定
$ /etc/samba/smb.conf

[NAS]                                          ・・・共有名
   comment = RaspPiNAS      ・・・コメント
   path= /mnt/hdd/usbhdd/music  ・・・楽曲のフォルダー
   read only = No
   guest ok = Yes
   force user = pi

sambaの起動
$ sudo /etc/init.d/samba restart

これで、WindowsかRaspberryPiのNASにアクセスが可能となるので、Windowsのネットワークドライブの割り当てで「\\raspberrypi\pi」を(Z:)等に割り当てておく。

普段は使わないが、Windowsから楽曲をコピーする際に使用できる。

これで、NASの完成だ!


7.NASのIPアドレスをJPLAYのネットワークに変更する

(追記 H28.11.16)
NASのIPアドレスを変更する前に(インターネットにつながっている環境で)、
「9.JAVAのインストール」を先に実行しておく。

さてNASは完成したが、このNASのIPアドレス192.168.11.10は、ホームネットワークのルーターから割り振られたもので、192.168.11のホームネットワークに属している。

しかし、JPLAYは音質向上の為ホームネットワークから分離させて192.168.2のネットワークを使っている。

JPLAYのNASとして使うためには、NASのIPアドレスをJPLAYのネットワークに変更する必要がある。192.168.2.10を固定的に設定する。

ここで再び、SSHでアクセス

従来、ネットワークの設定は、/etc/network/interfaces であったが、RaspberryPiのJessieでは、/etc/dhcpcd.conf に変更されているので注意が必要だ。(最初これがわからず、何度設定しても変更できなかった。)

/etc/dhcpcd.conf に以下のように書き加える。

$ sudo vi /etc/dhcpcd.conf
interface eth0
static ip_address=192.168.2.10/24
static routers=192.168.0.1
static domain_name_server=192.168.0.1

JPLAYのネットワークはルーターやインターネット等に接続しない閉ざされたネットワークなので、ルーターやドメイン名は変更しない(しなくても問題は起きない)。

これで、JPLAY用のNASが完成した。

次は、このNASをJPLAYのメディアサーバーにする。


8.JAVAのインストール

WindowsのSSHから raspi にログインし、

JAVAをインストールする。
$ sudo apt-get install oracle-java8-jdk


9.Minimserverのダウンロード

Windowsで minimserver HPより以下のファイルをダウンロードする。
http://minimserver.com/downloads/index.html
最新は、
MinimServer-0.8.5-2-linux-armhf.tar.gz

10.MinimServer on the Raspberry Piのインストール

Windowsのエクスプローラーで(Z:)(\\raspinas\pi)を開き、ダウンロードしたMinimserverファイルをコピーしておく。

次に、SSHでアクセスし、上記ファイルを $ /home/pi にコピーする。
sudo cp /mnt/hdd/usbhdd/music/MinimServer-0.8.5-2-linux-armhf.tar.gz /home/pi

インストール
ディレクトリを移り、tarで解凍すると、minimserverディレクトリーが作成される。
$ cd /home/pi
$ sudo tar xf MinimServer-0.8.5-2-linux-armhf.tar.gz


◎SSHを終了し、直接HDMIでRaspberryPiの画面を出す。

minimsserverの起動
$ sudo minimserver/bin/startc

スタートアップに登録され次回OS起動時にmininserverが自動的に起動する。

楽曲のあるディレクトリを聞いてくるので、
/mnt/hdd/usbhdd/music と入力

全楽曲のスキャンが開始される、結構時間がかかる


スキャンが終わると、WindowsのUPNP ControlPonitにMininserverが現れる。

以上、手持ちのHDDとRaspberryPiでJPLAYのNAS兼メディアサーバーを作ることができた。

全て手持ちの機器で作ったので、掛った費用は0円。


12.JPLAYでNAS再生!

JRIVERでRASPINASの楽曲をJPLAYStreamerで再生中。

一聴して断然静かになった。ネットワークを分けた成果があったようだ。

2016年11月9日水曜日

トトトト

トランプが圧勝しそうだ。305くらいはいきそう。
これから世界はどうなるんだろう。

2016年11月6日日曜日

クロスケーブル変換アダプター


PCとPC同士をつなぐには、本来はクロスケーブが必要だ。しかし、近年 AutoMDI/MDI-X が当たり前になり、LANボードやHUB側で自動的にスイッチで繋ぎ変えをしてくれるので、普通にストレートケーブルを使っても何の問題もなくなった。

そのため、ストレートケーブルに比べクロスケーブルの需要はどんどん少なくなり、良いクロスケーブルを選ぶことが難しくなってきた。

また、LANケーブは、USBケーブルと同じく、ケーブルによって、ノイズが乗ったり、歪んだり、くすんだ音になる。

よって、必然的にクロスケーブルではなく、質の良いストレートケーブルを使うことになる。音質の変化もそれほどない。

と思っていた。

ところが、himaさんからミヨシのクロスケーブル変換アダプターがとても良いと教えていただいたので、疑心暗鬼で取り寄せてみた。(ヨドバシで昨夜頼んだら翌日12時ごろに届いた。早い!)

早速使ってみると、なかなか良い。ケーブルの違いを吸収してくれる感じで、どのケーブルを使っても静かで落ち着いた安定した感じになる。ほおーっ!



JPLAYとLightmpdを使い分ける

現在の我が家のネットワークオーディオ構成図
メインPCにLANボードを2枚追加して3LANにし、以下のように使い分けている。

 eth3(192.168.11) - ホームネットワーク

 eth4(192.168.3) - LightMPD

 eth5(192.168.2) - JPLAY

これでネットワークが混乱することなく、JPLAYとLightMPDを使い分けられる。

USBだけは繋ぎ変えが必要。


2016年11月5日土曜日

kazooがlightmpd/upnpに対応!


Mac版がアップデートしていたのでWindows版もそろそろかろ思っていたら、今日、KAZOOを起動するとアップデートがあると表示あり。早速、アップデートしてみると、すんなり「LightMPD/UPNP」を認識してくれて、再生もできた。





2016年11月3日木曜日

UPnPアダプター apu1+Raspi2


  
UPnPアダプターのレンダラーをRaspi2に変えてみた。apu1と変わらぬいい感じ。

JPLAYをメインにしてからは、全く出番のないRaspiであったが、ようやく出番が来た。これが使えれば、apuを2台用意しなくてもいいのでより安上がりだ。