1

シンセサイザーのプログラミングを始めたいです。サウンド カードを使用する必要があると考えたので、Google で検索を開始しました。しばらくして、多くのオプションを発見しました:
  - WaveOut API - これは時代遅れだと聞いたので、これを破棄しました。
  - WASAPI - 私が望んでいたものには、少しレベルが低すぎるように思えました。
  - DirectSound、XAudio、XAudio2 - かなり問題ないように見えますが、遅延をできるだけ少なくしたいと考えています。
  - Asio - まさに私が欲しかったものに見えました!

オーディオ プログラミングを始めるためのチュートリアルとソース コードをいくつか見つけました。悲しいことに、私が仕事をするようになった唯一のものは、私が使いたくない waveOpen API を使用しています。

次に、このチュートリアルを見つけました。これは、私のニーズにぴったりだと思われました。驚くべきことに、このチュートリアルは、ASIO を使用して見つけることができる唯一の使用可能なリソースです (まあ、私はそれを機能させることができないため、それほど使用可能ではありません)。問題は、私はそれを機能させることができないということです。デモを実行すると、「アプリケーションが動作を停止しました」というエラーが表示され、続いてコンソール出力が表示されます。

未処理の例外: System.BadImageFormatException: ファイルまたはアセンブリ 'BlueWave.Interop.Asio, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。ファイル名: 'BlueWave.Interop.Asio, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' at BlueWave.Interop.Asio.Test.TestConsole.Main(String[] args)

WRN: アセンブリ バインドのログがオフになっています。アセンブリ バインドの失敗ログを有効にするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) を 1 に設定します。 . この機能をオフにするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] を削除します。

コンパイルしようとすると、大量のRosieエラーが発生 しました。私が得るエラー、当たり前

これは、msvcr90.dll と msvcd90.dll を C:\Windows\System32 に手動で配置した後です (他の方法ではインストールできませんでした)。ええ、もちろん、このすべての前に ASIO4ALL をインストールしました。

ですから、これは実際には質問ではありませんが、一般的なアドバイスを求めているだけです。asio を機能させるのはそれほど難しいことではないと思いますが、同時に、ASIO API を学習するための別のリソースへのリンクや、その他のアドバイスは素晴らしいでしょう。(Xaudio2 を動かしてみるほうが簡単かもしれません。わかりません...)

事前に感謝します。私の質問が長くて退屈だと思われる場合は申し訳ありません。

編集:反応をありがとう。TropicalProgrammerによる ASIOHost APIに出会いました。それが良いかどうかはわかりませんが、有望に見えます。現在検討中です。より良いオプションがあるかもしれませんが、私は現在 ASIO に心を決めていることを認めなければなりません。

4

2 に答える 2

2

オーディオ プラグインとホスト アプリケーションの両方を作成するためのデュアル ライセンス オーディオ フレームワークであるJuceを検討することをお勧めします。それを使用してかなりの数の商用アプリケーションが構築されています。

あなたの目的はシンセサイザーを構築することなので、VST プラグインとして構築するのが最も抵抗の少ない方法です。JUCE は、OS のオーディオ API を管理するホスト アプリケーション、適切なドキュメント、多数の例を提供します。必要なのは、シンセのレンダリング コールバックを実装することだけです。

ASIO に関しては、非常に多くのプロ オーディオ アプリケーションが ASIO で構築されてきました。これは主に、Windows の連続したバージョンでの通常のオーディオ API の従来の欠点 (特に遅延やチャンネル数の増加が懸念される場合) が原因です。Windows では、ASIO はオーディオ ハードウェア専用のドライバーを使用し、ホスト オペレーティング システムのオーディオ スタックをバイパスします。Juce がこれを処理してくれると思います。

于 2013-05-27T19:05:49.707 に答える
0

あまり役に立たない回答ですが、XAUDIO2 を使用することにしました。使いやすいとは言えませんが、少なくとも利用可能なチュートリアルがあります (私はこれを使用しますが、Microsoft にはシリーズもあります)。

于 2013-05-31T21:19:49.640 に答える