• ポータブル版プロジェクト

    @トイ さん
    素晴らしい機材かつ独創的な構成ですね。
    これ以上をポタに求めようという意欲が凄い・・・
    トイ さんの平面振動版+強力アンプの音を聞いてみたいです。

    @パパリウス さん
    mpd -Vでpipeは出力されませんでしたので、mpdは自力でビルドするつもりです。
    それから、@Kichitaroさんのブログに開発のベースにさせて頂きたい旨をコメントさせてもらいました。

  • @デジタル さん

    チャットのメッセージは確認できましたでしょうか?
    まだあまり使っていない機能ですが、うまく活用できればと思います。
    (チャットの着信を通知してくれる機能があればいいんですけど、見当たらないんですよねえ:relieved: )


    mpdのビルド、ぜひ楽しんでください。

    最近のmpdはcmakeを使うようになっています。
    私はconfigure/makeのシンプルで使い方が理解しやすいところが好きなんですが、cmakeが必要なソフトも増えてきてますね。


    音質面でいうと、

    • 使用するコンパイラのバージョン
    • ビルドオプション
    • LTO (Link Time Optimization)
    • PGO (Profile Guided Optimization)

    でチューニングすることができます。

    ビルドオプションも山ほどありまして、32bit版であればPi2/Pi3/Pi4向け、Pi3向け、Pi4向けとターゲットをどのように絞るかによって使えるオプションも変わってきます。
    64bit版(aarch64)ですと、ビルドオプションの組み合わせはグッとシンプルになります。

    このようなビルドに関するノウハウも共有していきましょう。


    raspbianにコンパイラ(gcc)が入っていると思いますが、別途最新のコンパイラも準備されるとよいと思います。
    gcc8、gcc9、llvm+clangが候補になります。

  • @パパリウス さん

    チャットのメッセージは確認できましたでしょうか?

    昨日書き込んだ後に気が付きました。
    ちゃんと通知もありましたよ。
    右上の吹き出しの部分に数字で1と出ていたと記憶しています。
    スレッドの未読とよく似た感じでした。

    mpdのビルドに関しては、まずは単純な方法で音を出す。
    それから、色々と試してみる。
    という方向で進めたいと思います。
    単純な方法で音を出すのも結構苦戦しそうだと思っていますので。

  • @デジタル さん

    昨日書き込んだ後に気が付きました。
    ちゃんと通知もありましたよ。
    右上の吹き出しの部分に数字で1と出ていたと記憶しています。
    スレッドの未読とよく似た感じでした。

    確認いただけたようで何よりです。
    うまく活用していきましょう。

    mpdのビルドに関しては、まずは単純な方法で音を出す。
    それから、色々と試してみる。
    という方向で進めたいと思います。

    手順で分からないところがあればご質問ください。
    開発環境の整備など、なんでもご相談いただければと思います。

  • @パパリウス さん

    @Kichitaro さんより返信を頂きました。
    端的に言うと、LeanMPDをベースにすることはOKだということです。
    ただし、注意点としてはKichitaroさんのスクリプトにはたかじんさん作のもの、
    およびじんそんさん作のものが含まれており、その流用はたかじんさん、じんそんさんに確認してほしいとのことです。
    (たかじんさん、じんそんさんはポタ用のDAC基板の作者で基板に再生・停止等の制御ボタンを搭載されており、
    スマホ等からハードウェアボタンと同様の操作性を実現するためのスクリプトを書かれています。)
    また、Kichitaroさん自身がsmpdのポタ版的なものを目指しておられたそうで喜んでおられました。
    ただ、リアルがいろいろ立て込んでおられ、また、ご自身もLeanMPDを開発する意欲を失っていないようで、
    ポータブル版開発への直接のご助力は難しそうです。

    mpdのコンパイルに関しては、VMWareにdebianを入れクロスコンパイルの環境を作る作業中ですので今少しお待ちください。

  • @デジタル さん

    Kichitaroさんのブログ(オモロダイブ)でコメントを拝見しました。

    Bluetooth関連はとても面白い工夫をなさっているので、困ったときは助けてもらいましょう:joy:

    いまは3Dプリンターにハマってらっしゃるようですね。
    ポータブル版の理想のケース、すごいの作ってくださるといいなぁ(なんてね:yum: )

  • @パパリウス さん
    mpdをクロスコンパイルしてみました。
    ビルドが通るところまでなんとかこぎつけたのですが、
    LeanMPDのバイナリを入れ替えて動かしてみたところ、
    segmentation faultとなりました。

    うーん、ライブラリのバージョン等はLeanMPDと揃えたつもりなんですが・・・

    なかなか難しいですね。
    Debian stretchのaptでDebian純正のクロスコンパイラを入れたのですが、ツールチェーンを変えてみるしかなさそうです。

  • @デジタル さん

    できたバイナリをfileコマンドで調べるとなんと表示されますでしょうか

  • @パパリウス さん
    pi@leanmpd:/usr/bin $ file mpd
    mpd: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=dbea7e9f4d686029edb1c7f66b870acd26b602db, stripped

    以上です。よろしくお願いいたします。

  • @デジタル さん

    fileコマンドの結果は問題ないようですね。
    mpdはバージョンによっては mpd.conf の書き方に問題がある場合に
    segmentation faultが発生することがありました。
    以下、お試しください。

    ①バージョン確認
     ※ファイル形式があっていれば、これは実行できるはずです。

    mpd -V
    

    ②デバッグ実行
     ※途中で落ちているのであれば何かしら情報を得られると思います。
      mpdはフルパス指定の方が確認の意味でもよいかと思います。
     ※もし動き続けるようでしたら Ctrl + C で止まります。

    sudo systemctl stop mpd
    sudo /usr/bin/mpd --no-daemon --stderr --verbose /etc/mpd.conf
    
  • @donuts-shop73 さん
    ご返信ありがとうございます。

    ①バージョン確認

     ※ファイル形式があっていれば、これは実行できるはずです。

    ビルド後に最初に実行したのですが、ここでエラーになりました。
    ですので、やはり大きな手落ちがあるのだと思います。
    デバッグ実行に関しては、この状況では手がかりになりにくいと思えまして、
    今のところ試していません。

  • @デジタル さん

    私はカーネル以外は実機でコンパイルしていますので、
    クロスコンパイラでそのまま使えるかどうかは分かりませんが、
    以前、Raspberry Pi Zeroでコンパイルした際に指定したオプション
    を以下に記載します。
    ご参考までに。

    CFLAGS="-s -O2 -march=armv6zk -mfpu=vfp -mfloat-abi=hard -mtune=arm1176jzf-s -mcpu=arm1176jzf-s -ffast-math -ftree-vectorize -funsafe-math-optimizations"
    CXXFLAGS="-s -O2 -march=armv6zk -mfpu=vfp -mfloat-abi=hard -mtune=arm1176jzf-s -mcpu=arm1176jzf-s -ffast-math -ftree-vectorize -funsafe-math-optimizations"
    
  • @donuts-shop73 さん

    情報のご連携ありがとうございます。
    CFLAGS、CXXFLAGSを教えて頂いた内容にしてビルドしてみましたが、
    やはりsegmentation faultが発生しました。
    クロスコンパイルで指定するべき項目に漏れがあるのだと思いますが、
    追及するには時間が必要だと思えますので環境を変更しました。

    Raspberry Pi のセルフビルド環境を QEMU で作る - Qiita
    ここを参考に疑似セルフビルド環境を作成してビルドしてみました。
    結果、作成したバイナリで正常に音出しする事ができました。
    mpdにはデジファイのおとさんのRTパッチのみを当て、CFLAGS、CXXFLAGSはdonuts-shop73さんのものを使わせて頂きました。

    次はsmpdのカーネルの導入により、smpdとLeanMPDの融合に1歩踏み出したいと思っています。
    mpdのビルドよりずっと大変でしょうが。

  • @デジタル さん

    クロスコンパイルはなかなか難しいですよね。

    クロス環境ではLTOあり(CFLAGS="-flto")でうまくビルドが通らなくて、断念したという経緯があります。
    リンカーの問題だとは思うのですが、いろいろ試したものの解決には至りませんでした。

    donutsさんと同じく、私もカーネルのビルドだけクロス環境で行っています。


    RTカーネル・Xenomaiカーネルに共通なのですが、USBのFIQが問題になって起動しないケースがあります。

    smpdのカーネルに差し替える際には、cmdline.txtに

    dwc_otg.fiq_enable=0
    dwc_otg.fiq_fsm_enable=0
    dwc_otg.lpm_enable=0
    

    を入れておいていただく必要があるかもしれません。

  • @パパリウス さん

    クロスコンパイルは、多数あるヘッダやライブラリが意図したように(ARM用として)使われているのか、確認が困難です。
    おそらくここに漏れがあると思いますが、これを特定するのはなかなか大変な作業です。
    それから、LeanMPDへのカーネルの移植ですが、今のところdepmod -aでエラーとなっていますので、
    コツコツ解決していく予定です。
    今は実験段階と思いますので、ここは時間がかかっても一歩一歩確認しながら進めていく予定です。

  • それから、LeanMPDのオリジナルですが、Raspberry Pi 3環境では起動しないようです。

  • @デジタル さん

    モジュールのパスが異なっている場合、depmodは失敗します。
    今回のようにmodules.depもセットで別のカーネルに差し替える場合は、depmodのエラーは気にしなくてよいと思います。

    depmodは、カーネルモジュールを修正して差し替えた時にmodules.depを更新したいときに使います。


    私も1000回以上、カーネルを差し替えてきました。
    「性能上がるかな、、、音質上がるかな、、、!?」とワクワクしながらカーネルを差し替え、測定と試聴を繰り返していました。うまく起動しないことも数百回あったはずです。
    デジタルさんもカーネルガチャを楽しんでください:flushed: