takobozu
takobozu
buildrootを使って色々なボード用のディストリを作ってます。

マイルーム

マイルームは公開されていません

レビュー/コメント

レビュー/コメントはありません

カレンダー

          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            

最新のレス

日記
製品レビュー/コメント

製品レビュー/コメントへのレスはありません

お気に入り製品

お気に入り製品はありません

お気に入りユーザー

お気にいられユーザー

日記

buildrootな日々 サルの独り言日記

このエントリーをはてなブックマークに追加
2017年12月12日

独り言日記 あの音を出したい

symphonic-mpdのおかげであの音に出会えた。シンバルの残響が美しくどこまでも鳴り響く、弦のすり合わせる音が生々しい、打楽器が非常に迫力がある。アコースティック楽器の残響(リバーブ)が従来のディストリとは異なるため、新鮮な体験を味わえる。音楽を聴いているのではなく、楽器の音を聴いている!そんな感じだ。人が作ってくれたものをそのまま利用するのは楽だが、サルはそれでは面白くない。そこで最近また、rpi3でupnpレンダラーを作ってあこがれの音にどこまで近づけるか?という実験を行った。結論から言うと(サルのハードウエア構成での話だが)かなりサルの聴きたい音になったように思う。
サルにはbuildrootという強力な武器がある。これで電源ぶち切りにできる、システム全体が完全にメモリ上で動くものを作った。(イメージの公開など絶対にしない。ただ、作り方は今後気が向いたら書く)

今回このシステムを作る際に課した制約というか条件を以下に示す。

(1)カーネルはノーマルカーネル
rtでもlowlatencyでもない、ノーマルなカーネルだ。バージョンは4.14.4。なぜか?それはrune audioとarchphileに対するリスペクトである。この二つの中身をみればわかるが、どちらもノーマルなカーネルだ。それであんな音がでるのかとあらためて感動したからだ。

(2)mpdは0.20系
mpdのバージョンは12月12日現在0.20.12だ。これをビルドした。runeとarchphileのmpdのビルド内容をreadelfで調べたが、どちらもvfpだ。neon、vfp4の文字がどこにもない。これも驚いた点だ。ただ、今回実験で作ったmpdはneon-vfp4でビルドした。neonはパパリウスさんが教えてくれたが、ソースにneonを使う旨を書き込みビルドしないとneonを使ってもらえないということだ。まあ、難しいことはパパリウスさんにお任せ。あと、有名なrtpatchは当ててある。

(3)クロックアップはしない。
一応、force_turbo=1にしてはあるが、smpdのようにクロックアップはしていない。sdramなんたらも全く設定していない。

(4)polipoは使わない。
これも今現在必要性を感じない。

以上の制約のもとsmpd,rune,archphileを参考にどこを真似していけばあの音に出会えるかのこれは実験だ。
そうそう、試聴環境も書き記しておく。

rpi3(element14製)es9023dac DC-ARROWによる分離給電,真空管アンプ(手作り)、フルレンジsp(tangband,W3-881SJF)一発

このspの鳴らし方は特殊でスピーカー本来のいい音を引き出そうと工夫されたものだが、これは部外秘だ。笑

今回試聴用に作った実験ディストリの内容についても書いておこう。

(1)symphonic-mpdからの引用
  ①最適化ビルド
   alsa-lib,mpd,flac,audiofileなど音楽再生に関係するであろうものは最適化オプションをつけてビルドした。
  ②cmdline.txt
isolcpus=0-3とした。これはここで指定したcpuコアにはカーネルのスケジューラーがプロセスの使用を制限するようにする設定だ。実際これを設定するとほとんどのプロセスはcpu0を使用するようになる。htopやtopで確認すれば一目瞭然だ。ただ、ps -eo psr,cmdを実行してみればわかるが、カーネルプロセス(スレッド)の一部は、cpu2やcpu3に割り当てられているのでこれはもとからそういう設定になっているんだろう。詳しいことはわからない。
   nohz_full=1,2,3とした。これはcpu1,2,3はfullticklessで、というものだ。tickによって音楽再生を妨げないようにという考えだそうだ。
   rcu_nocbs=1,2,3とした。ただ真似しただけだ。

  ③config.txt
これは、dtoverlay=でwifiをdisabel にする設定くらいだ。
  
  ④プライオリティ、アフィニティの設定
   これは、smpdのmpdpre.shの内容にほぼ近いものを設定している。具体的には、mpdのplayer,decoder,outputスレッドがcpu3を使うよう,io,mpdはcpu0を使うようtasksetすること、プライオリティはrenice,chrtを使って適当に。

  ⑤audio_outputのbuffer_time period_timeの設定
   これも今までは、適当だったがsmpdの設定と同じにした。

(2)upnpレンダラー
   upmpdcliを使ったごくシンプルなものだ。qnapにあるminimserver、ipadにあるLUMINでコントロールする。

以上が今回の実験内容の概略だ。ただこれだけのことを真似しただけだが効果は絶大だと思う。今回作ったものにはsmpdでもお馴染みのcyclictestもビルドしインストールしてある。レイテンシも計測可能だ。

上記の内容はサルが理解したと思い込んでいるものなので解釈間違いなどあるかもしれない。興味があれば自分で調べる、これが大事だ。

最後にすでに述べた通り、実験用ディストリは公開はしない、絶対にだ!

次回の日記→

←前回の日記

レスを書く

この記事はレスが許可されていません