問題タブ [steinberg-asio]
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.
c++ - C++ ASIO ドライバーのセットアップ
ASIO sdk のセットアップについて教えてください。それを使用して外部デバイスをシステムに接続したいのですが、その前に ASIO を自分のプログラムに参加させるのに苦労しています。
そこから ASIO 2.3 をダウンロードしました: http://www.steinberg.net/en/company/developers.html
残念ながら、C++ は私の得意分野ではありません。SDK にはいくつかのフォルダーが含まれています (必要なすべてのファイルを含む "Common" という名前のフォルダーですか?)、*.cpp および *.h ファイルのみの *.lib ファイルはありません。
- 必要なファイルがわからないので、SDK を完全にインストールします。
- すべてを 1 つのライブラリにマージすることを考えていましたが、SDK にとって重要なファイルがわかりません...
- コードで ASIO 関数を使用できるように、プログラムにファイルを追加する方法を教えてください。
c++ - C++ ASIO、バッファへのアクセス
私はオーディオ プログラミングの経験がなく、C++ は非常に低レベルの言語であるため、少し問題があります。http://www.steinberg.net/en/company/developers.htmlからダウンロードした ASIO SDK 2.3 を使用しています。
SDK内の例に基づいて独自のホストを作成しています。
今のところ、サンプル全体を確認できましたが、機能しているようです。PCに外部サウンドカードを接続しています。このデバイスのドライバーのロード、構成、コールバックの処理、アナログからデジタルへのデータのキャストなど、一般的なものに成功しました。
そして、私が今立ち往生している部分:デバイスを介してトラックを再生すると、ミキサー(デバイスのソフトウェア)でバーが動いているのが見えます。したがって、デバイスは正しい方法で接続されています。私のコードでは、ミキサーで移動しているバーの名前で入力と出力を選択しました。また、ASIOCreateBuffers() を使用して、各入力/出力のバッファーを作成しました。
間違っていたら訂正してください: ASIOStart() が呼び出され、ドライバーが実行状態にあるとき、サウンド信号を外部デバイスに入力すると、バッファーがデータでいっぱいになると思いますよね?
ドキュメントを読んでいますが、少し迷っています - デバイスからアプリケーションに送信され、INPUT バッファに保存されているデータにアクセスするにはどうすればよいですか? それともシグナル?信号分析や将来の録音に必要です。
編集:複雑にした場合、一言で言えば、私の質問は次のとおりです:コードから入力ストリームデータにアクセスするにはどうすればよいですか? ドキュメントでそれを可能にするオブジェクト/コールバックが表示されません。
audio - ASIO SDK オーディオ バッファの処理方法
だから私はいくつかのオーディオ処理ソフトウェアに取り組んでおり、ASIO オーディオ処理のいくつかについてちょっと混乱しています。私が読んでいるものから、バッファスイッチコールバックが行われたとき、「入力」を「出力」に処理する必要があるようです。しかし、入力チャンネルと出力チャンネルの数が異なる場合はどうなるでしょうか? 入力と出力のフォーマットが正しく一致しない場合は、フォーマット変換を行う必要があると思いますか?
c++ - VST プラグインでオーディオが歪む
ASIO オーディオ ストリームを管理する既存のソフトウェア、シンプルな VST ホストにプラグインする必要がありました。いくつかのドキュメントが不足しているにもかかわらず、何とかそれを行うことができましたが、プラグインをロードすると、ひどく歪んだオーディオ信号が返されます。
私が使用している VST は (他の VST ホストと一緒に) 適切に動作するので、おそらく私が作成したコードに何らかのバグがある可能性がありますが、プラグインから「PROCESS」を無効にすると (私のストリームはプラグインを通過しますが、単に機能しません)処理されます)ノイズや歪みがなく、送信したとおりに返されます。
私が少し心配していることの 1 つは、ASIO ドライバーが __int32 バッファーを埋めるときに使用されるデータの型であり、プラグインは float バッファーを必要とします。
何十億回も自分のコードを見直したので、それは本当に憂鬱です。
これが私が使用しているクラスのコードです。デバッグを容易にするために、一部の数値が一時的にハードコードされていることに注意してください。
編集: これは、sw を VST ホストとインターフェースするために使用するコードです。
ここで、「buff」は「__int32* buff」として定義されます
c++ - C++ および ASIO SDK を使用したオーディオ録音
私は、C++ と ASIO SDK を使用して (添付のホストサンプルに基づいて) シンプルなオーディオ レコーダーを作成しようとしています。これまでのところ、チャネルから入力を取得して処理し、出力チャネルに転送できます。
今、入力をファイルにリダイレクトする方法を考えています。私の理論的な考えは、ある種のバッファを使用して入力からのデータを保存し、それがいっぱいになったら、それをモジュールに渡してファイルに保存することです。もちろん、書き込みプロセスがオンになったら、入力データを継続的に保存するために、別のバッファー (または複数) を動的に作成したいと思います。次に、最初のバッファーからのデータがファイルに完全に書き込まれると、バッファーの切り替えが行われます (以前に書き込まれたバッファーは入力信号の受信側になり、入力を格納しているもう一方は保存されます)。ファイルへ)。
正直なところ、プログラムのその部分を実際に実現する方法がわかりません。データを失わないようにするための最適なバッファサイズが何であるかわかりません。また、2 つの入力チャネルからのデータを 1 つのバッファに格納する方法がわかりません (代わりに 2 つを使用する必要がありますか?)。そのようなレコーダーの例はありますか? 私はインターネットを検索しましたが、役に立つものは何も見つかりませんでした。