2017年3月25日土曜日

lightMPD/upnpgw(adapter) + lightMPD/upnpgw(player)を試す

lightMPD/upnpgwのrootfsがアップデートされたので、player側にもlightMPD/upnpgwを使い、polipoのカスケードとイーサーネット分離にチャレンジしてみました。

なお、mpdも"mpd-0.20.6rt-upnp"にアップデートしています。

その結果、これまで
・apu1cが時々起動しない
・alacで時々大きなノイズが出て再生ができなくなる
という問題があったのですが、両方とも解消されました。

メモ

ダウンロード
新しいrootfs
upnpgw-initrd-20170324.zip
※解凍してできたファイルを、lightMPD/upnpgwをインストールしたUSBメモリ(SDカード)のinitrd-ligtmpd-64に上書きします。

(追記: 20170406)
バグフィックス版がリリースされました。
upnpgw-initrd-20170406.zip
バグの内容は、
1. キャッシュの指定(ChunkHighMark,ChunkLowMark,ChunkCriticalMark)で4Gbyte以上の設定ができなかった。
2. 2Gbyte以上のファイルを再生するとpolipoが異常終了する。
(追記: 20170414)
バグフィックス版がリリースされました。
upnpgw-initrd-20170414.zip
修正されたバグの内容は、
1. データのサイズが2Gbyte以上あり、キャッシュに一度に入りきらない時にpolipoが異常終了してしまう。
2. 32bitシステムで旨く動作しない。
(追記: 20170418)
polipでchunkの処理を一部見直したものがリリースされました。
upnpgw-initrd-20170418.zip
今回の見直しは、apu以外で24bitのwavがノイズまみれになることへの対策なので、digififanさんが提供するapu用のバイナリを使っている範囲ではアップデートの必要は少なそうです。
(追記: 20170428)
バグフィックス版がリリースされました。
upnpgw-initrd-20170428.zip
一部のwavファイルにノイズが乗ることへの対策版ですが、apuではそもそもwavも正常に再生できるのでアップデートは必要ないかも。ただ、気のせいかも知れませんが、音が良くなったような。。




mpd-0.20.6rt-upnp
mpd-0.20.6rt-upnp.zip
※解凍すると、
mpd-0.20.6rt-upnp
mpd-02x.conf
という2つのファイルができるので、"mpd-0.20.6rt-upnp"をlightMPD/upnpgwをインストールしたUSBメモリ(SDカード)の/lightMPDにコピーするとともに、"mpd-02x.conf"を"mpd.conf"に上書きします。

接続
イーサネットを分離するので、adapter(apu2c4)とplayer(apu1c)を以下のとおり接続します。
                                adapter                      player
  HOME NET <---->   eth0
                                  eth1 <------------------>  eth0
                                  eth2 <------------------>  eth1
                                                                      eth2  未接続

設定ファイル
adapter(apu2c4)

lightmpd.conf
-------------------------------------------------------------------
#
#
[network]
        interface=eth0
        address=192.168.1.20
        gateway=192.168.1.1
        netmask=255.255.255.0
        nameserver=192.168.1.1
        domain=mydomain.jp

[ntp]
        server=ntp.nict.jp
        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

[cpuaffinity]
        type=0

[irqpriority]
        setdefault=no

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

[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 = 2048
        chunkLowMark = 512
        chunkCriticalMark = 1536
        objectHighMark = 2048
#
        dnsQueryIPv6 = no
        cacheIsShared = false
        dnsUseGethostbyname = yes
        disableConfiguration = true
        disableIndexing = true
        disableLocalInterface = true

[nat]
        masquerade=network:player,network:nasgate
        dnsforwarding=no
        ntpforwarding=no
        8023=10.0.0.2:23
-------------------------------------------------------------------

menu.lst
-------------------------------------------------------------------
#
#
default 0
timeout 0
#
serial --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=0 serial console
hiddenmenu
#
#
title lightMPD/upnpgw
root (hd0,0)

# upnpgw
kernel /boot/bzImage-4.8.6rt5-64 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=98304 rootfstype=romfs rootdelay=5 clocksource=hpet lightmpd.systype=apu2 lightmpd.bootdev=/dev/sda1

#  standalone
#kernel          /boot/bzImage-4.6.5rt10-64 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=98304 rootfstype=romfs rootdelay=5 clocksource=tsc idle=poll processor.max_cstate=1 isolcpus=1 nohz_full=1 rcu_nocbs=1 lightmpd.systype=apu2 lightmpd.bootdev=/dev/sda1

#
initrd /boot/initrd-lightmpd-64
-------------------------------------------------------------------

player(apu1c)

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=arakinet.jp

[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

[ntp]
server=ntp.nict.jp
ntpd=no
timezone=Asia/Tokyo

[mpd]
load_module=mpd-0.20.6rt-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"
buffer_time     "150000"
period_time     "37500"
}

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


###### decoder selector
# 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"
# }


#
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"
#audio_output_format "x4L4:24:2"

resampler {
   plugin              "soxr"
#   quality             "ultra high"
   quality             "very high"
#   quality             "high"
#   quality             "medium"
#   quality             "low"
#   quality             "quick"
#   passband_end        "0.98"
#   phase               "0"
   threads             "0"
}

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"
-------------------------------------------------------------------

menu.lst
-------------------------------------------------------------------
#
#
default 0
timeout 0
#
serial --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=0 serial console
hiddenmenu
#
#
title lightMPD/upnpgw
root (hd0,0)

# upnpgw
kernel /boot/bzImage-4.6.5rt10-64 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=98304 rootfstype=romfs rootdelay=5 clocksource=hpet lightmpd.systype=apu1 lightmpd.bootdev=LABEL=LMPDAPU

#  standalone
#kernel          /boot/bzImage-4.6.5rt10-64 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=98304 rootfstype=romfs rootdelay=5 clocksource=tsc idle=poll processor.max_cstate=1 isolcpus=1 nohz_full=1 rcu_nocbs=1 lightmpd.systype=apu1 lightmpd.bootdev=/dev/sda1

#
initrd /boot/initrd-lightmpd-64
-------------------------------------------------------------------

(追記)
PAUSE後、一定時間おいて再生を再開すると、次の曲にスキップする現象が報告されていますが、これはバグではなくpolipoの仕様だそうです。
lightmpd.confの
[polipo]
セクションに、
clientTimeout=3600s
のように記述することで、タイムアウトまでの時間を設定できるようです。

また、[polipo]セクションで設定するパラメータですが、digififanさんがご自身の掲示板で
chunkCriticalMarkはchunkHighMarkの2/3
chunkLowMarkはchunkHighMarkの1/3
と書かれていましたので、それに合わせて設定しています。

メモ
chunkHighMark           キャッシュの容量
chunkCriticalMark       キャッシュ内のデータがこれを超えた場合、読み込みを停止する
chunkLowMark            キャッシュ内のデータがこれ以下になった場合は読み込みを再開する


2017年3月18日土曜日

カロリーメイト

カロリーメイトとリトグリのコラボ。ツイートがいつまで残るのか?ですが、写真が良すぎるので記念に(^ω^)


2017年3月11日土曜日

Serendipity


Youtubeで人気の小学生ギタリスト、Li-sa-XちゃんのSerendipityを購入。
超絶テクに笑ってしまった ww

YouTubeに動画をアップしている凄腕のギターキッズは何人もいるんですが、指の動きに一番無駄がないのはLisaちゃんですね。素人の意見ですが(笑

音も、高音質というわけではないのですが、聴いているうちにどんどん気持ちがよくなってくる音ですね。

全部の曲がお気に入りになってしまいました。

2017年3月6日月曜日

松山行ってきました

松山市民会館 大ホールで行われた「リトグリライブツアー2017 ~Joyful Monster~」に参戦してきました(^^)


実は2月18日(土)の福岡市民会館にも参戦したのですが、何度聴いても良いです。今回も最高でした(^^)

ただし、席がこんな所だったので音がアレでちょっと残念。


リトグリのライブについては、音楽に詳しい方が読み応えのあるレポートを書いているので割愛します(^^;)が、バックバンドが変わって「黒さ」が増すとともに、特にバラードで、メンバーの曲への理解が深まったかなと思うところが随所にありました。

私にしては珍しく、写真OKの曲で写真を撮ってみたのですが、スマホで綺麗に撮るのは難しいですね(^^;)



ライブ終了後は感動を胸に一人焼き鳥で一杯やりました(笑)


翌朝市民会館の側を通るとりトラックがまだ停まっていました。


ライブも前半戦終了ということで、スタッフの皆さんも二番町あたりで羽を伸ばしたのでしょうね(^^)

ライブのMCで話題になった鯛飯を食べて、


思い出のライブハウスにちょこっと立ち寄って、


充実したライブ参戦ツアーでした。

次は大阪(^^)

2017年3月4日土曜日

player側にupnpgw を使う場合の設定

メモ


https://groups.google.com/forum/embed/?parenturl=https%3A%2F%2Fsites.google.com%2Fsite%2Fdigififan%2Fhome%2Flightmpdbbs&service=jotspot&ul=1&theme=default&place=forum%2Flightmpd&showpopout=true&showsearch=true#!topic/lightmpd/yov2E_2nfu0

2017年3月3日金曜日

Little Glee Monster Live in 武道館 ~はじまりのうた~

4月5日リリース「Little Glee Monster Live in 武道館 ~はじまりのうた~」の詳細が発表されました。

なんとアンコールまで全曲ノーカット。
武道館は参戦したものの絶望的にステージが見えない場所だったので、これでやっと当日のメンバーの姿を補完することができます(苦笑)

映像作品にはそれほど関心がない私ですが、これは例外。楽しみすぎます(^^)

どれだけ修正が入ってるかは、意地悪な楽しみ 笑

2017年3月1日水曜日

miniDSP DDRC-22D


2016年4月17日に「とても気になるプロダクツ」として取り上げていたminiDSPのDDRC-22D。買ってしまいました。

今から思えば円高の時に買っておけばよかったかな(^ω^;)

香港のminiDSP社に2月21日にオーダーして27日に届きました。

すぐに開封。英文マニュルと数時間格闘してなんとか28日の午前3時頃に一応設定完了。

スピーカーに無理がかからない範囲であれば、かなり自由に周波数特性を設定できるのですが、とりあえずデフォルトの広域に向かって僅かに下降する特性に。


音が出ていないはずの超低域を除くと100Hzに僅かなディップがあるだけで、綺麗に補正されています。

まだとりあえず設定ができただけですが、かなり「やってくれそう」な感じです。少なくともこの手の機器で気になる音質(特に解像度とか)の劣化は今の所感じません。

ロータリーノブがプラ製で質感が超チープだとか、パイロットランプが明るすぎるとか、電源SWが無いとか、全ての入力が24bit/96kHzに変換されてしまうとか、気になるポイントはいくつかあるのですが、値段を考えると我慢できる範囲かな、と思います。類似の製品と比較するとBEHRINGERのDEQ2496よりは値が張りますが、それ以外よりはかなり安価ですから。

しばらくは「格闘」を楽しめそうです(笑)