プログラム遅延をデバッグする方法は?

プログラム遅延をデバッグする方法は?

rpiでamsynthを実行しようとしています。最新バージョンのRaspbianを新規インストールしてください。

x86デスクトップでamsynthをテストしましたが、遅延なくうまく機能しました。

ただし、rpiではmidiコマンド(vkeybdを使用)を送信した後にビープ音が鳴るまでに約1秒の遅延があります。

より良い親近感を設定することは役に立たないようです。

amsynthを制御するためにmidoライブラリを使用してPythonで小さなスクリプトを作成しましたが、それでもまだ遅延音が聞こえます。

この問題の原因をデバッグするにはどうすればよいですか?私は基本的にエンドユーザーです。

私の考えでは、midiコマンドが遅れたり、amsynth自体が遅れているようです(可能性が低い)。

このテストの間、負荷平均は0.4で、アイドル状態では0.1でした。

上部には、amsynth CPU使用率が12%にとどまっていることがわかります。

これには待ち時間の短いコアは必要ありません。そうですか?たとえば、アプリケーションが待ち時間を50msから10msに減らすと想像しています。

編集:alsaを使用し、他のプログラムはいかなる種類のオーディオ遅延も生成しません。つまり、クロムでリアルタイムでYouTubeのオーディオを再生します。再生と一時停止を押すと、レックも目立たなかった。

答え1

Jack、alsaなどの目的でamsynthとvkeybdを使用していることを確認してください。その後、次のことを試すことができます。

使用が難しいです。

答え2

プロセスにリアルタイム権限があることを確認してください(通常はユーザーごとに実行されます)。

Ivanが述べたように、PREEMPT_RTパッチセットを持つカーネルがより適している可能性があります。

私の経験によると、遅延時間の短いオーディオでは、JACKはALSAよりも優れています。

http://jackaudio.org/faq/linux_rt_config.html

関連情報