未定義のパラメーターをチェックするシステムはありません。対応するパラメーター定義と一致すると想定します。配列のエントリに記入します。(UnityAudioEffect_ReleaseCallback)。複数のプラグインを持つことを簡単にするために、各プラグインは、独自の名前空間に収納されています。構造体に記入できます。唯一のエントリポイントでポインターが返される配列に格納されます。オーディオプラグインインターフェースからマップするブリッジプラグインを開発したい場合、知っておくと便利です。その場合、ロード時にパラメーターの記述を設定する、より動的な方法を開発する必要があります。次は、プラグインのインスタンスのデータです。構造体にすべてのデータを置きます。発生する必要があります。つの正弦波があり、他のより高度なプラグインは、入力チャンネル毎に追加データを割り当てる必要があります。処理されるサンプルの総数、プラグインがバイパスされているか、すべてのコールバック関数にするか、などのホストからの様々なデータを含んでおり、すべてのコールバック関数に渡されます。プラグインインスタンスをフリーにするために、対応する機能もあります。フィールドをキャストするヘルパー関数です。プラグインの入力信号を加えて、掛け合わせ、シンプルにダウンサンプリングし、信号の量子化を行います。これらのすべては組み合わたり、ゲーム用のアニメーションのパラメーターと一緒に用いられ、携帯電話から通信状態が悪い携帯無線、壊れた拡声器まで、あらゆるものをシミュレーションすることができます。コンポーネントにステレオ入力信号を分解し、その後、それらをステレオ効果の感じを高めるために再結合します。ないシンプルなプラグインの束どのプラットフォーム上にどのプラグインをロードする?ネイティブオーディオプラグインは、プラグインのインポーターインスペクター経由で、それぞれのプラットフォームに関連付けられてなければならないので、他のネイティブまたはマネージプラグインと同じスキームを使用します。プラットフォームの関連付けが必要なため、システムは、スタンドアロンビルドの各ビルドターゲットにどのプラグインを含むべきかを知っています。ビットサポートの導入によって、同じプラットフォーム内でもこれを指定する必要があります。ビットの両方のバリアントを含むのを許可しています。属性を使用してロードされます。ネイティブオーディオプラグインの場合、事情が違います。ここで起こる特別な問題は、プラグインからエフェクトを必要とするかもしれないミキサーアセットの作成が開始される前にオーディオプラグインをロードする必要があるということです。エディターでは、これは問題ありません。プラグインに依存するミキサーをリロードやリビルドできるからです。スタンドアロンビルドでは、ミキサーアセットを作成する前にプラグインがロードされなければなりません。そのため、システムはこれを検出することができ、自動的に起動時にロードされるプラグインのリストに追加します。ミキサー内に表示されるエフェクトの名前を定義するのは、プラグイン内の定義のみです。始まる必要があります。バイナリに静的にリンクされる必要があります。プラグインの登録をアプリケーションの起動コードに明示的に追加する必要があります。OSX上で1つのバンドルには、32ビットおよび64ビット版の両方のプラグインを含むことができます。サイズを保存するためにそれらを分割することができます。持つプラグイン今度は、もう少し高度な応用例を見てみましょう。イコライゼーションとマルチバンド圧縮のためのエフェクトです。このようなプラグインは、前述したシンプルなプラグインよりも、はるかにパラメーター数が多く、パラメーター間にいくつかの物理的な結合があります。このような場合、パラメーターの可視化をするために、単にたくさんのシンプルなスライダーを使うよりも上手い方法が必要です。インスタンスのためのイコライザーを考えてみましょう。つの異なるフィルターがあります。つのパラメーターを持ち、これらのパラメーターは物理的に関連付けられ、各フィルターの形状を定義します。スライダーを変更するよりも、簡単なドラッグ操作で複数のパラメーターを同時に設定することが、大いに役立ちます。フィルタカーブのゲインと周波数を変更するには3つのバンドをドラッグします。各バンドの形状を変更するためにシフトボタンを押しながらドラッグしてください。パラメータ処理は、単純なプラグインが使用する正確な同じ列挙型ベースの方法に従います。コードはかなり短いです。プロジェクトを開きます。クラスを見つけるでしょう。プロパティーを介して行われます。このクラス内に一つだけ重要な機能があります。プラグイン引数をを通して、ネイティブプラグインが定義したパラメータを読み書きするために、この関数はネイティブプラグインのハンドルを取得します。返し、パラメーターを設定し、以下を呼び出します。とネイティブコード間のもっとも重要な連携です。コード内のこれらの定義と重複するのを避けることもできます。スライダーが表示されます。開発のために便利です。開発中にすべてのパラメーターが使用可能で、すべてのパラメータを持っていて、正しいアクションを実行すると、期待通りパラメーターが変更されることを簡単に確認できるからです。処理の詳細については説明しません。いくつかの内部API関数を使用して周波数応答のアンチエイリアシングカーブを描きます。言及すると、イコライザーとマルチバンドのプラグインの両方が、入力スペクトルと出力スペクトルを重ねてプラグインの効果を可視化するコードも提供することです。これは興味深い問題を提起します。実行され、オーディオストリームにアクセスできません。それでは、このデータをどのように読み取れば良いでしょうか。このために、ネイティブコードには特別な関数があります。UNITY_AUDIODSP_OK;}これは単に、ネイティブプラグインからの浮動小数点データの配列を読むことを可能にします。ネイティブコードを遅くしない限り問題ではありません。呼ばれるユーティリティクラスがあります。固定周波数分解能で分析を実行します。プラグインを見てみましょう。それは、単に信号がどの程度ステレオであるかを示すために、右チャンネルの振幅に対して左チャンネルの振幅を単純に作成します。(緑のカーブがソース、赤は処理後)。この時点で、イコライザーとマルチバンドエフェクトの両方が意図的にシンプルかつ最適化されずに保持されていることを指摘したいと思います。関連するプラットホーム特有の最適化を行うには、たくさんのパラメータの調整して、本当にぴったりだと感じ、もっとも音楽的に思えるようにするなど、明らかにやるべきことがたくさんあります。ビルトインのプラグインとして実装するかもしれません。ユーザーもこの難題に立ち向かい本当に良いプラグインを作成してくださるよう心から願っています。それに、ある時点で、それらがビルトインプラグインになっていないとも限りません。コンボリューションリバーブのプラグイン例。インパルス応答は、パラメーターによって定義される減衰するランダムノイズです。リリース用のプラグインでは任意に記録されたインパルスをユーザーがロードできるようにしなければならないので、これはデモンストレーションのためだけに限られます。基本となるコンボリューションアルゴリズムは変わりません。つの異なる時間スケールでレベルを測定するラウドネスモニターツールの例。これもデモンストレーションを目的としたものですが、現在良く使われるラウドネス標準に準拠しており、モニターツールの構築し始めに適しています。クロックに同期させる楽しいエクササイズの時間です。処理するのではなく、プラグインシステムを使ってサウンドを生成してみましょう。アシッドトランスを聴く人になじみのあるシンプルなベースラインとドラムシンセサイザーを試してみましょう。このジャンルを定義したいくつかの主要シンセサイザーのシンプルなクローンです。これらのシンプルなシンセサイザーは、ランダムな音を使ってパターンを生成するだけで、シンセサイザーエンジンでフィルター、エンベロープなどを微調整するためのいくつかのパラメーターを持っています。読み取られて、曲内の位置を決定するということを指摘しておきます。このカウンターはグローバルなサンプル位置なので、サンプルで指定された各音符の長さでそれを除算し、この除算の余りがゼロになるたびに音符イベントをシンセサイザーエンジンに送信します。することで、すべてのプラグインエフェクトが同じサンプルベースの時計に同期したままになります。そのようなエフェクトを通して既知のテンポで音楽を再生する場合は、タイミング情報を使用して音楽にテンポが同期されるフィルターエフェクトを適用したり、音楽を遅延させたりできます。シンプルなベースラインとドラムシンセサイザーでテンポが同期されるエフェクトをデモします。基礎で、オーディオソースごとにインスタンス化するカスタムの立体化エフェクトの開発を可能にします。展望これは、ちょうど、サウンドシステムの一部を高性能のネイティブコードへと向かうための努力の第一歩にすぎません。バイナリデータの保存をサポートする予定です。独自のプラグインを作成して楽しんでください。アセットストアでそれらを拝見するのが楽しみです。上に作成されたものではありません。利用して基本ラッパーを実装するのはたやすいことでしょう。開発チームが意図していることではありません。どんなプラグインの適切なホスティングも、あっという間にとても複雑になります。画面の処理などが急速に拡大し、コード例としてあまり役立ちません。使用は、数種の特定のプラットフォームに制限されるということに注意してください。基づいてオーディオプラグインを書く有効性は、すべてのプラットフォームで拡張可能で、ソフトウェアミキシングや動的に読み込んだネイティブコードに対応しているということです。(または、単に、サウンドが変わらないエディター内で、プラグインを試すのに使用できます)。何かよい解決案のあるひとは、やってみてください。2017.3チュートリアルAnswersナレッジベースフォーラムアセットストアフィードバック。