1

Linux でProjectMオーディオ ビジュアライザーを使用しています。私は Ubuntu と Pulseaudio を実行しているので、projectm-pulseaudio バイナリを使用しています。残念ながら、ProjectM での開発は終了したようで、Linux で利用できるようなものは他にありません。

ソースをハッキングして、いくつかの問題を修正することを検討していますが、最初にやりたいことが可能かどうかを感じたいと思っています.C++は非常に錆びており、Pulseaudioとqtの知識はほぼゼロ。

ProjectM は、ユーザーが選択した Pulseaudio 出力デバイス モニターの 1 つをリッスンします。必要なものを選択するための GUI があり、Pulseaudio ボリューム コントロール GUI から同じ選択を行うことができます。私の場合、ビデオ カードの HDMI オーディオ出力、マザーボードのアナログ オーディオ出力、またはマザーボードのデジタル オーディオ出力を選択できます。スピーカーが接続されている場所なので、最後のものを使用しています。

これが大きな問題です。コンピューターから出る途中で、ミックスダウンされたオーディオ ストリームを聞いているのです。音楽ストリームを聞くだけにしたい。つまり、Pulseaudio に送られる特定のオーディオ ストリームです。これにより、いくつかの利点が得られます。

  • システム サウンドおよび他のプログラムからのサウンドは、視覚化の一部ではありません。
  • シンク ボリュームはチェーンの後半にあるため、ProjectM の入力信号の振幅には影響しません。そのため、システム ボリュームを変更しても (起きてスピーカーのボリュームを直接微調整するのではなく)、視覚化には影響しません。

音楽プレーヤーの音量 (Pulseaudio ボリューム コントロール GUI からアクセスできる音楽プレーヤーのストリームに設定された音量と同じ) も視覚化に影響するようですが、これは望ましくありませんが、これが望ましいことです。 ProjectM が聞いているのは、音楽プレーヤーの音量を下げると、シンクに到達するまでに振幅が明らかに低くなるためです。私が本当に望んでいるのは、ボリューム コントロールによってスケールダウンされる前に、ProjectM がフル ボリュームのオーディオ信号を取得できるようにすることです。

最後に、私が replaygain を使用するという点で、もう 1 つのハードルがあります。これは、各アルバムの知覚音量が同等になるように、すべての曲の音量を縮小します。Replaygain はデフォルトで 89dB をターゲットにしているので、ProjectM に入ったら、各サンプルを適切な量だけスケールアップするだけで十分かもしれないと考えています。Pulse はリプレイゲインについて何も知らないので、これがおそらく私ができる最善の方法ですが、他の提案を歓迎します。

したがって、一般的な問題は、これがすべて可能に聞こえるかどうかです。特に:

  1. 出力デバイスのモニターをリッスンするのではなく、特定の他のアプリケーションの Pulseaudio 再生ストリームをアプリケーション (この場合は ProjectM の修正バージョン) で直接モニターすることは可能ですか?
  2. ボリューム コントロールによってスケーリングされる前に、オーディオ ストリームを取得することは可能ですか? (リプレイゲインの目的で音楽プレーヤー アプリケーションが行ったスケーリングを除く)。
  3. そのストリームが破棄されて再作成された場合、そのストリームに再接続することは可能でしょうか?たとえば、毎回認識可能な識別子がまだ残っているかどうかはわかりません。(再生の一時停止と再開、または音楽プレーヤーの再起動のたびにストリームを選択しなければならないのは面倒です。)

最後に、参考になるヒントやリソースを教えていただければ幸いです。または、これを行うスキルがあり、それに取り組むことに興味がある場合は、報奨金を提供できます.

4

0 に答える 0