2017-02-14 12 views
8

私はThe Amazing Audio Engine 2で構築された大きなプロジェクトを持っています。私はInter-App-Audioを統合するのに苦労し、AudioKit 3に移行したいと考えています。TAAE2からAudioKit 3への移行

苦労していますが、それは統合されていますが、ジェネレータとして選択するとすぐにレンダリングが停止し、無効状態。

オーディオシステムの主な違いは何ですか? TAAE2はレンダリングブロックを持つモジュールを使用して、レンダリングスタックからオーディオバッファをプッシュしてポップします。

AudioKitはどのようにオーディオをレンダリングしますか? AEModuleをAudiokitオブジェクトに移行する際、何が高レベルで関与していますか?

答えて

3

、それは本質的AVAudioEngine、AUAudioUnit、AVAudioUnit、およびAVAudioNodeのラッパーです。これはスタックではなくレンダリングチェーンとして概念化されていますが、最終結果は同じです。システムオーディオユニットを使用することも、AUAudioUnitサブクラスを作成して独自に登録することもできます。

レンダリングチェーンは、ブロックベースのAPIを使用した場合とほとんど同じですが、 AEAudioUnitModuleをサブクラス化して、processFunctionをC関数に設定する代わりに、AUAudioUnitをサブクラス化し、ブロックに引数としてバッファとタイムスタンプで呼び出されるブロックを返すinternalRenderBlockを実装します。このブロックでは、ほとんどの移植が可能です。

+0

Daveさん、ありがとうございますので、TAAE1と似ています。チェーンの設定の順序はどうですか?例えば。 LFOとエンベロープジェネレーターで変調された複数のオシレーターを備えたポリフォニックボイスで、TAAE2はモジュールでの呼び出しプロセスを可能にします。これはAudioKitでどのように行われますか? – jarryd

+1

あなたの質問を正しく理解している場合、最も大きな違いは、プロセスをモジュールで呼び出す代わりに、そのプロセスをノードに追加して、オーディオが通過することです。したがって、いくつかのオシレーターでのみ処理したい場合は、いくつかのオシレーターの出力をエンベロープフィルターで「ルーティング」する必要があります。 AVAudioEngineファミリは、バッファ操作モデルではなく、物理モデル(ジェネレータ→パッチ・ケーブル→エフェクト)に従います。 – dave234

+0

AVAudioEngineのデザインがポリフォニックな声をどのようにサポートできるかを理解しようとしています。 1つのLFOと1つのエンベロープを持つ1つのオシレーターを持つ1つのボイスがあるとします。TAAE2では、メインのレンダリング機能がボイスのレンダーを呼び出すことができ、それからoscillator.render、lfo.render、envelope.renderを呼び出します。 AVAudioEngineでノード接続を使ってこの設定をどのように設定しますか? audioEngine.connect(voice1、to:audioEngine.mainMixerNode、format:audioFormat)、次にaudioEngine.connect(オシレータ:to:オシレータ)というボイスオブジェクトのaudioEngine.connect(オシレータ、to:self、format:audioFormat) (LFO、to:Envelope)engine.connect(Envelope、to engine.mainMixer) 'のようになります(簡潔さのために短縮された関数)' – jarryd

3

私は正解ではないと確信していません。私たちの文書のこのディスカッションと同じでもかまいませんか?オーディオのレンダリングのために

migrating to AudioKit

+0

TAAE2レンダリングコールバックおよびスタックシステムからマイグレーションするときに必要なアーキテクチャーに興味があり、AudioKitにあります。 AudioKitでエンジンの処理設計がどのように機能しているか知りたい。再生のためにバッファを渡す方法、複数のモジュールを使用するシステムでバッファを処理する方法、必要なすべてのオーディオバッファを処理してチェーンする方法 – jarryd

関連する問題