新年あけましておめでとうございます。
今年もよろしくお願いします。
デジタル系の話題は、昨年末で一旦終了させて音楽のことやオーディオでも一番言いたいことがあるスピーカーのことなどから今年ははじめようと少し準備していました。
「Jessieのセットアップ済み版」でミスがありそれを直し再アップロードする段階で、不用プロセスを切りまくると世界が変わる、みたいなことを発見?してしまい夢中になって聴いているうちに、RTオプションの説明の追加分は年頭でいいやということになりました。
そしてこれを書いてますが、昨年末に書いておいた分にもう何項目か書き加えてアップする予定でした。Botic などなど 掲示板にこれから書き進めようとしていた内容(RTオプションの説明)の前だしを少し行いましたがこの件はひとまずここで中断します。設定方法などで不明な点がありましたら出来る限り回答するつもりです。中途半端ですが書いておいた分はここに残しておきます。
上にも書いたように、一旦デジタルの方から方向変換するつもりでしたが、そういうわけに行かなくなってしまいました。詳しい事情はここでは書きませんが、「みみず工房掲示板」をご覧いただけば察していただけると思います。
みなさん 「あっち」 の方を勉強していて下さい。
きっと良いことがあります。
これ以下は当初書き進めようとしていたRTオプションの説明です。機会があれば続編を書くつもりでいますが現状では未定です。
topコマンドの説明です。詳しことはリンク先をみてください。
RTオプションを使う場合まずBBB(G)の稼働状況を把握します。
コマンドラインから top -H と入力してみてください。
top – 04:43:36 up 3:03, 1 user, load average: 0.00, 0.01, 0.03
Threads: 109 total, 1 running, 108 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.
KiB Mem: 509568 total, 504888 used, 4680 free, 7140 buffers
KiB Swap: 0 total, 0 used, 0 free. 414136 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1222 root 20 0 4044 2008 1660 R 0.7 0.4 0:00.40 top
1154 mpd -54 0 138812 96116 56104 S 0.3 18.9 0:15.09 output+
1182 root 20 0 0 0 0 S 0.3 0.0 0:00.71 kworke+
1 root 20 0 7376 4496 3536 S 0.0 0.9 0:02.56 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthrea+
以下略
上の方ではどれだけ連続稼働しているとか負荷状況、プロセスがいくつ動いていていくつ待受状態かやメモリの利用状況などの総合的な状態を表示しますし、下のほうは、プロセスが稼働順に並び、一定時間ごとにそれが更新されます。
これを見てまず分かることは、非常に軽い仕事しかしていないことです。普通に音楽を再生している状態では10%を超えることはまずありません。(%Cpu(s): のところに表示)オーバーサンプリングしたりすると跳ね上がります。試しにこの画面を表示しながらMPDのデータベースの更新をすればそれが終わるまで高い値が続くことがわかります。mpd.confの設定を変えると%Cpu(s)が変わったりします。audio_buffer_sizeを大きくして行くと周期的に%Cpu(s)が上下しますが、ファイルを読み込みバッファーに貯めていくのが結構大仕事なんだなどということが分かり、それが音に影響してくるのをなんとなく納得したりします。
またここで注目しておきたいのは。PID(プロセスID)とPRとCOMMANDです。PIDはBBBを起動するたびに番号が変わります。PRのところにchrtで設定した数値が反映されます。
本来書き進める予定だった内容の一部 (掲示板から)
Boticでは、リアルタイムできっちり処理して欲しいのは、出力(Botic)だけなんですね。ファイルの読み取りとかデコーダーとかは間に合いさえすれば結構いつでもいい。マスタークロックは別のところから出ていますからそれに寄り添うようにI2Sの3本の信号線からデータが出ていることが最重要と思います。mpd.confのaudio_outputのpriority “FIFO:53”のところです。何度聴いてもここの数値をほかより大きくすると立体感増してきます。git版でもtopコマンドでPIDを確認しchrtにその数値を直接放り込んで指定すると、やっぱり効果があるので、git版が好みの方はそれもありかなと思いますが、毎回なので面倒です。
不用プロセスについては、例えば電源スイッチの様にいつ押されるか分からないのを待ってるようなやつが一番悪さしているんじゃないかと思います。電源スイッチの場合は、押されたらシャットダウンのプロセスが走るだけだと思うんですが、押されるまでずっと見張りというか巡回というかそういうものが動くわけです。そういうのがたくさんあると音声出力のタイミングとぶつかったりして、そっちを揺らすんじゃないのかとか思っています。