Page 2 / 31 :  ‹ Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Next › »

Current filter: »linux« (Click tag to exclude it or click a conjunction to switch them.)

Sep 06, 2020

Pulseaudioを使ってRaspberry piにAmazon Prime Musicを転送再生する(9月8日追記)

今回はPulseaudioを使ってみたという話だ。
実は、Pulseaudioで音楽データを転送するというのは数年前にも考えたことがあって、でもスキル不足で実現していなかった。
今回、何故そんなことをしたのかというのは省略。
運用のノウハウだけ記録しておこうと思う。

参考にしたサイトのアドレスは以下の通り。他にも見たけど忘れた。

https://www.alprovs.com/wordpress/?p=439
https://penkoba.hatenadiary.org/entry/20130809/1376064438
http://bluewidz.blogspot.com/2018/04/oslinux-virualboxdebian-8.html
https://www.it-swarm.dev/ja/pulseaudio/

用意したもの。

  1. 普段使いのノートPC、Compaq 6730b。
    OSはFedora。既にPulseaudioはインストールされていて、クライアントとして機能させる。
    FirefoxでAmazon Prime Musicにログインし、音声データをPulseaudioサーバーに送信する。

  2. Raspberry Pi2。
    OSはpiCore9.0.3。Pulseaudioサーバーとして動かす。Amazon Prime Musicのデータを受けて、usb dacに送る。

  3. usb dacはRATOCのRAL-24192ut1を使う。
    RCA出力をオーディオテクニカのAT-SP150 bkで受ける。

こんなイメージ。

Pulseaudio

まずサーバーとなるRaspberry pi2をセッティングしていく。
ダウンロードしたpiCore9.0.3をmicroSDカードに書き込む。今回はusb dacしか使わないので「config.txt」を下記のように設定して、dtparam=i2c、spi、i2s、本体のオーディオ出力の使用を止めている。そうすることでalsaが認識するオーディオ出力がusb dacに固定されるメリットもある。

# Enable peripheral buses
dtparam=i2c=off,spi=off,i2s=off

# Enable onboard audio
dtparam=audio=off

カードをRaspberry Pi2に刺して起動。
sshでログインし「filetool.sh -b」を打つ。「sudo fdisk -u /dev/mmcblk0」でパーティションを拡張。リブート。
再ログインして「sudo resize2fs /dev/mmcblk0p2」で拡張したパーティションを固定。
vi /opt/.filetool.lst で「usr/local/etc」を追加。
filetool.sh -bで保存、で準備完了。
このあたり詳細は過去のエントリーで繰り返し書いているので省略。

pulseaudioとalsaをインストール。
最近は「tce」コマンドから項目を選択してインストールすることが増えた。
pulseaudio.tczのインストールとalsa-utils.tczのインストールの操作だけで完成する。実際にはこの2項目の他にも必要なtczが同時に多数インストールされる。

2021.04.06. 追記。alsa-tczもインストール操作したほうが良さそう?
alsa-utilsだけでalsaもインストールされると思ったんだけど、先にalsa-utilsを入れたらインストールされなかった。要注意ということで。

tceコマンドで表示されるpulseaudioの説明から引用。

howto:
alsa needs to be working for whatever sound device you have.
Create dbus entry for booting into X
$ echo 'dbus-launch --sh-syntax --exit-with-session' > ~/.X.d/dbus
$ /usr/local/etc/init.d/dbus status [Check dbus is running]
If not running, start dbus with
$ sudo /usr/local/etc/init.d/dbus start
If dbus was not, initially running, add a command to start it next reboot
$ sudo echo '/usr/local/etc/init.d/dbus start' >> /opt/bootlocal.sh

exit to console
startx
$ pulseaudio -vv [to test]
When it is running correctly
echo "start-pulseaudio-x11" > ~/.X.d/pulseaudio

if a bluetooth sound devices is paired and configured, pulseaudio should find it automatically if the daemon is running

dbusが動いていないとpulseaudioは動かないらしい。
/usr/local/etc/init.d/dbus status で確認したところ、動いていない。

sudo /usr/local/etc/init.d/dbus start で動く。
下記コマンドで、OS起動時にdbusが動くようにbootlocal.shファイルを編集、設定。
sudo echo '/usr/local/etc/init.d/dbus start' >> /opt/bootlocal.sh

今回、~/.X.d/dbusの設定はしていないが、問題ないようだ。

次にpulseaudioの設定。

$ mkdir .pulse
$ cp /usr/local/etc/pulse/default.pa ~/.pulse
$ vi .pulse/default.pa

#load-module module-native-protocol-tcp
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24

ホームに.pulseディレクトリを作成。
ここに設定ファイルのdefault.paをコピーする。
この設定ファイルの中の「load-module module-native-protocol-tcp」に、上記のように記述を書き加えることで、ネットワークからのデータを受けることが出来るようになる。
192.168.1.0/24の部分は、各自のネットワーク環境に合わせる。

一応、alsaの状況を確認。「aplay -l」でusb接続しているDACが確認出来たら問題ないだろう。
filetool.sh -bで、dbusとpulseaudioの設定を保存。
これでサーバー完成。
デーモンとしてpulseaudioを起動するときはsshから「pulseaudio -D」、終了には「pulseaudio -k」。

次に、クライアント側の6730bを設定。設定というか、使い方だ。
先ずターミナルソフトでコマンドを打つ。

$ export PULSE_SERVER=192.168.1.xx

これで、このターミナルウィンドウから起動させるプロセスが、赤字のアドレスのpulseaudioサーバーに音声データを伝送するようになる。つまり、赤字の部分はRaspberry Pi2のipアドレスということだ。
同じターミナルウィンドウからコマンドを打ってfirefoxを起動させる。

$ firefox

firefoxが起動したら、amazonにログインし、prime musicの音源を鳴らせばいい。このfirefoxが出力する音声はlanを通じてRaspberry Pi2に転送される。うまくいけばusb dacから音が出る。

注意点としては、ネットワークが遅いと音がぶちぶち途切れる。うちでは6730bの無線lanが遅すぎて音楽にならず、有線100Base-Tでつないだら問題なく鳴るようになった。
ちなみにRaspberry Pi2の出力フォーマットを確認したところs32le 44100で、そこそこのデータ量がある。6730bのネットワーク出力をモニターしてみたら、400KiB/s前後でデータ転送されている。
youtubeの音源だとどうなるか確かめたら、s32le 48000。サイトや音源によって変化するようだ。
DACをRAL-2496ut1に換えると、s16leにフォーマットが変わる。こういう調整はRaspberry Pi2がやってくれているみたい。

あと、クライアントからの信号が止まって暫くしたらサーバーのpulseaudioは自動的にシャットダウンするようで、使う直前にsshでログインして起動しないといけない。
どこかで何か設定できるんだろうけど、確認していない。

さて、2496ut1の光デジタル出力をメインシステムにつないでみたのだけど、問題が。
直接つなぐと音量が大きすぎる。
というか、うちのアンプのボリュームが、普通のデジタル出力からみたら上げ過ぎなのだ。
普段はmpd/libsamplerateで768/32にアップサンプリングしデジタルボリュームで50%前後に絞って出力しているので、逆にアンプのボリュームは上げている。ここに普通のデジタル出力から入力したら、大音量になる。
Firefox上のPrime Musicにもボリュームがあるのだけど、これを下限ギリギリまで下げることになる。モニター画面上、ミリ単位の調節になって使いにくい。

pulseaudioサーバーの音量を下げられるコマンドもあるらしいが、どうもうまくいかない。うちではalsaが動かなくなって音が出なくなった。ここで考えてみたら、s16le 44100のフォーマットで、Raspberry Pi2でデジタルで音量調節というのは、音質に配慮するなら使わないほうがいい手法ではないのか、と思い至る。
そこで、あんまりスマートじゃないけど、メインシステムにつなぐのにはOdeon-Liteを使うことにした。ボリュームがついているので使いやすい音量に設定できる。Odeon-Liteにはusb入力がないので、2496ut1をDDコンバーターとして使う。

突っ込んだ音質評価はしていないが、Prime Musicの音源もそこそこの音質で聞けると思う。

8日、追記。
pulseaudioサーバーの音量を下げるコマンドについて書いておく。
参考にしたサイトは下記。
http://masahiroshiomi.jp/blog/pulseaudio/286/
まず、デバイスの状況を調べるコマンド。

pactl list sinks

いろんな項目について詳細な情報を表示してくれる。
Latency: 79996 usec, configured 75012 usec
よく見たら、こんな記載があったりする。あんまりいい数値とはいえないのかな。どこのLatency?とか、よく分かっていない。

音量を調整するコマンドは下記の通り。

pactl set-sink-volume 0 50%

0というのはデバイスの番号じゃないかと思う。「50%」のところで音量を調整する。
調整後に「pactl list sinks」で確認すると下記のように表示される。

Volume: front-left: 32768 /  50% / -18.06 dB,   front-right: 32768 /  50% / -18.06 dB

音声再生中でもコマンドを打ったら速やかに音量を変更できた。
だけど、音質はどうかといえば、結局は「100%」にしてOdeon-liteやSM-SX100のボリュームを調整したほうが良いように聞こえた。

更に追記。
結局、Odeon-liteは外してしまった。
2496ut1からの光出力をSM-SX100に直に入力することにした。セレクターとボリュームを弄るだけでいいんだから簡単だ。
Brooklyn Ampにはその手は使えないので、他の方法を考えないといけない。

2021年1月1日、追記。「pactl set-sink-volume」がどんな感じに効くのかメモしておく。
pulseaudioの扱いにもだいぶ慣れて、ストリーミング用の日常音源として定着した。Amazon PrimeではなくDeezerを使っている。

pactl set-sink-volume 0 100%
pactl list sinks
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB

pactl set-sink-volume 0 95%
Volume: front-left: 62259 /  95% / -1.34 dB,   front-right: 62259 /  95% / -1.34 dB
Volume: front-left: 58982 /  90% / -2.75 dB,   front-right: 58982 /  90% / -2.75 dB
Volume: front-left: 55705 /  85% / -4.24 dB,   front-right: 55705 /  85% / -4.24 dB
Volume: front-left: 52428 /  80% / -5.81 dB,   front-right: 52428 /  80% / -5.81 dB
Volume: front-left: 51773 /  79% / -6.14 dB,   front-right: 51773 /  79% / -6.14 dB
Volume: front-left: 49152 /  75% / -7.50 dB,   front-right: 49152 /  75% / -7.50 dB
Volume: front-left: 45875 /  70% / -9.29 dB,   front-right: 45875 /  70% / -9.29 dB


pactl set-sink-volume 0 65536
pactl list sinks
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB

pactl set-sink-volume 0 61440
Volume: front-left: 61440 /  94% / -1.68 dB,   front-right: 61440 /  94% / -1.68 dB
Volume: front-left: 57344 /  88% / -3.48 dB,   front-right: 57344 /  88% / -3.48 dB
Volume: front-left: 53248 /  81% / -5.41 dB,   front-right: 53248 /  81% / -5.41 dB
Volume: front-left: 49152 /  75% / -7.50 dB,   front-right: 49152 /  75% / -7.50 dB
Volume: front-left: 45056 /  69% / -9.76 dB,   front-right: 45056 /  69% / -9.76 dB
Volume: front-left: 40960 /  63% / -12.25 dB,   front-right: 40960 /  63% / -12.25 dB
Volume: front-left: 36864 /  56% / -14.99 dB,   front-right: 36864 /  56% / -14.99 dB
Volume: front-left: 32768 /  50% / -18.06 dB,   front-right: 32768 /  50% / -18.06 dB

%、整数での指定で設定するとこんな感じ。
うちでは100%以上の音量に上げることは無いので、下げる指定のみ試している。
整数での指定は、16bit=2の16乗=65536、そこから4096ずつ引いていった数値。8回引いたら32768で50%、15bitの情報量に圧縮?になるようで、相応の音質劣化がある。
聴感上、70%以上で使いたい感じ?

不思議なのは、pulseaudioのデジタルボリュームを使うよりも、Firefox、Webプレーヤーのボリュームを使うほうがまだ劣化が少ないような気がすることだ。mpdのボリュームを使っているときにも意外に劣化が少ないと感じるのだけど、それと似たような感触。pulseaudioのボリュームで音量を落とすより、劣化が目立たないように感じる。
全く理由は分からないが。気のせいかもしれないのだけど。

小数点付きの数字で指定だと、以下のような感じ。
音量2.0倍で+6dB、音量2分の1(0.5倍)で-6dBということで概ね相関している。
dBでの指定も出来るんだけど、%と整数による指定はデジタルな指定で、小数点付き数値とdBでの指定は音量によるものということらしい。

pactl set-sink-volume 0 3.0
Volume: front-left: 94519 / 144% / 9.54 dB,   front-right: 94519 / 144% / 9.54 dB

pactl set-sink-volume 0 2.0
front-left: 82570 / 126% / 6.02 dB,   front-right: 82570 / 126% / 6.02 dB

pactl set-sink-volume 0 1.5
Volume: front-left: 75020 / 114% / 3.52 dB,   front-right: 75020 / 114% / 3.52 dB

pactl set-sink-volume 0 1.25
Volume: front-left: 70597 / 108% / 1.94 dB,   front-right: 70597 / 108% / 1.94 dB

pactl set-sink-volume 0 1.0
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB

pactl set-sink-volume 0 0.75
Volume: front-left: 59543 /  91% / -2.50 dB,   front-right: 59543 /  91% / -2.50 dB

pactl set-sink-volume 0 0.5
Volume: front-left: 52016 /  79% / -6.02 dB,   front-right: 52016 /  79% / -6.02 dB

pactl set-sink-volume 0 0.33
Volume: front-left: 45288 /  69% / -9.63 dB,   front-right: 45288 /  69% / -9.63 dB

dB指定だと、ちょっと扱いが他の指定方法と違ってくる。

pactl set-sink-volume 0 3.0dB
Volume: front-left: 73533 / 112% / 3.00 dB,   front-right: 73533 / 112% / 3.00 dB

pactl set-sink-volume 0 -3.0dB
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB

pactl set-sink-volume 0 -3dB
Volume: front-left: 58409 /  89% / -3.00 dB,   front-right: 58409 /  89% / -3.00 dB

pactl set-sink-volume 0 +3dB
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB

指定した値の前に「+ -」を付けると「増減」の指定になる。
つまり「3.0dB」と指定したら「3.0dBの音量」に変更する指定だけど、「+3dB」「-1.5dB」みたいな指定をすると、現在の数値から増減指定になるということだ。

実は「+ -」で「増減」を指定するのは%、整数、小数点付き数字での指定でも出来る。

pactl set-sink-volume 0 -25%
Volume: front-left: 49152 /  75% / -7.50 dB,   front-right: 49152 /  75% / -7.50 dB
pactl set-sink-volume 0 -25%
Volume: front-left: 32768 /  50% / -18.06 dB,   front-right: 32768 /  50% / -18.06 dB
pactl set-sink-volume 0 +50%
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB


pactl set-sink-volume 0 -1024
Volume: front-left: 64512 /  98% / -0.41 dB,   front-right: 64512 /  98% / -0.41 dB
pactl set-sink-volume 0 -1024
Volume: front-left: 63488 /  97% / -0.83 dB,   front-right: 63488 /  97% / -0.83 dB
pactl set-sink-volume 0 -2048
Volume: front-left: 61440 /  94% / -1.68 dB,   front-right: 61440 /  94% / -1.68 dB
pactl set-sink-volume 0 +4096
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB


pactl set-sink-volume 0 +1.0
Volume: front-left: 82570 / 126% / 6.02 dB,   front-right: 82570 / 126% / 6.02 dB
pactl set-sink-volume 0 +1.0
Volume: front-left: 104031 / 159% / 12.04 dB,   front-right: 104031 / 159% / 12.04 dB
pactl set-sink-volume 0 -0.5
Volume: front-left: 82570 / 126% / 6.02 dB,   front-right: 82570 / 126% / 6.02 dB
pactl set-sink-volume 0 -0.5
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB

こんな感じ。

Posted at 09:46 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Oct 10, 2019

apu2d4でTiny CorePure64 10.1を動かす

今回はオーディオの話は出てこない。
何でオーディオのカテゴリにアップするのかといえば、オーディオに使うハードの話だから。
ここらはちょっと迷うとこだ。

うちではTiny Core Linux 7.2(x86-64)でapu2c4を動かし、音楽サーバーとして運用しているんだけど、なぜか上位バージョンのTiny Coreは使えずに来ていた。なんとか使えるようにしたんだけど、その辺りの顛末について備忘録として書いておく。
ちなみに一連の試行錯誤はサブ機として入手したapu2d4で行った。

使えない、とはどういうことかというと、Compaq 6730bを使って、SDカードに「TinyCorePure64-10.1」をインストールして(手法は過去のエントリー「apu2c4で768kHzへのアップサンプリングに取り組む」のとおり)、それをapu2に刺し起動させてsshでログインして操作したいのに、ipアドレスが割り振られないので、できない、という意味だ。
v7.2は問題なく使える。
それ以上のバージョンでは使えない。x86、x86-64両方とものようだ。
Compaq 6730b、Dell Inspiron11で動かす分には問題ないSDカードであるにも関わらず、apu2に刺して起動したときにはipアドレスが振られない。ということはsshでログインできないしpingすら打ちようがなく、どういう状態なのかも全く分からない。
LEDが光っているので、通電はしているようだけど。

では、問題がなく動いているv7.2の「vmlinuz」と「core.gz」を、v10.1のものに置き換えてみるのはどうか。簡単なバージョンアップの手法としてTiny Core Linuxのサイトにも挙げられている手法だ。
Compaq 6730b、Dell Inspiron11は、これで動く。
しかしapu2で起動したら、やはりipアドレスが振られない。

あれこれ試して、もう仕方がないので、シリアル接続を試みることにした。
シリアル接続って何?という感じなんですが。
シリアルケーブルというものを使ってapu2を他のコンピューターに直接継いで操作する、ということだ。
使うケーブルはこんな感じ(これはamazonの写真)。

https://www.amazon.co.jp/gp/product/B01N0F91GH/

シリアルケーブル

片方はusb端子。もう片方はRS-232Cという規格の端子。
usbの方を、操作に使うマシンに刺す。
RS-232Cの方をapu2に接続する。
シリアル通信ソフトを起動したら、データやコマンドの送受信が可能になる。
おおざっぱに言うと、こんな感じ。

参考にしたサイトは下記。他にもあちこち見たけど忘れた。
http://flac.aki.gs/bony/?p=3155
https://netwiz.jp/linux-usb-serial/
http://enotyama.hatenablog.com/entry/2014/03/03/232305
https://qiita.com/miyabisun/items/73bb2e0b75c30fba9f3c

まず、ケーブルの入手。USBシリアルケーブルでネットショップ上を検索して入手。USB-RS232C変換ケーブルというらしい。「RS232」と「RS232C」があって何が違うのか迷ったりしたが、どうやら基本的に同じと思っていいらしい。クロスケーブルかどうかの表記かと思ったら、そうではない、らしい。
apu2に使えるのはクロスケーブルで「null-modem cable」と言われる物。なかなか分かりにくいんだけど。

https://pcengines.ch/howto.htm#serialconsole

The most common mistake people make is not using a null-modem cable: If you have a multimeter, check that the pins 2 and 3 are crossed. Do NOT use gender changers!
The default baud rate for alix boards is 38400,8n1 and for apu boards 115200,8n1.

なんか、シリアルケーブルの規格は複数あって、実際のところ、継いでみて使えるかどうかはやってみないと分からないことがあるらしい。詳しくはwikipediaあたりを読んで欲しい。読んで僕はちょっと驚いた。

SDカードにインストールしたTiny Core10.1に設定変更書き込み。

sudo vi /etc/securetty

# For people with serial port consoles
ttyS0
sudo vi /sbin/autologin

exec /sbin/getty 115200 ttyS0
#exec /sbin/getty 38400 tty1
sudo vi /etc/inittab

ttyS0::respawn:/sbin/getty -nl /sbin/autologin 115200 ttyS0
#tty1::respawn:/sbin/getty -nl /sbin/autologin 38400 tty1
sudo vi /opt/bootsync.sh

echo “booting” > /etc/sysconfig/noautologin

これでヘッドレス化。シリアル通信できるはず。

操作に使うPCを準備する。うちでは6730bノートPC、OSはFedora。
シリアル通信に使うソフトは、とりあえず参考にしたサイトに倣い「cu」にした。
最初からは入ってないので「dnf」でインストール。
シリアルケーブルのusb端子を刺す。
ここで「dmesg」コマンドを打つと、仕組みはよく分からないけど、シリアルケーブルがFedoraに認識されていると表示されるので確認。かなり大量の行数が表示されて、下の方にちょこっと表示されるので分かりにくいが。

[1864782.993734] usb 6-1: pl2303 converter now attached to ttyUSB0

こんな感じ。スタンバイできてるということかな。

RS-232Cの方をapu2に接続し、apu2の電源を入れる。
「cu -s 115200 -l /dev/ttyUSB0」とコマンドを打つが「cu: ttyUSB0: Line in use」というエラー表示で繋がらない。
誰が使ってるんだ?

これは最初は良く分からなかったんだけど、結局、表示されてないけど「Permission denied」で蹴られているということらしい。
「sudo chmod 666 /dev/ttyUSB0」と打ってパーミッションを変更。
改めて「cu -s 115200 -l /dev/ttyUSB0」。
これで接続成功した。

なんだか大雑把な流れの記述なんだけど、シリアルケーブルというのはapu2が起動していようがいまいが関係なく何時に刺してもよくて、刺して「cu」コマンドを打った時点でやり取りされているデータを字面に表示するようだ。
ある意味、緊急時には融通が利いてありがたい通信手段なのだろう。

v10.1でapu2を起動し、シリアル接続したら下記のような字面が表示された。

[ab@fedora2 ~]$ cu -s 115200 -l /dev/ttyUSB0
Connected.

「Connected.」が表示されて止まるので、enterキーを叩く。
すると「box login:」が表示される。
「tc」でログイン。

Core Linux
box login: tc
Password: 
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

tc@box:~$ 

ちゃんとTiny Core 10.1は起動していることがわかった。
「ifconfig」と打つと下記の表示。

tc@box:~$ ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

「eth0」がない、、、
apu2にはイーサネットポートが3つあるので、eth0、eth1、eth2が表示されるはず。それらが表示されない。つまり有線LANが機能しない状態で起動している。「ping 127.0.0.1」と打つと応答が帰ってくる。ということは、TCP/IP自体は機能している。
なるほどだ、、、

ハードは認識できてるのか?
lspciを使えば分かるみたいだがインストールされていない。
「pciutils」というパッケージをインストールしたら使えるらしい。
6730bにSDカードを刺し替えて、家庭内LANからネットに継がる環境でインストールする。
インストールできたら、apu2に刺し直して起動して、シリアル接続から「lspci」と打ち込む。

tc@box:~$ lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 1566
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 156b
( 略 )
01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

「Ethernet controller: Intel Corporation I210 Gigabit Network Connection」と表示。
これは問題なく動いているTiny CorePure64-7.2と同じ結果だ。
つまり、イーサネットのデバイスは10.1でも認識されている。

ドライバはどうなっているのかな、、、

tc@box:~$ ls /lib/modules/4.2.9-tinycore64/kernel/drivers/net/ethernet
3com/          cadence/       fealnx.ko.gz   natsemi/       sis/
8390/          cavium/        fujitsu/       neterion/      smsc/
adaptec/       chelsio/       hp/            nvidia/        stmicro/
agere/         cisco/         icplus/        packetengines/ sun/
alteon/        dec/           intel/         qlogic/        tehuti/
altera/        dlink/         jme.ko.gz      rdc/           ti/
amd/           dnet.ko.gz     marvell/       realtek/       via/
atheros/       ec_bhf.ko.gz   mellanox/      samsung/       wiznet/
broadcom/      emulex/        micrel/        sfc/           xircom/
brocade/       ethoc.ko.gz    myricom/       silan/
tc@box:~$
tc@box:/$ ls /lib/modules/4.19.10-tinycore64/kernel/drivers/net/ethernet
3com/          broadcom/      fealnx.ko.gz   netronome/     stmicro/
8390/          brocade/       fujitsu/       nvidia/        sun/
adaptec/       cadence/       hp/            packetengines/ synopsys/
agere/         cavium/        huawei/        qlogic/        tehuti/
alacritech/    chelsio/       intel/         qualcomm/      ti/
alteon/        cisco/         jme.ko.gz      rdc/           via/
altera/        dec/           marvell/       realtek/       wiznet/
amazon/        dlink/         mellanox/      samsung/       xircom/
amd/           dnet.ko.gz     micrel/        sfc/
aquantia/      ec_bhf.ko.gz   myricom/       silan/
atheros/       emulex/        natsemi/       sis/
aurora/        ethoc.ko.gz    neterion/      smsc/
tc@box:/$

7.2と10.1、「intel」は両方に入っている。

もう少し奥に。

tc@box:~$ ls /lib/modules/4.2.9-tinycore64/kernel/drivers/net/ethernet/intel
e100.ko.gz  e1000e/     i40e/       igb/        ixgb/       ixgbevf/
e1000/      fm10k/      i40evf/     igbvf/      ixgbe/
tc@box:~$
tc@box:/$ ls /lib/modules/4.19.10-tinycore64/kernel/drivers/net/ethernet/intel
e100.ko.gz  e1000e/     i40e/       ice/        igbvf/      ixgbe/
e1000/      fm10k/      i40evf/     igb/        ixgb/       ixgbevf/
tc@box:/$

もう少し調べて、、、

tc@box:~$ lspci -vvv
( 略 )
01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
	Subsystem: Intel Corporation Device 0000
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- 
	Kernel driver in use: igb
( 略 )
tc@box:~$ lspci -vvv
( 略 )
01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
	Subsystem: Intel Corporation Device 0000
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- 
( 略 )

7.2では「Kernel driver in use: igb」と表示される。
10.1では表示されない。「Control: BusMaster-」とはどういうことか?
ともあれ、igbが機能してないらしいのは分かった。

tc@box:~$ modinfo igb
( 略 )
depends:        ptp,i2c-algo-bit
vermagic:       4.2.9-tinycore64 SMP mod_unload 
tc@box:/$ modinfo igb
( 略 )
depends:        i2c-algo-bit
intree:         Y
vermagic:       4.19.10-tinycore64 SMP mod_unload 

10.1はmodinfo igbの「depends」に「ptp」が表示されない。どうなんかね、これは。
vermagicには、カーネルバージョンと主要なConfigオプションが記載されるという。
SMP mod_unloadってどういうことかな、、、

「igb」でtiny coreのフォーラムを検索してみる。

Topic: modprobe: can't load module igb (kernel/drivers/net/ethernet/intel/igb/igb.ko.gz
http://forum.tinycorelinux.net/index.php/topic,22744.msg142319.html

Is the i2c-KERNEL extension loaded?

$ tce-load -i i2c-KERNEL

Topic: Network Ports are not detected - IntelR I210IT GbE LAN
http://forum.tinycorelinux.net/index.php/topic,18469.0.html

I took a shot in the dark and appended the file name to the URL like this: http://tinycorelinux.net/6.x/x86/tcz/i2c-3.16.6-tinycore.tcz and pasted it into my browser; it worked!
I put the file in /mnt/sda1/tce/optional.
I edited onboot.lst and put i2c-3.16.6-tinycore.tcz right after glib2.tcz (about 1/3 of the way down the file).
Now it works!

なんかいきなり参考になりそうな事が書いてあるじゃないの。

6730bにSDカードを刺し替えて起動、「tce」でi2cを検索。
「i2c-4.19.10-tinycore64.tcz」があるので、これをインストール。
SDカードをapu2に戻して起動。
「ifconfig」を打つ。

tc@box:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0D:B9:50:86:58  
          inet addr:192.168.1.89  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:88 errors:0 dropped:4 overruns:0 frame:0
          TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:35816 (34.9 KiB)  TX bytes:3813 (3.7 KiB)
          Memory:fe600000-fe61ffff 

eth1      Link encap:Ethernet  HWaddr 00:0D:B9:50:86:59  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Memory:fe700000-fe71ffff 

eth2      Link encap:Ethernet  HWaddr 00:0D:B9:50:86:5A  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Memory:fe800000-fe81ffff 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:140 (140.0 B)  TX bytes:140 (140.0 B)

tc@box:~$ 

行けました! ipアドレスが振られている!
いやー、長かったなあ、、、sshで接続して操作するのも可能です。
これで多分、将来的なalsaやmpdのバージョンアップにも対応できます。

このエントリー書き上げてから気付く。 「serial experiments Lain」のserialって、これのことだったのね、多分。

シリアル接続からのログアウトの方法を書き忘れていた。

tc@box:~$ exit

Core Linux
box login: ~[fedora2].
Disconnected.
[ab@fedora2 ~]$ 

tcでログインしている状態から「exit」。
「box login:」が表示された状態になるので「~」、[fedora2]が表示されるので「.」を打つ。これで、Disconnected.

下記は、シリアル接続しているpcにsshで他からログインして操作している場合(ややこしい)。

tc@box:~$ exit

Core Linux
box login: Connection to 192.168.1.64 closed.
[ab@fedora1 ~]$ 

tcでログインしている状態から「exit」。
「box login:」が表示された状態になるので、「~」続いて「.」と打つ。
これで、Connection to 192.168.1.64 closed.
つまり、ssh接続もログアウトする。

ここらは環境によって表示が違うかも。

Posted at 17:27 in audio_diary | WriteBacks (0) | Edit Tagged as: , , ,

Jan 03, 2019

HP Compaq 6730bでFedora 28以上を使うときの注意点

うちの主力パソコンはCompaq 6730bなんだけど(そこそこ古い機種だね、、)、Fedoraをインストールして使っている。
これがFedora28以降にバージョンアップできなくなった。
クリーンインストールしても「TPM Error 2」と表示されて起動しない。 外付けHDDからだったら起動できるんだけど、そんなのでは扱いにくい。
無理になんとかしようとしたら、どこをどう間違えたやら内蔵HDDから起動できなくなったり。

仕方がないので27のままで使っていた。
どうしたものかと思っていたんだけど、対策がアップされていたのでメモしておく。

Fedora 28 Workstation Install Guide - Comment Page: 1
https://www.if-not-true-then-false.com/2018/fedora-28-workstation-install-guide/comment-page-1/

Andre Gompel
27th July 2018, 3:49 am

4) Post-install boor exhibited a GRUB bug (TPM error, etc…), so you need to disable the TPM to be able to use F28 !
On HP Notebooks, the TPM menu is grayed: enable the BIOS password, to enable it and be able to disable TPM !

上記引用の通り、BIOSにパスワードを設定したらTPMによるOS管理をしないように設定できるようになる。
一旦、管理しないように設定したら、BIOSのパスワードなしに戻しても構わないみたい。
これで「TPM Error 2」とか表示されなくなり、内蔵HDDにFedora28以降をインストールできた。というか、もはや28の季節は過ぎていて27から29へのアップデートをしたんだけど。

なんか、問題が。「tracker-store」というのがCPUを100%消費するのだ。ファンが唸りっぱなしになっている。
参考にさせていただいたサイトを列記。

CentOS7/SL7でtrackerを起動しないようにする方法
http://carpediemjournal.blog.fc2.com/blog-entry-39.html

tracker-storeが暴走
http://benzaiten.dyndns.org/roller/ugya/entry/tracker_store%E3%81%8C%E6%9A%B4%E8%B5%B0

GNOMEのtrackerによってCPU負荷が高くなりPCが重くなる時の対処法
https://www.archlinux.site/2018/07/gnometrackercpupc.html

こんなの27まではいなかったぞ。
と思ったけど、確認したら27でもインストールはされてるようだ。どういう事情で挙動が変わったのかね、、、
27のtrackerのキャッシュは35.9MBしかない。不調にした6730bに代わって中古購入した機体で、運用を始めてから半月も経っていない。
片や、29にアップデートしたばかりのマシンは数年に渡り使っていてtrackerのキャッシュは1GB。CPU100%でファン回りっぱなしが続いている。どうなってるんだろうと見ているうちに、キャッシュが増えていないのに気付いた。
このtracker-storeは何をしてるんだろうか。

上記のサイトを参考に「journalctl -xb」コマンドを打つ。
これは起動時からのログを表示してくれるらしい。下記のようなエラーが繰り返されている。
起動プロセスが終わっていないのか?

-- The start-up result is done.
 1月 03 16:40:46 fedora2 tracker-store[2394]: Cannot initialize database: error in view fts_view: no such table: main.nie:InformationElement_nie:keyword_TEMP (s>
 1月 03 16:40:46 fedora2 systemd[1481]: tracker-store.service: Main process exited, code=exited, status=1/FAILURE
 1月 03 16:40:46 fedora2 systemd[1481]: tracker-store.service: Failed with result 'exit-code'.
 1月 03 16:40:46 fedora2 systemd[1481]: tracker-store.service: Service RestartSec=100ms expired, scheduling restart.
 1月 03 16:40:46 fedora2 systemd[1481]: tracker-store.service: Scheduled restart job, restart counter is at 25.
-- Subject: Automatic restarting of a unit has been scheduled
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel

「Cannot initialize database」って、dbファイルは1GBのがそのままあるよ? これを初期化できないってか?
ということは、、、これ捨てたらいいの?
というわけで、、、「~/.cashe/tracker」ディレクトリ内のファイル10個ばかりあるのをまとめて「rm」で削除。
たちまち、ファンが静かになった、、、
リブートしてみる、、、
tracker-storeとtracker-extractが動いているが、CPU消費は大きくないしファンもそんなに激しくは回らない。
そのうち600MB弱のdbファイル、その他諸々ファイルが出来て、パソコンは静かになった。

以上、備忘録まで。

Posted at 18:55 in pc | WriteBacks (0) | Edit Tagged as: , , ,

Dec 25, 2018

Compaq 6730bとTiny coreでアップサンプリング (768kHzアップサンプリングの音について)

うちにはhp社のCompaq 6730bが4台ある。先日までは3台だったが、増えて4台だ。
windows7が1台、Fedora27が2台。Tiny coreでアップサンプリングを試してるのが1台。同じ機種ばかり何台もあるのは、その方が機種固有の知識が少なくて済むということと、どれかが故障した時に簡単に代替が効くからだ。
今回、数が増えたのは故障のせいで、中古パソコン屋から新しいのが来るまでの間、思惑通りに他の機体で代替できたので、大きく困ることはなかった。

そんな6730bなんだけど、Fedora28をインストールしようとしたら上手くいかずに諦めたことがある。それ以降、どうもその機体が不調つづきで、今回、29をインストールしようとしても出来ず、というか、インストールしても起動せず「TPM Error 2」と表示されて、先に進まない。ついにはエラー表示もまともに出来なくなった。
諦めて、27に戻そうとしたら、内蔵HDDからは起動できなくなっていた。usbからの起動は可能なんだけど。
こんなことってあるのか?と調べたら、OSインストールでBIOSが壊れることがあるんだな。

Ubuntu 17.10にBIOSを「破壊」するバグが発覚!原因は?対応策はあるのか?問題の詳細と現状まとめ | Linux Fan
https://linuxfan.info/ubuntu-17-10-corrupting-bios

Insyde Software社のUEFIはHPでも採用してるようだけど、6730bがそうなのかはよく分からない。
fedoraをバージョンアップ出来ないのは、うちだけじゃないらしい。

Can't install F28 on my laptop, F27 installation works
https://forums.fedoraforum.org/showthread.php?318093-Can-t-install-F28-on-my-laptop-F27-installation-works

Bug 1582810 - F28 Workstation, GRUB loader bug : After booting in Windows, then Linux, there is a "TPM Error 2"
https://bugzilla.redhat.com/show_bug.cgi?id=1582810

そんなわけで、普通には使えない6730bが1台できたというわけだ。

上記の件、対策があったのでエントリーを上げた。

HP Compaq 6730bでFedora 28以上を使うときの注意点
http://blown-lei.net/endive/blosxom.cgi/pc/20190103a.html

内蔵HDDから起動できないというのは、BIOSをインストールしたら治るのかね?、、、
usbから起動できるならTiny Core Linuxは使える。日常的な使用に組み込み向きのTiny Coreはきついかな、、、
でも、音楽サーバーにはなるんじゃね?
apu2c4(今はもう売ってないんだね。apu2d4になっている)は安定して運用継続中なんだけど、他の機械でどうなのか試してみるのは面白そうだ。apuと同じCorePure64-7.2とmpd-0.19.19をインストールして、768kHzへのアップサンプリングを較べてみた。

スペックだけど、
apu2c4は、AMD GX-412TC(1GHzクアッドコア)に、メモリはDDR3-1333、4GBで固定。
6730bは、Intel Core 2Duo P8600 (2.40GHzデュアルコア)に、メモリは800MHz DDR2、1〜8GBで変えることができる。
メモリはapu2c4のほうが速い。
CPUの差は知識もないので分からない。6730bのほうが上等と思っていいんだろうか。
今回、6730bのメモリを1、2、4、6GBと変えて音楽連続再生してみた。最大の8GBは手持ちのメモリ基板が足りなくて試していない。

まず1GBで始めてみた。
音は悪くない。意外と行けるか、と思ったらじきにjitteringというのかな?、鈴を振るような雑音が聞こえ始める。さすがにCPUが速くてもメモリ1GBは足りないかな。ちなみにras pi2のメモリはLPDDR2で単純比較はできないけど、同じ1GBでも6730bのほうが余裕があるようだ。
2GBだと、もう少し持つけど、やっぱり雑音が。
4GBだとかなり行ける。やはりメモリは4GB必要なのかと思っていたら、1時間ほど鳴らすうちにjitteringが。
6GBでどうか。、、1時間ぐらいで時にプチノイズが出て、その後は落ち着いたかと思ったけど、1時間半でjittering、、、
ということは、DDR3なら4GBあれば十分と思われ(減らせるかどうかは試せない)、DDR2なら6GBでも足りない、ということかな。jitteringが乗ったら、一時停止して再生再開したら正常に戻る。何かの処理が滞ってそんなノイズを生じるのだろう。

CPUの違いによる差異はというと、端末画面でsshからtopを打つと%CPUは25%強でそんなに変わらなかった。
それ以上の事はよくわからない。
実際のところ、機械によって必要なメモリとかスペックは違うだろうし、今回はこんな結果でした、という以上の結論は出ないと思う。

ちなみにapu2c4と6730bで、音質比較は難しかった。
ブラインドでは絶対わからないし、そうでなくても明確な指摘はできない。
やや6730bのほうが落ち着いた音色に聞こえるような気がするが、気のせいだと思う。そもそも1時間過ぎたらノイズが乗る。

768kHzアップサンプリングの音質について書いておく。

うちの女房は僕よりも音質に厳しかったりするんだけど、子供の頃のかなり厳しいピアノ教育の賜物で、音楽が鳴っていたら頭の中で勝手に音符に返還されるんだそうだ。何かしたいこと(例えばメールの文面を考えるとか)をしてる時でも、音楽が鳴っていると本人の意思とは関係なく脳が採譜を始めてしまうので、非常に困るのだという。最近は子供がピーナツにハマってて、いつも「Linus & Lucy」とか「Skating」を聞きたがるんだけど、繰り返し聞かされてウンザリだと言っていたのだ。
その女房が、768kHzになったら「これならいつでも鳴らしていい」と言ったのだ。
ちょっと信じられない。
いったい、なにが今までと違うというのだろう、、、
まあ、その後、実際にいつ鳴らしてよくなったかといえば、そうでもないんだけどさ。

以前、初めて384kHzで鳴らした時は、明らかに192Hz以下とは違うステージの音だと感じた。
これ以上に上がるのかと思っていたんだけど、実際、768kHzにしてみたら上がってしまった。
使用するDACによって違うだろうとは思う。
ブラインドで分かるかと言われたら微妙なところ。分かる人には分かるんじゃないだろうか。

高音域はより肌理細かくリアルに。それは想定内だったんだけど、中低域の見通しが良くなったのは意外だった。
いや、スーパーツィーターで低域が改善するのをずっと昔に体験してるので、高域を改善すると低域も改善するというのは当然有りだとは思うんだけど、今回の改善の仕方はそれとは何となく違うのだ。
上流の段階で改善してるのが分かるという感じ。
低音の質感、リアリティが上がり、かなり聴き取りやすくなった。低域のhi-fi再生のリアリティってこういう感じで良くなるものなんだ、と初めて知った気がする。たぶん、スピーカーの低域再生能力が高かったら明確に表現されるんじゃないかと思う。4425mk2はサイズの割に下まで伸びてるとはいえ、キャスターを使ったセッティングは最低域を支えるには限界があるだろうと思う。

なんというのか、、、
384kHzまでは、音が良くなる度に、これ以上の音があり得るのか?と感じていたんだけど、768kHzを聞くと逆に、ああ、これ以上の音ってありだ、と感じた。更なるオーディオ再生の高みがあると確信したというのか。まあ、うちのシステムレベルでは上があって当たり前なんだけど、そういう話ではなく、オーディオ技術的に目指すべき場所的な感覚で。
技術者ではない自分がそういう感覚を持ってしまったのが意外なところ。
だから、そういうレベルを目指すのかと言われたら、最早どうだか分からないという感じ。そういう心境になるのもよく分からないところだ。

上で書いていること、どういうことなんだろう、と考えていたんだけど、自分なりに納得できるかな、という説明を思い付いたので追記しておく。

僕は、Hi-Fiオーディオ再生とは「音によってバーチャルリアリティを生み出すこと」という理解をしていた。
それはSM-SX100と4425mk2で今のシステムのベースを組んだ10数年前から認識し始めたことで、ずっとそれでやってきているのだ。リスニングルームに展開される音像音場表現をより良いものにしたい、そうすれば聴く者の感覚を鷲掴みにして音響による異世界に引きずり込み放さないような、そんな力を持つ再生音が得られるはず、そういう感じでやってきた。

384kHzまで、それは目論見どおりだった。
それがどうも、768kHzでは勝手が違った。

音は良くなっている。
でも、音の世界に浸ることが出来なくなった、とは言わないけど、なんというんだろう、、、
ステレオ再生によるバーチャルな音だと理屈では分かっていて、その音はリアルの一歩手前にいる感じで、、、
だから、もっと上があるということが、逆に分かる。
上が見えるから、もう少しで手に届きそうだという感じがする。理屈ではなく実感として、オーディオ技術が目指すべき更なる到達点がそこにある、という気持ちになる。同時に、なぜか、ここが限界ではないかという予感がする。

人形制作やバーチャルリアリティに関係する概念で「不気味の谷」というのがある。
https://ja.wikipedia.org/wiki/%E4%B8%8D%E6%B0%97%E5%91%B3%E3%81%AE%E8%B0%B7%E7%8F%BE%E8%B1%A1
引用する。

写実の精度が高まってゆく先のかなり高度なある一点において、好感とは正反対の違和感・恐怖感・嫌悪感・薄気味悪さ (uncanny) といった負の要素が観察者の感情に強く唐突に現れるというもので、(以下略)

世の中には、よく出来たオーディオを聴いて「音がリアルすぎて気持ち悪い」という感想を抱く人がいると聞いたことがある。
僕は今回、音像再生の精度が高まることで負の要素が強まったとは感じていない。
むしろ音が良くなって嬉しがって聴いている。
ただ、なぜか、音に浸りながらも、その音の前で、どこか途方に暮れる自分がいる。

不気味の谷という概念を思い出して、ああ、これかも、、と納得できるような気がした。
つまり、壁に突き当たったということだ。情報量を引き出し再生音を研ぎ澄ませていくという手法が限界ではないのかと感じているのだ。

今までは、音の情報量、リアリティを追求する方向で進んできたけれど、ここから先は同じ方向で進んでも、Hi-Fi再生によるバーチャルリアリティの魅力、有効性を高めることにはならないのではないか、ということ。

音響再生にも不気味の谷があるとしたら、それに触れた人間の感覚は陶酔から引き離されることになる。そこから先に目指すことになるのは、不気味の谷を越えた、バーチャルだと人の聴覚が気付かない、人の感覚を完全に騙すバーチャルリアリティを求めることになる。単に上質なバーチャルリアリティを目指すことは、既に目標ではない。
そんな雲を掴むような話、どうやって先を目指せばいいのか皆目見当がつかない。
しかし、そうではない方向性を選ぶのは、後退に等しい。
単純に更にサンプリング周波数を上げたら、谷を超えた違う世界が見えてくるんだろうか。しかし、多分そこは今迄僕が一喜一憂していたバーチャルリアリティなオーディオの世界とは違うような気がする。

そういえば、昨今はTV画像は4Kとか8Kとか言っているけど、情報量が増えたら、人はそのバーチャルな映像世界に入り込みやすくなるんだろうか。それは人にとって安心して没入できる世界なんだろうか。映像の情報量が一定水準以上に増えた時、そこに求められる音声は、もしかしたら、従来のバーチャルリアリティなHi-Fiでは通用しなくなるんじゃないだろうか。8Kの映像に合わせる音響は従来のステレオでは持たなくなる可能性が、ある?、、、

話が逸れた。

いったい此の先、どうするだろうかなあ、、、
音がいいから、ずっと音楽に浸ってたらいいというのが結論かもしれないけど。
実際それは可能なわけだし、768kHzまでしか現実的に無理なのだから。
さっきは後退に等しいと書いたけど、水準を維持したまま音色を変えてみる方法論もある。高級なプリアンプ使うとかDACを高級なのに変えるとか高級なケーブルやスピーカーに変えてみるとか、、、なんか気が進まんなあ、、、
今、気になるのはMQA。
これは録音の段階まで踏み込んだフォーマットだ。
音を研ぎ澄ませていく方向性に未来があるのかどうか、これを聴いたら何か新しい目星が付くならいいんだけど。

Jan 03, 2017

Volumioにマウントした時に機能するシンボリックリンクを作りたい

たぶんこれは初歩的なLinuxの知識なんだろうけど、長年の謎だったのが解決したのでメモる。

volumioはNASをマウントして運用することがあるんだけど、このとき特定のファイルのシンボリックリンクを使いたいと思うことがあった。
つまり複数のディレクトリから見えるようにしたかったということだ。
これが上手くいかなかった。

当初に試みたのは、volumioにsshでログインしてln -sコマンドを使うこと。
volumio1.55の場合、/mnt/NAS/ にNASの共有フォルダがマウントされている。
そこから入ってシンボリックリンクを貼ろうとしたら出来ない。以下のようなエラーがでる。

ln: failed to create symbolic link `OrpheusBaroqueConcertOrpheusChamberOrchestra': Read-only file system

Read-only file system、なんだそうだ。
安全上の配慮なのか、volumioはNAS上のファイルを変更できないようになっているらしい。

そこで、QNAP NASにssh、adminでログインして試みる。
hhs210の共有フォルダは、/share/MD0_DATA/ 以下に配置されているので、ここから入ってシンボリックリンクを貼る。
例えば以下のようなコマンド。これでaudiophilesというディレクトリにAA.flacというシンボリックリンクができる。

[/share/MD0_DATA/titan/audiophiles] # ln -s /share/MD0_DATA/titan/classics/A.flac AA.flac

しかし、これがvolumioからは見えない。

試しにNASの共有フォルダを手元のノートPCにマウントしてみると、ファイルとしては存在している。
これをダブルクリックしたら、以下のような表示が出る。

リンク先が存在しません

つまり、手元のノートPCにマウントされた場合と、NASの上そのものにあるときでは、シンボリックリンクファイルに記述されたリンク先のパスが違ってしまう。
当たり前だが、今更気付いた。

ということは、volumioにマウントした時に読めるシンボリックリンクを作れば機能するはずだ。
この際、NASをマウントしたノートPC上で作ってしまう。
ノートPC上でのパスがどうなのかは関係なく、volumio上でリンク本体のパスがどうなるかを想定してコマンドを打つ。

[root@hp6730bHitachi audiophiles]# ln -s /mnt/NAS/hs210Saturn/classics/A.flac AA.flac

このシンボリックリンクはノートPC上では機能しないが、volumio上では機能する。
ncmpcppのブラウザでアップデートをかけるとaudiophilesディレクトリにAA.flacが表示される。

Posted at 09:50 in audio_diary | WriteBacks (0) | Edit Tagged as:

Jun 04, 2016

Raspberry Pi でメモリ再生を試みる2(raspbianにmpdをインストールする)

タイトルに2とあるが、実はメモリ再生はpiCore7よりも前にraspbianで成功していた。
そもそも、デバイスの設定をconfig.txtに書き込むとalsaが認識してくれるというのは、raspbianで試みて気付いたことだった。piCore7だけいじっていたときにはこれに気付かず、諦め、まあ気を取り直してraspbianでやってみっか、、、で、気付いたのだ。

ネットで探してもpiCoreのalsaの設定の仕方はよく分からない。
僕は出来合いのi2sDACでhifiberryから設定をもらえたので簡単だったが、USB-DACとかつなぐ場合の設定は全く分からない

それはともあれ。
大したことはないけど、これも備忘録にしておく。

raspbianをmicroSDにインストール、i2sデバイスを設定

僕が使ったのはRaspbian Jessie Liteだ。 https://www.raspberrypi.org/downloads/raspbian/ 上記のサイトからダウンロードできる。

これをmicroSDに焼いて、config.txtにi2sデバイスの設定を書き込む。
下記サイトを参考。
https://www.hifiberry.com/guides/configuring-linux-3-18-x/

raspbianをRas Piで起動した後で、/boot/config.txtに書き込んで再起動でもかまわない。
ちなみにpiCore7だとブート後はconfig.txtが見えなくなる。

ファイルイメージの拡張

Ras Piに刺して起動し、sshでログインする。
ユーザーはpi、パスワードはraspberry。

そこで以下のコマンドでファイルイメージを拡張しておく。ついでにローカル設定とかもしておく。
pi@raspberrypi:~ $ sudo raspi-config

alsaインストール

下記のコマンドでインストール。

pi@raspberrypi:~ $ sudo apt-get install alsa-base

swapを止める

ほっとくと100MB程がswapに取られてしまうので設定しなおす。
コマンドなど経過は下記のとおり。
本当はpiCoreでも止めたいんだけど、こっちは方法が分からない。まあ、音楽ファイル用にswapが使われるので放置でもいいんだろうけど、止めるほうがすっきりしてるんじゃないかという気がする。


pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        445124     191848     253276       4460      12388     150836
-/+ buffers/cache:      28624     416500
Swap:       102396          0     102396

pi@raspberrypi:~ $ swapon -s
Filename				Type		Size	Used	Priority
/var/swap                              	file    	102396	0	-1


 pi@raspberrypi:~ $ sudo swapoff --all

pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        445124     191848     253276       4460      12396     150852
-/+ buffers/cache:      28600     416524
Swap:            0          0          0
pi@raspberrypi:~ $ 


pi@raspberrypi:~ $ sudo apt-get remove dphys-swapfile
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  dc
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  dphys-swapfile
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 85.0 kB disk space will be freed.
Do you want to continue? [Y/n] Y
Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_TIME = "en_US.UTF-8",
	LC_MONETARY = "en_US.UTF-8",
	LC_MEASUREMENT = "en_US.UTF-8",
	LC_NUMERIC = "en_US.UTF-8",
	LC_PAPER = "en_US.UTF-8",
	LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").
locale: Cannot set LC_ALL to default locale: No such file or directory
(Reading database ... 31037 files and directories currently installed.)
Removing dphys-swapfile (20100506-1) ...
Processing triggers for man-db (2.7.0.2-5) ...
pi@raspberrypi:~ $ 

pi@raspberrypi:~ $ sudo reboot

pi@192.168.1.116's password: 
Last login: Mon May 23 23:41:23 2016 from 192.168.1.52

pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        445124      62396     382728       4456       6096      31940
-/+ buffers/cache:      24360     420764
Swap:            0          0          0
pi@raspberrypi:~ $ 

freeのメモリが250MBから380MB以上に増えている。

音楽ファイルの置き場をram diskで設定

以下のとおり。意味があるのかどうか分からないが。


pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       3.6G  890M  2.5G  26% /
devtmpfs        214M     0  214M   0% /dev
tmpfs           218M     0  218M   0% /dev/shm
tmpfs           218M  4.4M  213M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           218M     0  218M   0% /sys/fs/cgroup
/dev/mmcblk0p1   63M   21M   43M  33% /boot

pi@raspberrypi:~ $ sudo vi /etc/fstab

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
##### ramdisk
tmpfs       /home/pi/music     tmpfs    defaults,size=400m 0      0  

pi@raspberrypi:~ $ sudo reboot

pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       3.6G  890M  2.5G  26% /
devtmpfs        214M     0  214M   0% /dev
tmpfs           218M     0  218M   0% /dev/shm
tmpfs           218M  4.4M  213M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           218M     0  218M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /home/pi/music
/dev/mmcblk0p1   63M   21M   43M  33% /boot

flacをインストール、mpdをインストール

以下のコマンドでインストールできる。

pi@raspberrypi:~ $ sudo apt-get install flac
pi@raspberrypi:~ $ sudo apt-get install mpd

あとはmpd.confを編集してmpdを動かすだけで音が出るはず。

Posted at 16:13 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,

Jun 02, 2016

Raspberry Pi でメモリ再生を試みる(piCore7にmpdをインストールする)-いろいろ追記あり

http://www.yung.jp/bony/ こちらのサイトで5月頃から興味深い試みの報告が行われている。
mpdサーバのRAMに音楽ファイルを読み込んで再生したら、NASをマウントするよりもサーバの負担が少ないので音質改善が見込めるのではないかという話だ。
うちでも昔、NASを交換したときの音質変化に驚いたことがある。
機種によってはcifs、nfsでマウントすることが負担になるNASがあるようで、そうした機種だと音が悪くなる。データの転送自体が不安定になってジッタが増加するのが原因だと思う。
そうした経験があったので「メモリ再生でNAS接続の負担から開放される」という話は、なるほどそうか、という思いだった。

試みたいが、うちにはTiny Core Linuxを走らせるハードがないから出来ないな、と思っていたら、Ras PiでPiCoreという派生OSを走らせることが出来るという。
これは面白そうだ。

結局、raspbianとpiCore7にmpdをインストールした。少々苦労したがなんとかなったので備忘録にしておく。
今回はpiCore7について。

2018年1月、追記。
このエントリーは読んでも分かりにくい面があるので、改訂版というのか、書き直しのエントリーをアップした。
分かりやすくするという目論みが成功したとは言い難いが。
piCore7にmpdをインストールする方法
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20180103a.htm

microSDの準備。

piCore7はここから落としてくる。 http://tinycorelinux.net/7.x/armv6/releases/RPi/
これをmicroSDに焼く。

6月11日、追記。
Raspberry pi2以降の機種の場合は、こちらから落す。
http://tinycorelinux.net/7.x/armv7/releases/RPi2/
piはarmv6で、pi2以降はarmv7ということらしい。プロセッサーが違うということだ。

次に、下記のサイトから設定をもらってくる。hifiberryのデバイスの設定だ。
https://www.hifiberry.com/guides/configuring-linux-3-18-x/
以下にメモとして引用しておく。

DAC/DAC+ Light
dtoverlay=hifiberry-dac

DAC+ standard/pro
dtoverlay=hifiberry-dacplus

Digi/Digi+
dtoverlay=hifiberry-digi

Amp/Amp+
dtoverlay=hifiberry-amp

選択する機種によって設定が違うので合わせてconfig.txtに記載する。
ついでに、もとからある設定について下記のように記載変更した。
dtparam=i2c=off,spi=off,i2s=on,i2c_vc=off

piCore7を起動しsshでログイン。

microSDをRasPiに刺して電源供給するとpiCoreが起動する。
sshでログイン。
ipはxxx.xxx.xxx.116。ここらは環境によって変わる。
http://tinycorelinux.net/7.x/armv6/releases/RPi/README にも書いているが、userはtc、パスワードはpiCoreだ。

適宜、下記のコマンドで設定を保存していく。

filetool.sh -b

6月5日、追記。
ipアドレスを固定した。流れは下記のとおり。

tc@box:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr B8:27:EB:36:8A:DF  
          inet addr:192.168.1.116  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:775439 errors:0 dropped:92 overruns:0 frame:0
          TX packets:250166 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1123681152 (1.0 GiB)  TX bytes:24070244 (22.9 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tc@box:~$ cd /opt
tc@box:/opt$ ls
alsa/         bootlocal.sh  bootsync.sh   shutdown.sh   tcemirror
tc@box:/opt$ vi eth0.sh

#!/bin/sh
pkill udhcpc
ifconfig eth0 192.168.1.82 netmask 255.255.255.0 broadcast 192.168.1.255 up
route add default gw 192.168.1.1
echo nameserver 192.168.1.1 > /etc/resolv.conf

tc@box:/opt$ ls
alsa/         bootlocal.sh  bootsync.sh   eth0.sh       shutdown.sh   tcemirror
tc@box:/opt$ chmod +x eth0.sh
tc@box:/opt$ ls -aFl
total 28
drwxrwsr-x    3 root     staff          200 Jun  4 12:46 ./
drwxr-xr-x   17 root     root           380 Jan  1  1970 ../
-rw-rw-r--    1 tc       staff          403 Jun  4 10:53 .filetool.lst
-rw-rw-r--    1 root     staff          145 Dec 31  2014 .xfiletool.lst
drwxr-sr-x    2 root     staff           40 May 31 08:36 alsa/
-rwxrwxr-x    1 root     staff          360 Jan 20  2015 bootlocal.sh*
-rwxrwxr-x    1 root     staff          272 Dec 31  2014 bootsync.sh*
-rwxr-xr-x    1 tc       staff          179 Jun  4 12:46 eth0.sh*
-rwxrwxr-x    1 root     staff          613 Dec 31  2014 shutdown.sh*
-rw-rw-r--    1 root     staff           31 Dec 31  2014 tcemirror
tc@box:/opt$ sudo vi bootsync.sh

#!/bin/sh
# put other system startup commands here, the boot process will wait until they complete.
# Use bootlocal.sh for system startup commands that can run in the background 
# and therefore not slow down the boot process.
/usr/bin/sethostname box
/opt/bootlocal.sh &
/opt/eth0.sh &

tc@box:/opt$ vi .filetool.lst

opt
home
etc/passwd
etc/shadow
etc/group
etc/gshadow
usr/local/etc/ssh/ssh_host_dsa_key
usr/local/etc/ssh/ssh_host_dsa_key.pub
usr/local/etc/ssh/ssh_host_ecdsa_key
usr/local/etc/ssh/ssh_host_ecdsa_key.pub
usr/local/etc/ssh/ssh_host_ed25519_key
usr/local/etc/ssh/ssh_host_ed25519_key.pub
usr/local/etc/ssh/ssh_host_rsa_key
usr/local/etc/ssh/ssh_host_rsa_key.pub
usr/local/etc/
etc/fstab
opt/bootlocal.sh
opt/eth0.sh

tc@box:/opt$ filetool.sh -b
Backing up files to /mnt/mmcblk0p2/tce/mydata.tgz\
Done.
tc@box:/opt$ 

これでsudo rebootしたらipアドレスが固定される。

ディスクイメージを拡張。

以下の流れでディスクイメージを拡張。もともとは最低限の大きさなので、拡張しないと後で諸々のインストールに支障を生じる

tc@box:~$ sudo fdisk -u /dev/mmcblk0
Command (m for help): p

Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes
3 heads, 8 sectors/track, 646826 cylinders, total 15523840 sectors
Units = sectors of 1 * 512 = 512 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/mmcblk0p1            8192       69631       30720   c Win95 FAT32 (LBA)
/dev/mmcblk0p2           69648       93119       11736  83 Linux

Command (m for help): d
Partition number (1-4): 2

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First sector (8-15523839, default 8): 69648
Last sector or +size or +sizeM or +sizeK (69648-15523839, default 15523839): 15523839

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
fdisk: WARNING: rereading partition table failed, kernel still uses old table: Device or resource busy
tc@box:~$ 
tc@box:~$ sudo reboot
tc@box:~$ Connection to 192.168.1.116 closed by remote host.
Connection to 192.168.1.116 closed.



tc@192.168.1.116's password: 
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

tc@box:~$ 
tc@box:~$ sudo resize2fs /dev/mmcblk0p2
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mmcblk0p2 is mounted on /mnt/mmcblk0p2; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 30
The filesystem on /dev/mmcblk0p2 is now 7727096 (1k) blocks long.
tc@box:~$ 

この流れは http://tinycorelinux.net/7.x/armv6/releases/RPi/README にも書いているが、ちょっと不親切。
コマンドの使い方を調べる必要があった。

各種ライブラリやalsa、flacなどなどインストール。

下記のコマンドでいろいろインストール。

tc@box:~$ tce-load -wi gcc.tcz glib2-dev.tcz
tc@box:~$ tce-load -wi ncurses.tcz ncurses-dev.tcz make.tcz automake.tcz
tc@box:~$ tce-load -wi compile-essentials.tcz squashfs-tools.tcz bash.tcz bc.tcz
tc@box:~$ tce-load -wi pkg-config-doc.tcz pkg-config.tcz

tc@box:~$ tce-load -wi alsa.tcz alsa-config.tcz alsa-doc.tcz alsa-dev.tcz alsaequal.tcz alsa-locale.tcz alsa-modules-4.1.13-piCore+.tcz alsa-modules-4.1.20-piCore+.tcz

tc@box:~$ tce-load -wi flac-dev.tcz flac.tcz flac-doc.tcz libcue.tcz libcue-dev.tcz icu-dev.tcz icu.tcz

ぞろぞろ文字やらなにやらインストールの状況が端末に表示される。
なかなか面白い。

当方ではflacをcue sheetで扱えれば充分なので上記のような感じだけど、他に扱いたいファイル形式があるなら適宜必要なものを追加してインストールしておく必要がある。

alsaはユーティリティとかなくてもいいのか?と思ってたけど、なくてもデバイスの認識は出来て音も出るようだ。
この時点でこんな感じ。

tc@box:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

6月24日、追記。
wavを再生する必要性が生じたため、下記コマンドにてインストール追加した。
tce-load -wi libsndfile-dev.tcz libsndfile-doc.tcz libsndfile.tcz

mpdを再インストールしないといけない。
以前にインストールした後に残っていた、mpd、mpd-0.17.6、両ディレクトリをsudo rm -rfで削除。 あとは、下記の流れに沿ってmpd-0.17.6.tar.gzを再解凍して再インストール、で問題なく動く。

mpdのインストール。

将来的には分からないけど5月31日の時点では、tce-load -wi mpd.tcz ではインストールできない。
libopus.tczがないとかでエラーになる。

なのでソースから自分でコンパイルしてということになる。
以下、コマンドを羅列。

tc@box:~$ wget https://www.musicpd.org/download/mpd/0.17/mpd-0.17.6.tar.gz
tc@box:~$ tar xvf mpd*
tc@box:~$ cd mpd*6
tc@box:~/mpd-0.17.6$ ./configure
tc@box:~/mpd-0.17.6$ make

tc@box:~/mpd-0.17.6$ sudo mkdir ../mpd
tc@box:~/mpd-0.17.6$ 
tc@box:~/mpd-0.17.6$ sudo make DESTDIR=../mpd install
tc@box:~/mpd-0.17.6$ cd ..
tc@box:~$ 

tc@box:~$ mksquashfs mpd mpd-0.17.6.tcz
tc@box:~$ ls
mpd/               mpd-0.17.6/        mpd-0.17.6.tar.gz  mpd-0.17.6.tcz
tc@box:~$ md5sum mpd-0.17.6.tcz > mpd-0.17.6.tcz.md5.txt
tc@box:~$ ls
mpd/               mpd-0.17.6/        mpd-0.17.6.tar.gz  mpd-0.17.6.tcz  mpd-0.17.6.tcz.md5.txt

tc@box:~$ ls /mnt
mmcblk0p1/ mmcblk0p2/
tc@box:~$ sudo mv *tcz* /mnt/*2/tce/optional

コマンドの羅列にしたら、こんな感じ。
本当は間に文字やら何やらが表示される。

まずwgetコマンドでmpdのサイトからソースを落として解凍。
解凍されたディレクトリでconfigure、make。

ここから後が通常のlinuxと違うところで、mpdフォルダを作ってそこに一式まとめて、make installする。
その一式を、mksquashfsコマンドでtczファイルに圧縮。
md5sumコマンドで付録をつけて、/mnt/mmcblk0p2/tce/optionalディレクトリに送り保存する。
これで管理するのがtiny coreの作法ということだ。

次に、onboot.lstの末尾に、mpd-0.17.6.tczを追記する。

tc@box:~$ sudo vi /mnt/*2/tce/onboot.lst

ちなみに、mpd-0.17.6、mpd-0.16.8はインストールできた。 mpd-0.18.19、mpd-0.19.4、mpd-0.19.5はインストール自体ができなかったり実用にならなかったりしている。

RAMDISKでmusicフォルダを設定

6月5日、追記。
RAMDISKでmusicフォルダを設定などという余計なことはせず、普通にmusicフォルダのままがいいようだ。

RAMDISKは、raspbianにmpdをインストールした時に試してみたもので、特に問題なかったのでpiCoreでも設定していたんだけど、swapとの関係なのかどうなのか分からないが、ファイルの転送がうまくいかないようだ。
現在は/etc/fstabの設定は止めている。

tc@box:~$ sudo mkdir music
tc@box:~$ sudo chmod 777 music

tc@box:~$ sudo vi /etc/fstab
tc@box:~$ 
# /etc/fstab
proc            /proc        proc    defaults          0       0
sysfs           /sys         sysfs   defaults          0       0
devpts          /dev/pts     devpts  defaults          0       0
tmpfs           /dev/shm     tmpfs   defaults          0       0
/dev/zram0  swap         swap    defaults,noauto   0       0
/dev/mmcblk0p1  /mnt/mmcblk0p1  vfat     noauto,users,exec,umask=000 0 0 # Added by TC
/dev/mmcblk0p2  /mnt/mmcblk0p2  ext4     noauto,users,exec    0 0 # Added by TC

tmpfs       /home/tc/music     tmpfs    defaults,size=400m 0      0

これは意味があるのかどうか良く分からない。RAMDISKとして設定しなくても動くみたいだ。
sftpソフトでアクセスして/home/tc/musicに音楽ファイルを転送する。
mpd.confで、ここをmusic_directoryに設定する。

6月4日、追記。
homeディレクトリ以下にmusicフォルダを置くと、filetool.sh -bでmusicフォルダの音楽ファイルが記憶されてしまう、ということに今更気付いた。つまり、何かの必要があって再起動したら、その記憶されていた音楽ファイルが現れてくるということ。
通常運用し始めたらfiletool.sh -bを使う機会はそうそうないと思うけど、注意がいるかも。
そういう意味では、/musicとかfiletool.sh -bの影響を受けない場所を、bootlocal.shで指示して確保したほうがスマートかもしれない。

.filetool.lstへの追記

これは、うちの環境で意味があるのかどうか分からないんだけど、一応。

sudo vi /opt/.filetool.lst

以下の3行を追記している。

usr/local/etc/
etc/fstab
opt/bootlocal.sh

bootlocal.shにmpdを記載することでboot時に起動するとかあるようなんだけど、うちでは上手くいかなかった。sshでログインしてmpdコマンドを打って起動させている。

mpdの設定。

tc@box:~$ 
tc@box:~$ mkdir .mpd
tc@box:~$ mkdir .mpd/playlists
tc@box:~$ sudo cp mpd-0.17.6/doc/mpdconf.example ~/.mpdconf
tc@box:~$ 
tc@box:~$ sudo vi .mpdconf

mpd.confを設定する。
mpdのINSTALLファイルにデフォルト指定があるので、そのひとつの~/.mpdconfを選択。
music_directoryなどの設定、alsaを出力に設定。
後は勝手知ったるもので、好きなように設定したらいい。
auto_updateを有効にしておけば、ファイルを入れ替えたらすぐに反映されるので便利。

とりあえず、以上だ。

6月6日、さらに追記。

nfsでNASをマウントする

nfsでNASをマウントするコマンド。
addr=を使う必要がある。

tc@box:~$ sudo mount -o addr=192.168.1.80,nolock -t nfs 192.168.1.80:/titan /home/tc/music

上記のコマンドで、192.168.1.80のNASの共有フォルダtitanを、piCoreのmusicディレクトリにマウントできる。
これでメモリ再生とNASをマウントした場合の比較が出来るかな。
いまさら気付いたが、NASをマウントした場合はライブラリの自動アップデートが効かない。これはmpdのバージョンが古いせいだと思う。
参考にしたサイトは以下。
http://forum.tinycorelinux.net/index.php?topic=19913.0

Posted at 17:15 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,

Feb 02, 2016

NASの中のcue sheetの中を検索する

オーディオは鳴らすばかりで音質への配慮をしてない日々が続いている。
気がつけば年が明けて旧正月を迎えようとしている。
覚書として、cue sheetの中を検索する方法をメモっておく。
うちではNAS上のフォルダを手元のノートにマウントしてることが多いのでそこで使うことが多いが、やってみたらvolumioにsshでログインした時も使うことができた。
ただ、うちのvolumioはカーネルをアップしている。アップしてない場合は試していない。

リッピングをCD単位でflacとcue sheetにして管理しているとファイルが少なくて済むのはいいのだけど、個別の曲についてどのファイルに入っているんだろう?となったときに困る。
よく知ってるアルバムならわかるけど(例えばしっかりジョンはジョンの魂に入ってるとか)、クラシックになってくると1つのCDに複数の作曲者や演奏者がいることが当たり前だ。ファイル名にそれらを全部入れるわけにいかないし。
そういうわけで複数のcue シートの中を一括で検索したいということになる。

あちこち調べた結果、find、grep、パイプでlessで表示、でやれることがわかった。
以下、volumioでの流れをコピペ。

root@192.168.1.81's password: 
Linux volumio81 4.1.7+ #817 PREEMPT Sat Sep 19 15:25:36 BST 2015 armv6l
                       ___                                      
                      /\_ \                        __           
         __  __    ___\//\ \    __  __    ___ ___ /\_\    ___   
        /\ \/\ \  / __`\\ \ \  /\ \/\ \ /' __` __`\/\ \  / __`\ 
        \ \ \_/ |/\ \L\ \\_\ \_\ \ \_\ \/\ \/\ \/\ \ \ \/\ \L\ \
         \ \___/ \ \____//\____\\ \____/\ \_\ \_\ \_\ \_\ \____/
          \/__/   \/___/ \/____/ \/___/  \/_/\/_/\/_/\/_/\/___/ 
        
             Free Audiophile Linux Music Player - Version 1.55

                 C 2013 Michelangelo Guarise - Volumio.org
                    192.168.1.81 hifiberryDigi+

Volumio Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jan 19 06:15:14 2016 from 192.168.1.23
root@volumio81:~# ls /mnt
NAS  UPNP  USB
root@volumio81:~# cd /mnt/NAS
root@volumio81:/mnt/NAS# ls
hs210
root@volumio81:/mnt/NAS# cd hs*
root@volumio81:/mnt/NAS/hs210# ls
audio_check  classic  ethnic  jazz  kids  pop
root@volumio81:/mnt/NAS/hs210# find classic -type f -name "*.cue" -exec grep -C 1 -H -i "telemann" {} \; | less

volumioにsshでログインし、 マウントされてるNASの音楽フォルダまで移動する。
そこにはファイルが階層化されたディレクトリに分別されてるので、探したいフォルダの中のcue sheetの中を検索するという流れ。
hs210というディレクトリの下層に、audio_check classic ethnic jazz kids pop、というディレクトリがある。
一番下のコマンドは「classic」というディレクトリのなかの、末尾が「.cue」というファイルすべてを探して、その中の「telemann」という言葉を含む行を検索して、結果をlessで表示してね、って感じ(lessというのはlinuxのテキストビューアだ)。
コマンドにオプションが色々付いているけど説明は省略。

検索結果が、以下のような感じで表示される。
ごちゃごちゃした感じで、使いやすいというわけじゃないけど、ないのに比べたら相当助かっていると思う。

classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue-  TRACK 09 AUDIO
classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue:    TITLE "Telemann, GP - Concerto for violin, strings & continuo - 1 Adagio"
classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue-    PERFORMER "Daniel Hope"
--
classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue-  TRACK 10 AUDIO
classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue:    TITLE "Telemann, GP -Concerto for violin, strings & continuo - 2 Allegro"
classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue-    PERFORMER "Daniel Hope"
--
classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue-  TRACK 11 AUDIO
classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue:    TITLE "Telemann, GP - Concerto for violin, strings & continuo - 3 Presto"
classic/111 years of Deutsche Grammophon Vol.2/23 Daniel Hope - Air. A Baroque Journey.cue-    PERFORMER "Daniel Hope"
(END)

cue sheetのパスと、そこに記載された文字列が表示される。
ちなみに「grep -C 1」とコマンドを打っているので、検索に引っかかった行の前後1列も表示されている。この辺はオプションの設定次第で、-Aで後の行、-Bで前の行とか設定できる。「-C 1」の代わりに「-1」でもいいようだ。
うまくスクリプトに出来たらいいんだろうけど、そこまでは出来ていない。

Posted at 15:01 in audio_diary | WriteBacks (0) | Edit Tagged as:

Sep 28, 2015

Volumioのカーネルをバージョンアップしてみる(追記あり、さらに追記あり)

意味があるのかどうかは不明。以下に記録。

root@volumio:~# uname -r
3.18.5+
root@volumio:~# sudo rpi-update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** Performing self-update
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10206  100 10206    0     0  20820      0 --:--:-- --:--:-- --:--:-- 30648
 *** Relaunching after update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
#############################################################
This update bumps to rpi-4.1.y linux tree
Be aware there could be compatibility issues with some drivers
Discussion here:
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=113753
##############################################################
 *** Downloading specific firmware revision (this will take a few minutes)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   168    0   168    0     0    166      0 --:--:--  0:00:01 --:--:--   234
100 48.0M  100 48.0M    0     0   113k      0  0:07:14  0:07:14 --:--:--  109k
 *** Updating firmware
 *** Updating kernel modules
 *** depmod 4.1.7+
 *** depmod 4.1.7-v7+
 *** Updating VideoCore libraries
 *** Using HardFP libraries
 *** Updating SDK
 *** Running ldconfig
 *** Storing current firmware revision
 *** Deleting downloaded files
 *** Syncing changes to disk
 *** If no errors appeared, your firmware was successfully updated to 7ee23ac1452ad57dcc0ef2c1f074060b4bd9338d
 *** A reboot is needed to activate the new firmware
root@volumio:~# reboot

root@volumio:~# uname -r
4.1.7+

以前、apt-get update、apt-get upgrade を試みたら動かなくなったことがあったので今回はどうかと思っていたが、今のところ、アップデート前と変わらない感じで使用出来ている。
音がスムーズになったような気がするが、たぶん気のせいだ。

10月4日追記。
うちは今、カーネルv4.1.7+、8+、9+のvolumioが混在した状況。
HiFiBerry Digi+がv4.1.7+、v4.1.9+、RBD-02+がv4.1.8+、ともに再生自体に不具合は生じていない。
ちょっと気付いたこととして、Digi+が付いてる奴のカーネルをv3.18.5+からバージョンアップしたら、音声ファイル再生をしていない時はデジタル信号を出力しないようになったらしい。というのは、v3.18.5+だったときは、再生していない時でもFireface-UCXのインジケータが点いていたけど、v4.1.7+、9+では再生していないときは消えている。

そもそも再生していない時に何を出力していたんだろうというのは今更な疑問だけど。
再生してない時に無音の信号が出っぱなしのほうが、再生環境によってはトラブルなく再生できるという話をどこかで読んだことがあるような無いような感じだけど、もしかしたらもとのv3.18.5+のvolumio1.55はそこらあたりを配慮してたのかもしれない。

もうひとつ、カーネルバージョンアップで音が出なくなることがあるらしい、ということでメモ。
下記のサイトで報告あり。
volumio1.55 ほーりーさん版のJessie化 : 新大陸への誘い
http://tackbon.ldblog.jp/archives/52383384.html
PCで音楽: Raspbian JESSIEへアップグレード
http://asoyaji.blogspot.jp/2015/10/rasbianjessie.html
Raspberry Pi - View topic - I2C, SPI, I2S, LIRC, PPS, stopped working? Read this.
https://www.raspberrypi.org/forums/viewtopic.php?t=97314

何でうちでは起きないんだろう、とか思ってたんだけど、たった今気付いたけど、ほーりーさん版だと起きるのかもしれない。うちのvolumioはvolumioのサイトから落としたままのものだ。ほーりーさん版は試したけど、うちではDigi+から音を出せなかったので使っていなかった。
音が出なくなった場合の対策が、上記リンクのサイトに書いてある。

10月10日、追記。
改めて、i2sDACのほうでほーりーさん版を鳴らしてみた。
i2sDDCだと鳴らせなかったが、DACだと簡単に鳴る。音は一皮むける感じがする。なるほどと思った。
これをカーネルバージョンアップしてみたら、v4.1.10+になった。たしかに音が出なくなる。
上記サイトの書いてあるとおり、/boot/config.txt に下記を追加。
dtparam=i2s=on
dtoverlay=hifiberry-dac
これでリブートしたら音が出る。ちなみにカーネルバージョンアップ前に書き加えていても問題ないようだ。

気付いたことがあるんだけど、i2sDACから音を出すとras piの赤いLEDが消えてしまう。音は問題なく出ているようだ。
これはカーネルとかvolumioの種類は関係ないみたい。
i2sDDCだとLEDは点灯したままだ。他のi2sDACだと違うのかもしれないが、持ってないので不明だ。

年が明けて2016年2月4日追記。
書き忘れていたんだけどi2sDACは、その後、程なくして壊れてしまったようだ。
DACとして認識されなくなった。
volumioを入れ替えても同じである。

思えば、ras piの赤LEDが消えていたのは前兆だったのかもしれない。あいまいな記憶だけど、もともと点いていたと思うのだ。

本当に壊れたのか、再確認しなくてはと思うまま放置している。
そういうわけで、現在うちで動いているvolumioは2台になっている。ともにDigi+で運用している。

2月11日追記。
結局、壊れてはいなかった。今日、volumio1.55で普通に動くのを確認した。
赤いLEDも普通に点灯している。

ただ、今更メインシステムに戻すのもなんだか無駄な感じだ。なにか、他に使い道はないだろうかと考えているところだ。

Posted at 23:47 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Jul 26, 2015

Raspberry pi B+ / Volumio 1.55 の運用状況

春に転居して以降、メインのトランスポートをraspberry pi B+ / volumio1.55に移行している。
状況を記録しておこうと思う。

そもそもはi2s DACを試すために導入し音質に感心したのが始まりだった。odeon-liteは2010年代のDACに替えないといけないと思った。
さらにibook G4/vine ppc mpdがral-24192ut1を認識しない、つまり192kHz/24bitのハイレゾを鳴らせないという問題が追い打ちをかけた。持っている音源は少ないけど、聴けないじゃ困ることもある。

現在、Raspberry pi B+ / Volumio 1.55は3台。
最初にi2s出力をDAC RBD-02+に送るのが1台。次にusb出力をDDC ral-24192ut1の同軸出力経由でDAC fireface UCXに送るのが1台。
両者の音質の差異は今ではかなり少ない。ブラインドでは僕には聴き分けられないかもしれない。最初はかなり違っていたんだけど、転居して数ヶ月のうちにRBD-02+は高域強調傾向で浮ついた感じだったのが少なくなり、firefaceは落ち着きすぎでもう少しどうにかな感じがなくなった。
理由は不明。
エージングと、ras piを12mm厚のMDF板にネジ止め固定した効果は多少はあるのかも?
どんな違いを聴けるだろうかと思っていたんだけど、ほぼ同じになるとは。

ところが最近、DDC HiFiBerry Digi+を入手し使用開始している。
これも手軽に使えるキットだが、同封されてきたスペーサーが長すぎ。カッターナイフで短くして使う。ちょっと力と注意が要る。
ここから光出力をUCXに送る。
音色の感触は前からあった2つの中間ぐらい。だが若干だが情報量が多い気がする。音の陰影に深みがあり立ち上がりも早い。
同軸出力のほうがいいはずと思って聴いてみたらやっぱりそのようだ。今後は同軸で使う。

しかしそうなるとUCXの同軸入力数の関係でral-24192ut1はどこで使おうかという事になる。メインシステムからはお役御免となるのだ。
まあ、そういうこともある。どこかで使うこともあるだろう。

さて、いろいろ雑事を書いておく。
volumioのサイトからimgファイルを落としてmicroSDカードに書き込むところから。
windowsで焼くときはvolumioのサイトに書いてあるとおりWin32DiskImagerを使ってやればたいてい問題なく起動する。
問題はlinuxの場合で、うちのvine linuxだと何かと上手くいかない。

当初、rootだからいいやと思ってddで焼いて全く起動せず、sudo ddで焼いたらマシになったかと思ったけど、本当にマシになった程度である。
df -hで/dev/sdb1と表示されたらsdb1にすればいいのかと思っていたらsdbにしないと上手く焼けない。sdb1で焼いたら読めないカードができてしまう。
うまくいったと思っても起動しなかったりパーティションをマウントできなかったり不具合は多い。volumioのサイトから落としたファイルの問題かと思ったこともあったが、何回ダウンロードしても同じことだ。

そんな手間かけるよりwindowsで焼けば良かろうということなんだけど、それでもカードによっては起動してからが上手くいかない。
何か設定して再起動したら動かなくなったり。
原因がはっきりしない。
何枚か試したがカードの容量、メーカー、classなど関係ない様子。

30日追記。
関係ないわけでもなさそうだ。下記のサイトに情報がある。しかし、、うちで不具合出てるのOKになってるね、、、
RPi SD cards http://elinux.org/RPi_SD_cards

先人たちの努力の跡を見ても、SDやmicroSDとはそういうものだと達観して対処するほうが賢いようで、たまたま上手く動くカードが出来たらイメージファイルにしてバックアップしておくのが自衛策ということだ。そういうイメージを動かないカードに焼いたら動くようになることがある。
バックアップから焼くのはvine linuxでも問題ないようだ。
謎である。

そもそもSDカードでOSを動かすこと自体、不安定で無理があるという意見もあるようだ。
通常のras piのOS(raspbianなど)についてはusbメモリから呼び出し起動するという手法がネット上にはあるが、、、usb-ddcを接続した状態でusbメモリからvolumioを呼び出す試みはうちでは失敗した。起動しない。

30日追記。
volumioのフォーラムへの書き込みをみたら、似たような体験をする人は海外にもいるようだ。
Lost 2 SD Cards in 10 Days https://volumio.org/forum/lost-cards-days-t1597.html
Offload Volumio to USB? https://volumio.org/forum/offload-volumio-usb-t715.html
Filesystem for long living SD Cards https://volumio.org/forum/filesystem-for-long-living-cards-t720.html
ちょっと引用する。

The problem is that Volumio uses ext3 (if I rememer correctly) that has no Flash wear leveling support.

ほんとうかねこれは。動いてるカードもあるわけで、謎である。
raspbianはext4らしいけど、じゃあext4ならいいのかという、、、

さて、最初に戻る。
とりあえずvolumioのイメージを焼いたら、ちょっと手を入れる。
カードには2つのパーティションができている。
小さいFATのボリュームと、1.7GBのext3のボリューム。
小さいほうが起動に使われ、大きい方にvolumioの本体が入っている。
小さい方の、/boot/config.txt に以下の記述を追加。
デフォルトでは、4つのusbプラグへの総電流供給量が0.6Aになっているらしい。これを1.2Aに上げる。

safe_mode_gpio=4
max_usb_current=1

一旦起動してからsshでログインし書き込み再起動という方法もあるが、そもそもusb-dacをつないで最初の起動の時にusbへの電力供給やら設定の読み込みやらなどで電力を余計に消費してるんじゃないか、などと思っているので、起動失敗のリスクが減るんじゃないかという意味で起動前に設定を変えておこうという考え。
これを書いたからといって起動の成功率が下がることはない、と思う。

raspberry piはusbとlanの情報処理を1つのチップでしてる?という事らしく、構造的弱点らしい。そういう意味ではやはり、i2s出力を利用できたら利用するほうがトラブルは少ないんだろうと思う。
実際、うちで繰り返しトラブっているのはusb-ddcをつないでいるras piで、i2s出力につないでいる方はトラブルがない。まあ、usb-ddcをつないでいる方を中心にいじってるからというのもあろうけど、不具合が多いからそういうことになる。

一応、追記。
現在、Digi+を継いで問題なくメイントラポとして動いてるras piは、先日までusb-ddcを継がれて不具合を繰り返していた個体である。つまりras piの個体差による問題ではないということ。

起動したら、粛々とウェブブラウザ画面からアクセスして設定をしていく。
ネットワークのアドレスを固定。
AirPlayは使わないのでoffに(volumioの再起動が必要)。
ライブラリにNASを設定。
ライブラリのアップデートが済んだらウェブブラウザは閉じる。

sshでログインし、raspi-configから現在地の時刻を設定。
ファイルイメージの拡張は、しなくてもいいかな、、、
1.5Gが8Gとかになったとしても、不具合が起きるかどうかには関係無さそうだ。

ここまで上手くいっても安心はできない。
sshからrebootを打って、無事に再起動が成功すればとりあえず安心。

次にsshからログインし、/etc/mpd.confの設定書き換え。
なぜかsamplerate_converter "Fastest Sinc Interpolator"の設定が残ってるので一応#でコメントアウト。これは意味があるのかどうかわからないが。
うちでは複数のmpd、volumioを1台のノートから複数のアカウントのncmpcppで操作する都合上、ポート設定を変更。6600を6601とかに。
これでウェブブラウザからのアクセスを受け付けなくなる。
受け付けなくなるだけで、アクセスしようとしたらvolumioへの負荷はかかるんだけど。
何かウェブブラウザから設定したいことがあれば、ポート設定を戻せばアクセスできる。

敢えてウェブブラウザからの操作をしないのは、volumioの負担軽減に繋がらないかという目論見もある。
どの程度効くのか分からないが、不具合はたいていウェブブラウザでアクセスしてる時に起こるという印象がある。ncmpcpp単独でアクセスしてる時におかしくなるのは、記憶にないような気がするのだ。

しかし、そこまで言うなら、例えばRaspbian OSにmpdをインストールしたほうが安定してる可能性もあるんじゃない?という考えもあるかも。残念ながら、まだそこは試していない。
Raspbianにmpdをインストールしたあと、usb出力とかi2s出力とか設定するのかと思うと、ちょっと苦しい。そこまでする余裕があるかというと自信がない。
思えば、vine mpdだって実用にするまで相当の時間がかかったし。
そういう意味でvolumioの手軽さはありがたい。

さて。mpd.confの書き換え後、一応、sshからvolumioをreboot。
ここまで上手くいくようなら良くできたカードといっていい感じがするので、バックアップしとけばいいかも。
再起動や終了はウェブブラウザから指示しないほうがいいような気がする。気のせいかもしれないが、起動しなくなることのほうが多いような気がして。

raspberry pi / Volumioは、手軽だけど不安定なシステムだと思う。
なんでこんなの使うんだろうと思うんだけど、やっぱりそこそこ面白い上に音がいいからだろう。不安定だからといって、既成品に向かうという選択肢は逆に考えにくい。

とは言いながら、ras pi B+の場合はusb出力を使おうとしたらトラブルが多すぎる気がする。
i2sをS/PDIFに変換してというのは元の木阿弥感が強いとはいえ、usb出力より音質も安定性もメリットが大きい気がするし、当面はDigi+がメインのトランスポートになるだろうなあ、という感じだ。
今後はデーモンの切り込みとかしていければと思うけど、追々、ゆっくりだ。

Posted at 22:57 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Nov 26, 2014

I2S DACとRaspberry Pi B+を導入 - Volumioでcue sheetを使う方法

11月中旬から、Raspberry Pi B+ / Volumio を弄っている。
I2S出力による音声再生には興味はあったが後回しにしてきていた。
始めたら手が掛かりそうな印象だったのと、音がいいとは言ってもDAC交換が出来ないというのは気に入らないという気持ちもあった。
しかし手軽そうなキットがあったので、やってみようということになった。
あと、聴いてみないことには何ともいえないというのもある。

実際に聴いてみたら、これは評判になるのが当たり前だと思った。
cue sheetが使えないと思っていたが、外から他のクライアントでアクセスしたら簡単に使用できた。これは非常に助かる。

さて。
まずRaspberry Piを入手。
DACは下記のサイトで扱っているのにした。
Raspberry Pi model B+ 用 DAC カード RBD-02+ LINUXCOM ネットショップ
関連サイト。
Raspberry Pi Model B+ で I2S DAC を動かす Linux Computing

このDACカード、RBD-02+は半田付けなしでRaspberry Pi B+に接続することが可能。
実際に触ってみて思ったのは、ピンに刺すのが意外に大変ということ。
I2S信号がきている40ピンのピンヘッダにDAC基板を刺すのだけど、かなり固い。慎重に力を入れないと針が曲がりそうだ。外すのも気をつけないと針を折りそうだ。
ネジ止めもちょっと力が要る。
そうは言っても、手軽で簡単に組み立てることが出来るキットだと思う。

VolumioのOSはmicroSDに書き込んで使う。
http://volumio.org/
Get Started
上記のサイトにやり方が書いてある。
VERSION 1.51をダウンロード。
解凍しimgファイルを、上記サイトの「FLASH IT」の項目、LINUXに書いてあるとおりにmicroSDに書き込む。
これをRaspberry Piに刺して、LANに継ぐ。
電源のmicro USB端子にケーブルを継ぐ。

Ras Pi本体の赤と緑のLEDが点灯しっぱなしで、何も起きない。
DACのLEDはかなり明るい。まぶしい、、。
ウェブブラウザでvolumio.local/にアクセスを試みるも繋がらない。
ここで気付く。
LAN端子のLEDが点灯していない。アクセスなんか出来るわけがない。

これは壊れてるか?
http://www.raspberrypi.org/downloads/
上記サイトからNOOBSをダウンロードしてみる。
これはRas PI純正?のOSインストーラだ。
問題なく順調に起動し、RaspbianがmicroSDにインストールできた。問題なく動く。
Ras PiのLEDはどれもきれいに点滅している。

ここで気付いた。
NOOBSをSDカードに書き込む際にはFAT形式にフォーマットしないといけないと、解凍したファイルに書いてあった。
FAT形式のmicroSDに、もう一度Volumioを書き込んで起動を試みてみる。
前と同じで何もおきない、、、
ext3、ext4でもだめだった。
Volumioのバージョンを落としてみる。1.4、1.5、、、起動すらしない。

ここまではVine Linux 6.1で試みていた。
数日後、気持ちを切り替えてWindows7で試みる。
Volumioのサイトに書いてあるとおり、Win32DiskImagerでFAT形式にイメージを書き込んでみる。
今までのことが嘘のように起動した。
ようやくウェブブラウザからVolumioのコントロール画面を拝むことが出来た。

何でこんな顛末になったのか、よく分からない。
Vine Linuxで作ったFAT形式に何か問題があったのは確かだろうけど、今の時点では再現性の検証をしていない。
何でNOOBSが動いてVolumioがだめだったのかもよく分からない。

2015年2月11日、追記。
Volumioが1.55にアップデートされているし、諸般の事情で再度マイクロSDにVolumioを書き込んでみた。
やはりvine linuxのddコマンドでやると上手くいかない。
Windows7で書き込むと問題なく動く。
これは他で聞かない問題だし、当方で特有の問題なのかもしれない。

記述忘れを追記に追記。
Volumio1.55では前述のDACボードはまだ試していない。

7月13日、追記。ようやく原因がわかった。
いつもそうだが、分かったらバカみたいな話だ。

僕はrootだったら何でもできるというふうに理解していた。
でも、実はそういうわけではなかったということだ。
このトラブルの最初から僕はrootで作業していて、
[root@localhost abk1]# dd bs=1M if=/Download/Volumio1.55PI.img of=/dev/sdb みたいな感じでコマンドを打っていた。
rootだからsudoは要らないと思っていた。
ふと思い至って、
[root@localhost abk1]# sudo dd bs=1M if=/Download/Volumio1.55PI.img of=/dev/sdb と打ったら、問題なく動くカードができた。
rootでもsudoが必要だったのだ。

1年以上前のエントリーに追記。
上記のsudoで上手くいくというのは一瞬の思い込みだった。やっぱり上手くいかないことが多い。謎のままだ。

何はともあれ、Volumioは起動した。

ひとつだけ、困ったことがあった。Volumioの通常のコントロール画面からは、flacファイルはPlaylistに読み込むことが出来るが、cue sheetを読み込むことが出来ない。
うちの音楽ファイルの殆どはCDからリッピングしたflacとこれに対応するcue sheetだ。
cue sheetが読み込めないようだとCD1枚分のflacファイル毎しか選択できない。
曲の選択が出来ないのは、とても不便だ。

Volumioにsudo、sshでアクセスして、少し調べてみる。passはvolumio。

root@volumio:~# mpd -V
Music Player Daemon 0.19.1
(中略)
Playlist plugins:
extm3u m3u pls xspf asx rss soundcloud cue embcue

Volumioのmpd自体はcue sheetに対応している。
ローカルで使われているmpdクライアント(mpcらしい)が対応していないために、使えないということらしい。
だったら外からcue sheetに対応してるクライアントでVolumioにアクセスしたらどうか。
うちでメインに使っているncmpcppはcue sheetに対応している。

ncmpcppのconfigファイルの、mpdサーバのIPアドレスを書き換えてVolumioにアクセスしてみる。
VolumioのPlaylistが表示された。アクセス成功。
NASの階層を辿り、cue sheetをPlaylistにaddすることも可能。再生も問題ない。
ncmpcppからVolumioを操作してcue sheetを使用することが出来た。

ここで、ウェブブラウザからVolumioにアクセスしてみる。
ncmpcppで表示されていたとおりに、cue sheetに記載されている曲がPlaylistにずらりと表示されている。
曲の選択、再生、削除もウェブブラウザから可能だ。
ウェブブラウザからのアクセスではcue sheetをPlaylistに加えられないが、加えられてしまえばそれ以外の操作は出来る、ということらしい。

今回、「cue sheetに対応したmpdクライアント」という情報は意外にないということに気付いた。
うちで使っているncmpcppとgmpcは対応していることが分かっている。
他はどうか知らない。
Volumioでcue sheetが使えないのを理由に諦めている人がおられるようなら、こうしたクライアントを使ってVolumioを操作したらいいと思う。

ちょっと追記。
ncmpcppは、0.5.8 (2011-10-11)でcue sheetに対応している。
mpdは、ver 0.16 (2010/12/11)の時点で対応しているようだ。libcueなしでよくなったのはver 0.17 (2012/06/27)からだと思う。

関連リンク。
Music Player Daemon
Clients

音のほうは、あちこちで評価されているとおりだと思う。
今後のコンポの構成を考えないといけない。

でも、Ras Piの音を聴く前に、新しいDACを注文してしまっているのだ、、、まあ、DACとして使わなくても他で使いようがありそうなのでいいのだけど、、、

Posted at 19:44 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Sep 11, 2014

加入者網終端装置(CTU)の設定でネットワークを分割する

いくらか追記。
若干、表現の修正あり。
あと、おそらくは不正確な内容を含むのでご注意を。

9月16日、追記。
この連休はシステムをあれこれいじっていたんだけど、当初得られた変化が,その後はどうも得られない。
何故なのか考えていて思い至ったことは、CTU装置を再起動したことだ。
AirMac Expressの音飛びと格闘していた頃、iTunesの再起動で一時的にシステムが安定するということがあった。
今回の当初の変化は、CTUの再起動で何か電気的に整理されたことによるものかもしれない。
まるで68kマックみたいな話だが。

ということで、当面は当初得られたと思われた効果が、その後は得られないという感じだ。
まあ、オーディオやってるとそんなこともある。

19日、追記。
CTUを再起動したらLANが安定したことを5月の時点でここで書いていたのをすっかり失念していた。

家庭内LANが安定しないとネットオーディオネットワークオーディオの音質に悪影響があるというのは、ずいぶん前に認識していた。
覚書として以前の顛末の記録をリンクしておく。
曲が再生中に止まるケース | Apple サポートコミュニティ

いろいろやってるが、知識なしに手探りでやってるので恥ずかしい。
今もそうした傾向は変わってない気がするが。
なにが知識がないといって、ipアドレスのことすら理解しないままにいじっている。
よくこんなんでやってたわと思うのだが、言い訳するようだが、ipアドレス、ネットワーク、あとサブネットマスクについて、分かりやすく書かれた書籍は少ない。僕なりに勉強してはいたが、分からなかったのだ。
僕の理解力が低いのかもしれないが。

だから今回、サブネットマスクを使ってネットワークの分割を試みるのは非常に骨が折れた。
だから後日の参考のため書き留めておく。

そもそもは、ウェブを巡回したりYouTubeを見たりするパソコンと、オーディオ再生に関わるmpdサーバやNASが同じネットワークにあるのはどうなのか、というところから始まっている。
前述のAirMac Expressのケースでは、Safariを使うだけで音が飛ぶということが書いてある。
うちでは数台のパソコン、2台のスマホ、ゲーム機が家庭内LANにつながっている。
TCPはもちろん、動画などUDPのパケットがネットワーク上を巡っている状態だ。
これらはオーディオ的にはノイズなので隔離したい。

いくつか、そうした趣旨で書かれたエントリーがある。
以下にリンク。参考にさせていただいた。

音のよいネットワーク構成 | PCオーディオ実験室
ネットワークプレーヤ用ネットワーク - 2014.07.27 - デジファイのおと
M3のオーディオ部屋: LANの接続で音が変わる

以下はサブネットマスクに関連してリンク。

IPアドレス サブネットマスク 早見表|ahref.org
サブネットマスク計算(IPv4)/サブネット一覧(早見表) CMAN インターネットサービス
DHCP設定は正しいか?~DHCP設定の確認と利用~ - @IT

サブネットマスクの設定を変えることで、LANのネットワークを分割することが出来る。
物理的なLANケーブルの構成も適正にすれば、ノイズになるパケットをmpdの周辺から排除することが可能かと減らすことが出来ると思われる。

ネットワークについてリンクなどを追記。

ブロードキャストとマルチキャスト mileruntech
ブロードキャスト・アドレスの種類 - @IT
WEBを構成するネットワーク
サブネットマスクとルート集約

パケットが巡ってくること自体を防ぐことは出来ないが、その後の処理の仕方の違いによって負担が違ってくるようだ。ネットワークを切り分けることで、mpdサーバにとって簡単な処理ですむパケットが増える、という解釈が可能だろうか。
異なるネットワークのパケットが巡ってくるのを完全に遮断するには、ルータ、L3スイッチングハブを使うか、LANケーブルの接続を切るしかないかもしれない。

うちはフレッツ光マンションタイプに契約していて、それをベースに家庭内LANを組んでいる。
DHCPサーバは加入者網終端装置(CTU)が担っている。
このCTUの設定を変える必要がある。
以下に設定画面の画面。
ウェブブラウザからCTUにアクセス、ログインし詳細設定からリンクをたどると設定画面が出てくる。

フレッツ光のサイトとCTUのマニュアルにリンクしておく。
フレッツ・光プレミアム(インターネット接続サービス) サポート情報
加入者網終端装置(CTU)・ガイドブック[ファミリー/マンションタイプ用] 第14版(pdf)

以下、今回やったことを記載。

IPアドレスはデフォルトの192.168.24.1で固定。
変えてみての試みは今回はしていない。

マスク長をデフォルトの24から27に変更。
マスク長が3増えるということは、ネットワークのサイズは8分の1になる(2の3乗=8)。
これに伴い、払い出し開始IPアドレスを192.168.24.51から192.168.24.4に変更した。
マスク長が27だと、CTUが管理するIP数が256の8分の1だから32になる。払い出しが51からだと払い出せなくなる。
デフォルトが51からになっている理由はよく分からない。マスク長が24ならそれでも問題ない。

IP数が32ということは、内訳はどういうことになるのか。
最初は0で、これはネットワークのアドレスになる。
1はルーターのアドレス(192.168.24.1)。
32番目の31は、ブロードキャストアドレスというもので、ネットワーク内のすべての端末にデータを送信するために使われるので、個々のホストPCには使えない。
つまり、使えるアドレスは32-3=29個、ということになる。
払い出し個数が、デフォルトの50のままでは多過ぎるので25にする。一般家庭の家庭内LANであれば十分な数だ。
これらをDHCPサーバであるCTUが管理するということだ。
IPアドレスで言うと、192.168.24.0から192.168.24.31を、CTUが管理することになる。
ネットワークにPCなどを継ぐと、これらのアドレスの中から使えるアドレスをCTUがPCに割り振ってくれる。

ここでmpdのほうを見てみる。
うちではmpdサーバのibook G4に192.168.24.60。NASのhs-210に192.168.24.61を当てている。
サブネットマスク長を24から27に変えると、ひとつのネットワークのIP数は256から32になる。
つまりmpdとNASは、CTUが管理するネットワークから外れる。
ネットワークアドレスが192.168.24.32のネットワーク、つまり192.168.24.32から192.168.24.63のネットワークに含まれることになる。
こっちには192.168.24.0のネットワークで流れているパケットは流れ込まない、はず。
流れ込まないなら、かなり静かな環境になるはずだ。

mpdクライアントとして使っているCompaq 6730b Vine Linuxは、メニューのクリック→プルダウンで簡単にネットワーク設定を変えることが出来る。普段はCTUから供給されるアドレスで使いながら、mpdの操作をするときやNASの設定に用があるときだけIPアドレスを192.168.24.50とかに変更して、mpdのネットワークに入ればいい。
これは意外に快適だ。
下の画像は、ネットワークの設定の記録。

問題は、hs-210がウェブにアクセスできないこと。
アップデートなど告知が出ない。無論、アップデートも出来ない。
出来るようにするためには、そのたびにCTUの設定を変えるしかない。
この問題をクリアしようと思ったら、間にルータを挟むことになる。それはそれで面倒だし、ルータのノイズが気になってくるところなので、悩ましいとこかもしれない。

音は良くなっている気がする。
上手くいえないが、ぐっと落ち着いた感じがする。

と思ったけど、まだ判断するのは早すぎるかもしれない。

Posted at 18:19 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Jul 09, 2014

audio_output_formatについて(Vine Mpd ppcについて覚書-13)

NASを変更して2ヶ月になる。
その間になんとなく気になることが出てきた。

変更以前は、mpd.configのaudio_output_formatの設定でアップサンプリングして使っていた。
88200:24:2が良さそうだと感じていた。
それがどうも良さそうじゃなくなってきた。
最近は44100:24:2にしたりしていた。

なんだろうか、と思っていたところ、mpd.conf(5) - Linux man pageで興味深い記載を見つけた。
audio_output_formatの次、「samplerate_converter」の項目だ。
以下引用。読みやすいように改行を少し変えている。

samplerate_converter
This specifies the libsamplerate converter to use. The supplied value should either be an integer or a prefix of the name of a converter. The default is "Fastest Sinc Interpolator".

At the time of this writing, the following converters are available:

Best Sinc Interpolator (0)
Band limited sinc interpolation, best quality, 97dB SNR, 96% BW.

Medium Sinc Interpolator (1)
Band limited sinc interpolation, medium quality, 97dB SNR, 90% BW.

Fastest Sinc Interpolator (2)
Band limited sinc interpolation, fastest, 97dB SNR, 80% BW.

ZOH Interpolator (3)
Zero order hold interpolator, very fast, very poor quality with audible distortions.

Linear Interpolator (4)
Linear interpolator, very fast, poor quality.

internal
Poor quality, no floating point operations. This is the default (and only choice) if MPD was compiled without libsamplerate.

For an up-to-date list of available converters, please see the libsamplerate documentation (available online at ).

internalというのはmpdに組み込まれているという意味らしい。
和訳してみる。
「クオリティは低く、浮動小数点演算をしない。libsamplerateなしにmpdがコンパイルされているようならこれがデフォルトになる(そして、これしか選択できない)。」
なんとまあ。

mpdをインストールしたときに出来るconfig.logを確認したら記述があった。
「configure:8115: WARNING: libsamplerate not found -- disabling libsamplerate resampling」
96/24までリサンプリングしてもCPUの負担が大して増えないのは、増えないなりの理由があったというわけだ。

そういうわけで、audio_output_formatの項目をコメントアウトしてみた。
もとのflacファイルのフォーマット(44.1kHz/16bit)のままで出力されるはずだ。
どうも、悪くないようだ。
というか、これが一番良さそうだ。

NASを変更する前は、それでもリサンプリングしたほうが良いような気がしていた。
何で変わったのかは分からない。
しょっちゅう音切れを起こしていたし、NASからの信号自体の品質も低かったのかもしれない。そういう状況だったから、低品質でもリサンプリングするほうが多少ジッター軽減につながっていたのかもしれない。
かもしれないばっかりだが。

Posted at 13:36 in audio_diary | WriteBacks (0) | Edit Tagged as: , , ,

May 01, 2013

Vine Mpd ppcについて覚書(12)デーモンの刈り込み

必要がないのに動いているdaemonを停止することで音質向上が見込めるということでやってみた。
そんなに期待してなかったという面があるからかもしれないが、期待以上の変化があった。
画像で例えると、640*480が1600*1200になるような感じ、というと言い過ぎか。
解像度が上がり見通しが良くなる。

最近は過渡特性とかトランジェントと呼ぶらしいが、音声の立ち上がり、立下りが良くなってリアリティが増してくる。肌理細かい音になるので、打楽器のアタック音は際立つけれど耳に障らない音で再生される。ボーカルは細やかなニュアンスが再現されるようになる。
そういう感じを求めているんだけど、デーモンの刈り込みで求めるところに近づくと思う。
楽器の音とか優れた歌い手の声というのは本来から快い音なので、上手く再生されるとそれだけで音楽自体の好みとか関係なく聞き惚れてしまうということがある。オーディオマニアは音ばかり聴いて音楽を聴いてないというけど、それも仕方ないじゃないかという状況になるのが目標といっていいかもしれない。

現在の状況は以下の通り。
刈り込んだデーモンは赤色表示。起動中は青。

[root@localhost ab]# chkconfig --list 
NetworkManager  0:off   1:off   2:on    3:off   4:on    5:on    6:off 
anacron         0:off   1:off   2:on    3:off   4:on    5:on    6:off 
apache2         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
atalk           0:off   1:off   2:off   3:off   4:on    5:on    6:off 
atd             0:off   1:off   2:off   3:off   4:on    5:on    6:off 
autofs          0:off   1:off   2:off   3:off   4:on    5:on    6:off 
avahi-daemon    0:off   1:off   2:off   3:off   4:off   5:off   6:off 
avahi-dnsconfd  0:off   1:off   2:off   3:off   4:off   5:off   6:off 
bluetooth       0:off   1:off   2:off   3:off   4:on    5:on    6:off 
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off 
cups            0:off   1:off   2:on    3:off   4:on    5:on    6:off 
dhcpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
dhcrelay        0:off   1:off   2:off   3:off   4:off   5:off   6:off 
dkms_autoinstaller      0:off   1:off   2:off   3:off   4:off   5:on    6:off 
dnsmasq         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
dovecot         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
firstboot       0:off   1:off   2:off   3:off   4:off   5:on    6:off 
haldaemon       0:off   1:off   2:off   3:off   4:off   5:on    6:off 
iptables        0:off   1:off   2:off   3:off   4:on    5:on    6:off 
irqbalance      0:off   1:off   2:off   3:off   4:off   5:off   6:off 
iscsi           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
iscsid          0:off   1:off   2:off   3:off   4:off   5:off   6:off 
lirc            0:off   1:off   2:off   3:off   4:off   5:off   6:off 
mdmonitor       0:off   1:off   2:off   3:off   4:off   5:off   6:off 
mdmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
messagebus      0:off   1:off   2:on    3:off   4:on    5:on    6:off 
named           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
netfs           0:off   1:off   2:off   3:off   4:on    5:on    6:off 
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off 
nfs             0:off   1:off   2:on    3:off   4:on    5:on    6:off 
nfslock         0:off   1:off   2:on    3:off   4:on    5:on    6:off 
nmb             0:off   1:off   2:off   3:off   4:off   5:off   6:off 
nscd            0:off   1:off   2:off   3:off   4:off   5:off   6:off 
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off 
portmap         0:off   1:off   2:off   3:off   4:on    5:on    6:off 
postfix         0:off   1:off   2:on    3:off   4:on    5:on    6:off 
proftpd         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
random          0:off   1:off   2:on    3:on    4:on    5:on    6:off 
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
rpcidmapd       0:off   1:off   2:on    3:off   4:on    5:on    6:off 
saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off 
smb             0:off   1:off   2:off   3:off   4:off   5:off   6:off 
sshd            0:off   1:off   2:off   3:off   4:off   5:on    6:off 
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off 
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off 
uuidd           0:off   1:off   2:on    3:on    4:on    5:on    6:off 
winbind         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
wpa_supplicant  0:off   1:off   2:off   3:off   4:off   5:off   6:off 
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off 
 
xinetd ベースのサービス: 
        chargen:        off 
        chargen-udp:    off 
        cups-lpd:       off 
        daytime:        off 
        daytime-udp:    off 
        echo:           off 
        echo-udp:       off 
        rsync:          off 
        services:       off 
        swat:           off 
        telnet:         on 
        time:           off 
        time-udp:       off 

atalkやbluetoothなど以前から止めてあったdaemonもあるが、分からないものは放置していた。
手始めにsshdから止めて、 irqbalance、 iscsi、iscsid、 mdmonitor、 avahi-daemon、 dkms_autoinstaller、 firstboot、 netfs、nfs、nfslock、rpcidmapd、portmap、 NetworkManager、 iptables、 haldaemon、messagebus、 anacron、atd、autofs、と止めてしまった。
今のところ、システムは安定していて問題は出ていない。

追記。
うちのシステムでは、OS起動時にNASをマウントするような設定はしていない。
手動でコマンドを打ちマウントさせている。

「/etc/fstab」に設定を記載し自動でマウントさせるということなら「netfs」は止めてはいけないかもしれない。fstabに関係するデーモンだからだ。他にも関連するデーモンがあるかもしれない。
各々のシステムの状況によって止めることが出来るデーモンは違うので、一応、注意書きしておく。

コマンドについて覚書。

# chkconfig --level 345 iscsi off

上記のような感じでランレベル、サービス名、on/off、で設定する。
システムを再起動したら元に戻ってしまう場合もあるらしいが、Vine Linux 5.2 ppcの場合はこれだけで再起動後にも反映される。

それにしても随分止めたものだ。
haldaemon、messagebusなどはサイトによってはOFFにすべきではないデーモンに分類されている。実際、Powerbookのほうでもあれこれと止めていたらマウスの入力を受け付けなくなって慌てた。
正直なとこ、最後のほうになってくると音がよくなってるのかどうかはっきりしない。十分な試聴が出来ないので評価しないままどんどん止めている。本当は評価しながらしたほうがいいのだろうけど、なかなか難しい。

以下、参考にしたサイト。

http://www.d3.dion.ne.jp/~koetaka/demon2.html 不要なサービスを停止する STARTUP LINUX
http://www.obenri.com/_minset_cent5/daemon_cent5.html ◇不要デーモンの停止(CentOS5)◇☆お便利サーバー.com☆
http://www.obenri.com/_minset_wbel3/daemon_wbel3.html ◇不要デーモンの停止(WBEL3)◇☆お便利サーバー.com☆
http://d.hatena.ne.jp/weblinuxmemo/20090911/p1 不要なサービスの停止 - Linux Memo: Vine Linux 5 設定 tips
http://ikubo.x0.com/unix/CentOS50_stop_Service.htm 不要なサービスを止める (CentOS 5.0)
http://linux.rakunet.jp/linux/service_stop/service_stop.html 不要なサービスを停止
http://www.kozupon.com/etc/daemon.html Kozupon.com - 不要なデーモンの停止とシステムのセキュアー化!

他にもあちこち見て回った。

自分用にdaemonの一覧表を作ることにした。
前述のサイトから記述をもらったりしている。この場で申し訳ないけど御礼申し上げます。

NetworkManager

off

無線LANの暗号化キーなどの管理を行い、利用状況に応じて複数のNICの自動切換えを行うデーモン、とのこと。動的なネットワーク管理システムで、モバイル状況などでGUIで設定を容易にできるので便利。しかし、/etc/resolv.conf を自動で上書きしたりするため困ることがあるらしい。

anacron

off

コマンドをタイムスケジュールに応じて実行する「crond」は、その実行予定時刻にシステムが稼動していない場合には実行がキャンセルされる。「anacron」は「crond」のタイムスケジュールを管理し、実行がキャンセルされてしまったコマンドを「後から追っかけて実行」するデーモン。

apache2

off

HTTPサーバを作るときに使う。

atalk

off

OS9以前のMacにAppleTalkで接続するためのデーモン。

atd

off

「at」コマンドのために必要なデーモン。「at」は単発的に指定時刻にコマンドを実行するために使用する。

autofs

off

フロッピーディスクやCD-ROM、DVD-ROMなどのリムーバブルストレージやNFSなどを自動的に接続、マウントし、設定時間以内のアクセスが無ければアンマウントするデーモン。

avahi-daemon

off

アプリケーションが、マルチキャストDNSを使って名前を公開したり解決したり出来るようにするためのデーモン。
※Avahi: MacOSXのボンジュールの様なもの。設定の必要なしにネットワークに参加できるようにするための技術。DHCP、DNS、プリンタやファイルの共有などを設定なしに行う。このデーモンはその一部。

avahi-dnsconfd

off

Avahi dns configuration daemon。ネットワークを監視して、設定なしでDNSサーバを見つける。見つけたDNSサーバは「resolv.confより優先させる」ということらしい。

bluetooth

off

bluetoothワイヤレス通信サービス。bluetoothを使わないなら止める。

crond

on

タスクスケジューラー。設定はユーザーごとに「crontab」に記述。システム全体用のcrontabも存在する。指定した時刻にサーバーが起動していなければタスクはスキップされる。決められた時間にジョブを実行するのに必要。止めてはいけないデーモンらしい。

cups

off

プリンタ関連のサービス。プリンタサーバーとして使用する場合は必須。

dhcpd

off

Dynamic Host Configuration Protocol(DHCP:動的ホスト設定プロトコル)とInternet Bootstrap Protocol(BOOTP)とを実装したもの。要はDHCPサーバーとして使用する場合に必要。

dhcrelay

off

DHCPサーバが直接には接続されていないサブネットからのDHCP要求やBOOTP要求を、他のサブネットにある1つまたは複数のDHCPサーバに中継する手段を提供する、とのこと。

dkms_autoinstaller

off

起動時にDKMS対応のカーネルモジュールを自動的にロード、インストールするという。

dnsmasq

off

小中規模の内部ネットワークなどで簡易的なDNSサーバを立てる場合に使う。

covecot

off

POP/IMAPサーバー(メール受信サーバー)として構築する場合に使用。

firstboot

off

インストール後、最初の起動時に初期設定を行う。このデーモンは一度実行されると初回起動時設定完了が記録された「/etc/sysconifg/firstboot」が作成され、このファイルを削除しない限り「firstboot」は再び実行されることはない、という。

haldaemon

off

デスクトップ間アプリケーション通信のプロトコル「D-BUS」をサポートするデーモン。
HAL(ハードウェア抽象化層)という仕組みに関係し、プラグ&プレイデバイス(USB外付けHDDやUSBメモリ等)に対応するハードウェア情報収集サービス。比較的新しい機構で、Linuxカーネルはこの仕組みを使ってデバイスを管理できるようになっている。PCI、SCSIなどのバスも監視する。「messagebus」を動かしておく必要がある、とのこと。
止めてはいけないデーモンらしいが。

iptables

off

IPv4用のパケットフィルタリングソフトウェアによるルーティング&ファイヤーウォール。ファイヤーウォールを設定しない場合でも、これが稼動していなければ動作しないアプリもあるというが、、。

irqbalance

off

マルチCPU環境で2ndCPU以降も割り込み処理を行えるようにして効率よく処理を分散させるデーモン。マルチCPUかどうかは「# cat /proc/interrupts」で確認できる。動作確認は「# /etc/init.d/irpbalance status」「# ps aux | grep irqbalance」で行う。
当然、シングルコアなら不要。

iscsi、iscsid

off

SCSIプロトコルをTCP/IPネットワーク上で使用する「iSCSI接続」をサポートするデーモン。

lirc

off

Linux Infrared Remote Control。リモコンと関係があるらしい。

mdmonitor

off

ハードディスクをソフトウェアRAIDで使用する場合の監視デーモン。エラーの発生時にシステム管理者への通知する。

mdmpd

off

MD multipath Daemon。ソフトウェアRAIDで、一つのハードディスクに対して複数のインターフェースから接続可能なサーバーシステムを使用する場合の監視デーモン。multipathデバイスの監視をサポートするサービス。

messagebus

off

デスクトップ上で相互にメッセージを送るためのデーモン、とのこと。
「D-Bus」を使用可能にするデーモン。haldaemon、dhcdbd、oddjobdなどを動かすなら必要。
※D-Bus:メッセージバスの1つ。特定のサービスにメッセージを送信したり、興味のある全てのサービスにメッセージをブロードキャストするためのAPIを提供。APとシステムの低レベルにあるコンポーネントとの間でイベントを送信が可能になる。
止めてはいけないデーモンらしいが、うちのibookでは止めている。

named

off

DNSサーバーアプリケーション「BIND」のデーモン。

netfs

off

「/etc/fstab」にsmbfs、cifs、nfsなどファイルシステムをマウントするように記述していると、システム起動時にマウント、シャットダウン時にアンマウントしてくれる。
NFSクライアントデーモン。NFSサーバーに接続してファイル共有するために必要。
これを稼動させていなければ「autofs」デーモンが稼動していてもファイル共有できないらしい。MacOSXやNFSサーバーを実装したWindowsOSとファイル共有をする場合にも必要となるらしい。

network

on

ブート時にネットワークインターフェイスを設定するサービスで、OFFにすると起動時にネットワークに繋がらなくなる。手動で設定を行わないといけなくなる。
止めてはいけないデーモン。

nfs

off

Network File System。Linuxファイルシステムのマウントに関わる。動かすには「portmap」も必要。

nfslock

off

NFSサーバーのデータを保護するための「ファイルロック機構」を提供するデーモン。「portmap → nfslock → nfs」の順に起動する必要がある。

nmb

off

Samba関連。名前解決プログラムであるnmbdと関係あるらしい。

nscd

off

ネームサービスキャッシュデーモン。passwd、group、hostsなどをキャッシュして、libc経由で提供する。DNSやNISの情報をキャッシュするので、/etc/resolv.conf などを編集したら再起動が必要。DNSを使っていれば必要ない?

ntpd

off

Network Time Protocol daemon。NTPで上位のNTPサーバーのタイムゾーンの設定を参照して時刻を調整し、同時にサーバーとして時刻を配信する。インターネット標準時サーバと同期してシステム時間をセットし維持するオペレーティング・システム・デーモン。
うちでは最初から止まってた気がするが、どうなんだろうか。止めてはいけないデーモンらしい。

portmap

off

Linux向けRPC(remote procedure call)関連のポートマッパー。RPCに対する要求に応答し要求されたRPCサービスへの接続を設定する。ポートマップはRPCサーバプログラムが起動される前に動作していなければならない。NFSやNISなどを使用する場合は必要だがNFSv4では不要。NIS、NFS、FAM以外ではほとんど使われないらしい。

postfix

off

メールサーバー。

proftpd

off

port mapperサービス。NFSやNISを使用する場合に必要。

random

on

システム上で乱数を発生させるデーモン。SSLなどセキュリティ関連で必要になったり、アプリケーションが「どちらでもいい」という曖昧な処理を行う場合に利用することがあるという。

rdisc

off

ローカルなサブネット内でルーターとして動作させるときの経路管理を行うデーモン。

rpcidmapd

off

NFSを利用するときに利用するセキュリティ関係のユーティリティで、ユーザー名/グループ名とUID/GID のマップを保持するデーモンとのこと。NFSを使わないならoff。

saslauthd

off

SASL(Simple Authentication and Security Layer)のデーモン。IMAP、POP3、SMTPなどの認証を支援する。コネクションベースのプロトコル認証をサポートするデーモン。

smb

off

LinuxでWindowsOSのファイルサーバーを稼動させるアプリケーション「samba」のデーモン。

sshd

off

リモートホストとの通信を暗号化してやりとりを行う「SSH」で通信するために必要。

syslog

on

システムのログを記録する。サーバー不調時にログが無いと困る。

udev-post

on

ハードウェア自動認識を行うデーモン。止めてはいけない。

uuidd

on

UUID(Universally Unique Identifier)ライブラリから利用されるデーモン。時刻情報に基づくUUIDを、安全にそして一意性を確保して生成する。最近のLinuxディストリビューションの場合、このUUIDを例えばハード・ディスクの個々のパーティションを識別するための情報として使っていたりする。UUIDは「/etc/fstab」ファイルの中身を見れば確認できる。

winbind

off

「samba」でWindowsOSのファイル共有を行う際に、ホスト機をNTドメイン(WidnowsOS独自のネットワークユーザー管理システム)に参加させるためのデーモン。

wpa_supplicant

off

無線LANの暗号化及び認証の規格であるWPA(Wi-Fi Protected Access)をサポート。

xineted

on

スーパーサーバーデーモン。telnetやswatなどxinetdでコントロールするサービスがあるならon。

Posted at 10:00 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Apr 17, 2013

Vine Mpd ppcについて覚書(11)mpd.conf : audio_buffer_sizeとbuffer_before_play

mpd.confの記載内容に関して。
過去のエントリーで以下のように書いていた。

# MPD Internal Buffering ####

audio_buffer_size		"384"
buffer_before_play		"5%"
#

ここの設定について追記。新規エントリーにする。
参考にリンク。
http://linux.die.net/man/5/mpd.conf

「audio_buffer_size」と「buffer_before_play」のデフォルトは2048と10%らしい。これらを変更することで音質が変わるという。
「audio_buffer_size」の数値はkbである。
「buffer_before_play」はaudio_buffer_sizeのうち何%使うかを0~100%の範囲で設定できる。

5%は少なめの設定だが、384kbの5%ということなら20kb弱だ。
この数値にどういう意味があるのか分からない。
ひどく少ない。
256kbの5%だと12.8kbになってしまう。
これは44.1/16の音楽データだと0.1秒に満たない。384kbの5%だと0.1秒を超える。

384kbの5%は、44.1/16の音楽データだと0.1秒を超えるぐらい。
しかしうちでは88.2/24にアップサンプリングしてるので、0.1秒よりもっと短いはずだ。

上記の設定で、CD1枚単位をflac+cue sheetにリッピングしたものを通して再生する分には、全く問題ない。
しかしiTSから買ったアルバムを通して聴く場合だと、ライブ盤を再生すると音が途切れるのが分かる。m4aをギャップレス再生できないのだ。
384kb/5%では足りないのだろうか。

bufferに関連してリンク。
http://mpd.wikia.com/wiki/Music_Player_Daemon_Crossfading_Troubleshooting
リンク先から引用してみる。

MPD does crossfading by using the buffer.
The amount of buffer used for crossfading is the size of the buffer minus the amount of space reserved for buffer_before_play.
By default (2MB buffer and 25% buffer_before_play) this is approximately 9 seconds of crossfading for 44.1 khz, 16-bit, stereo audio.
If you have the buffer_before_play set to 100%, there will be no crossfading.

crossfadingという操作がmpdクライアントから設定できる。
曲再生が終わって次の曲に移る際に数秒間かぶるように出来る(秒数も設定できる)。

ここで書かれていることから推測するに、buffer_before_playで使われる以外のbufferに、crossfadingのためのデータを読み込むということらしい。
こうした特別な使途がないなら、ほとんどなくてもいいbufferなのかもしれない。
逆に、before playとcrossfading以外で使うことがあれば不具合があるかもしれない。
ギャップレス再生の不具合とは関係があるのだろうか。
http://linux.die.net/man/5/mpd.confには「Try increasing this if you hear skipping when manually changing songs.」とあるが、skippingというのがどういう状態かよく分からない。

みみず工房掲示板からも引用する。

audio_buffer_size
decoderスレッドからoutputスレッドへデータを受け渡すfifoバッファーのサイズです。
buffer_before_play
audio_buffer_sizeのデータがこれより少なくなるとdecoderが動いてバッファーにデータを追加します。
再生開始時はバッファーにデータがこの値になるまで開始されません。
この値を100%にすると常に空きが出ないようにdecoderが動きます。

ここも参考にリンク。
http://d.hatena.ne.jp/propella/20061202/p2 ALSA PCM プログラミングのサウンドバッファ - 言語ゲーム

「audio_buffer_size "384" buffer_before_play "5%"」だと、20kb弱のbufferを切らさないようにdecoderが動いてるってことになる?
audio_buffer_size "1024" buffer_before_play "100%"といった設定だと、1MBのbufferを常に抱えることになる。
全く状況が違ってくるだろう。
常にdecoderが動いてるというのは望ましい状態なのかどうか。
buffer_before_playが100%だと常にdecoderが動くということだけど、buffer_before_playが小さい場合もdecoderが動く頻度が多くなると思う。
再生音にどんな変化があるのだろう。

どんな設定がいいのか、試行錯誤してみる。

こういう試行錯誤がやりやすくなった背景にはibook G4をtelnetサーバーにしたということがある。
当初はsshを考えていたんだけど「鍵」の扱いが面倒でやめた。もしかしたら鍵を使わない設定も出来るのかもしれないが分からなかった。家庭内LANなのでと割り切ってsshdも止めてしまった。

telnetサーバーはVine Linux ppc 5.2には最初からは入ってないので、Synapticパッケージマネージャを使ってインストールした。
当然だけどtelnetを使うと何かと楽だ。いちいちオーディオラックの下からibookを引っ張り出す必要がないし、ncmpcppを操作しながら、同じ画面でmpdサーバーの状況も操作できるというのは面白い。

クラシックの歌劇のCDを曲ごとにリッピングし、flacで保存したものを再生する。
「audio_output_format」は44.1kHz、16bitに固定した。

まず「audio_buffer_size "256"」にしてみる。
「buffer_before_play」の値は、0、10、50、100と換えてみた。
結果、これでは数秒間しか音が出ないことが分かった。
256では駄目みたいだ。

次に「audio_buffer_size "264"」にしてみる。
再生自体に問題はない。
しかし「buffer_before_play "100%"」にするとncmpcppでFキーを押して早送りすると、そのあと音が出なくなるなど再生の不具合が出る。
「buffer_before_play "10%"」にすると問題なくなった。
buffer_before_play以外のbufferは使用状況によっては不可欠かもしれない。
ギャップレス再生は問題なし。

いろいろ試していく。
こまごま書いていっても分かりにくいので、結果を表にする。
縦軸が「buffer_before_play」。
横軸が「audio_buffer_size」だ。


256 264 288 320 512 1024
0 b np np np np np
10 b np np np np np
20 b np, f



30 b np, f



50 b np, f np, f np np np
60 b f



80 b
f f f np
90 b



f
100 b f f f f f
  • b : 再生しても数秒間しか音が出ない状態。
  • f : Fキーで早送りしたときに不具合が生じる。
  • np : no problem

npとfの両方が付いているのは、不具合が出る頻度が少ないと感じた所である。
あまり厳密に回数を数えたりまではしなかったので、印象での評価だ。

ざっと見た感じ、早送りにはbuffer_before_play以外のbufferが必要だと分かる。
必要な数値を計算してみる。
1024*(1-0.8)≒200、320*(1-0.5)=160、264*(1-0.3)≒185

どうやら、200kb程の余裕があれば、問題なく早送り出来るようだ。
余分のbufferが足りないと早送りの後で音が出なくなったりする。それでも何回かFキーなどを連打したら音が出る。
しかし、buffer_before_playが100%だとそれも上手くいかない。早送り自体が出来ないこともあり、止まったときに音を出すにはトラックの初めから再生するしかないようだ。

ギャップレス再生はaudio_buffer_sizeが256kbのとき以外の条件だと問題なく出来た。
256kbでは再生自体がままならなかったので仕方ない。
ということは、ギャップレス再生の可否はbufferの大きさには依存しないということだ。

m4aだとどうか。実は、audio_buffer_sizeが1024でも音が途切れる感じがあった。では、audio_buffer_sizeの数値によって途切れる感じが違ってくるかというと、以外にそうでもない。
mpdの設定よりも、ファイル形式による影響のほうが大きいのかもしれない。

現在の設定は以下の通り。きりがいい数値にした。

audio_buffer_size		"320"
buffer_before_play		"10%"

設定によって確かに音色の感触は違う。
しかし、どの設定が優れているかの判断は難しいと思った。
audio_buffer_sizeが大きいとゆったりした感触になるというのは世評のとおりだと感じた。

buffer_before_playの数値による違いは、どうもはっきりしなかった。
100%だとやや窮屈に聞こえるような印象で、音飛びさえなければ0%のほうがいいような気がする。しかし、そんな印象は気のせいじゃないか?という気もする。
素人考えだが、「0%」というけど実際に再生直前の音楽データのbufferを「0kb」で回してるなんてことは考えにくくて、実はmpdが勝手に判断してデータを切り回してると考えたほうが実際に近いのではないかと思う。

ちなみに、選曲時に「skipping」と思われる不具合も生じなかった。
そういうわけでbuffer_before_playは少なめだ。

アップサンプリングについての音質評価はまだしていない。しかし、少なくともbuffer_before_playの数値よりは影響が大きい印象だ。

ファイル形式によるギャップレス再生の不具合の違いは、そのうちまた確かめてみようと思う。
僕が使ったm4aファイルが、もともと良くないものだった可能性だってあるからだ。
iTunesで同じCDをリップして確認する必要があると思う。

追記。
CDを楽曲ごとにリップして作ったm4aファイルを再生してみた。
サンプリング周波数は320kHz。
やはりiTSで買ったファイル同様、わずかに楽曲間で音が飛ぶ。

ギャップレス再生の可否は、mpd自体の問題ではなく、各々のファイル形式のCodecによるのではないだろうか。本来ギャップレス可能になるはずのCodecにmpdが充分に適応できていないということなら、mpdの問題ということになるだろうけど。

Posted at 10:00 in audio_diary | WriteBacks (0) | Edit Tagged as: ,
Page 2 / 31 :  ‹ Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Next › »