問題タブ [libpd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
152 参照

java - Android で推奨されるアプリごとの CPU 負荷

libpd を使用して多くの集中的なオーディオ タスクを実行する Android アプリを開発しています。libpd のオーディオ スレッドの優先度は Process.THREAD_PRIORITY_URGENT_AUDIO です。

Samsung Galaxy S3 では、CPU 負荷が常に 20% から 30% の間で維持されます。これは私には理にかなっているように思えますが、オーディオ サービスが約 30% の CPU 負荷でバックグラウンドで実行されているときに別のアプリを開くと、オーディオで多くのドロップアウトが発生します。

誰かがこの動作を説明できますか? S3 のようなクアッドコア電話の最大負荷は 400% になると思いました (adb シェルで「top」を使用して表示されます)。したがって、CPU の 30% しか使用していないのに、libpd のオーディオ スレッドのような非常に優先度の高いスレッドが十分な CPU リソースを取得できない理由がわかりません。

どんなアドバイスでも大歓迎です、ありがとう;)

0 投票する
1 に答える
546 参照

java - Android から libPD にオーディオを取り込むにはどうすればよいですか?

Peter Brinkmann のサンプル クラスに基づいて、libpd を実行し、Eclipse で処理しています。しかし、Android マイクから Pure Data にオーディオ入力を取得する方法を完全には理解していないようです。

実際のデバイスまたは仮想デバイスで実行すると、次のような一連のエラーが表示されます。

E/AudioRecord(1079): レコード ソース 1 のオーディオ入力を取得できませんでした

E/AudioRecord-JNI(1079): AudioRecord インスタンスの作成中にエラーが発生しました: 初期化チェックに失敗しました。

主なクラスは次のとおりです。

0 投票する
1 に答える
421 参照

c++ - libpd を使用して Pure Data パッチから名前付きシグナルを受信するにはどうすればよいですか?

プロジェクトに Pure Data エンジンを埋め込むために libpd を使用しており、パッチからシグナル メッセージを受信しようとしています。

非シグナル メッセージ (つまり) コントロールをパッチに配置すると、次のようになります。

メッセージの受信に問題はありません。ただし、シグナル メッセージを示す ~ を使用して同じメッセージを実行しようとすると、ハンドラーはそれを受信しません。パッチの例は次のとおりです。

ポーリングまたはコールバックのどちらを使用するかに関係なく、このパッチは「toCPP」メッセージを受け取りません。これが私の[簡素化された]サンプルコードです:

このコードはシンボル toCPP のティック サイクルごとにパッチからフロート (またはフロートのリスト) を受け取ると思われますが、そうではありません。このテスト コードは、メッセージの [s toCPP] バージョンを受け取りますが、[s~ toCPP] は受け取りません。余談ですが、 [osc~ 440] を [dac~] オブジェクトに接続し、outbuf を介してデータを読み込むと、[osc~ 440] からの出力を受け取ることができますが、これは私の用途には最適ではなく、避けてください (主な理由は、8 セット以上の音響データを出力する必要があり、パッチ内で dac~ オブジェクトを多くのチャンネルで作成して使用するのがやや扱いにくくなるためです)。

したがって、私の質問は次のとおりです。

libpd を使用して Pd パッチからシグナルベースのメッセージを受信することは可能ですか?

C++ 側で libpd を使用して Pd パッチからシグナルベースのメッセージを受信するにはどうすればよいですか?

0 投票する
1 に答える
157 参照

c++ - libpd で作業しているときに 64 で割り切れないオーディオ バッファ サイズを処理するにはどうすればよいですか?

libpd の API では、一度に 64 サンプルのフレームでのみオーディオを処理できます。私が過去に行ったことは、オーディオ デバイスのバッファ サイズを 64 で割り切れる数に設定することでした。問題はありません。

次に、ASIO 互換の Windows アプリを作成する必要があります。私は RtAudio を使用しています。問題は、RtAudio API を使用して ASIO サウンド カード (Roland FA-66) を初期化すると、バッファ サイズ パラメータが無視され、64 で割り切れない独自のいずれかが選択されることです。

回避策を考えました。これはオーディオ コールバック関数で行われます。

  1. バッファー サイズが 64 で割り切れないかどうかを確認します。割り切れる場合は、次のようにします。
  2. libpd に、必要なサイズよりも大きい数のフレームを処理し、それを一時バッファーに格納するように指示します。
  3. memcpy を使用して、適切な量のフレームを一時バッファーから出力バッファーにコピーします。
  4. memcpy を使用して追加のサンプルを別のバッファー (extra と呼ばれる) に保存し、次のオーディオ コールバックの呼び出しで使用します。

私はこれを試していませんが、うまくいくと思います。

ただし、この問題を処理するための「標準」または「よく知られている」手順があるかどうかを知りたいです。私が気付いていない警告やヒントがあるのではないでしょうか?

0 投票する
5 に答える
3163 参照

android - Android Studio で libpd を使用する

そこで、https://github.com/libpd/pd-for-androidから git リポジトリを取得し、「AmazingSynthesizer」用に Android Studio で新しい空のプロジェクトを作成しました。

「モジュールのインポート」ウィザードを使用して、PdCore と AndroidMidi をインポートしました。次に、「アプリ」を右クリックして「モジュール設定」を表示します。依存関係の下に、モジュールの依存関係として PdCore を追加しました。また、「PdCore」の依存モジュールとして AndroidMidi を追加しました。

これまでのところ、それは私には正しいように思えました。私のアプリの build.gradle にはライブラリが含まれており、MainActivity に PdDispatcher をインポートできます。問題は、ネイティブ ライブラリがまだ不足しているように見えることです (私はそう思います!)。

libpd の公式本 (Making Musical Apps by Peter Brinkmann) の非常に基本的なサンプル コード

惨めに失敗する

0 投票する
0 に答える
137 参照

c++ - Visual C++ 2010 での libpd 構成

Visual C++ 2010 プロジェクト内でlibpd API CppTestに付属する C++ サンプル プロジェクトをインポートして実行しようとしています。

libpd の C++ API ファイル、つまり PdBase、PdReceiver、PdMidiReceiver、PdTypes を、PdBase と PdTypes の場合は対応するソース ファイルと共にインポートしました。追加のインクルード ディレクトリとして、Pure Data のインクルード フォルダ ("C:\pd_installation_folder\include") と、libpd ラッパーの C コードを含む libpd_wrapper フォルダを配置します。

サンプル プロジェクトのソリューションを実行すると、リンク フェーズ中にエラーが発生し、「エラー LNK2019」という未解決の外部の膨大なリストが原因で機能しません。ここで何が問題なのですか?VC++ プロジェクトのリンカー構成プロパティに追加の libpd スタティック ライブラリ (または .dll) を提供する必要がありますか?