1

Accelerate フレームワークを使用してサイン トーン ジェネレーターを作成したいと考えています。ジェネレーターにアタック/リリース設定 (つまり、振幅エンベロープ) を持たせたいと思っています。

正弦値でいっぱいのベクトルを作成する方法を理解しています。私が知らないのは、ベクトル データに振幅エンベロープを適用する方法です。

vDSP_vgen を使用して傾斜ベクトルを作成し、線形ボリューム エンベロープ ベクトルを作成し、正弦ベクトルにエンベロープ ベクトルを掛けることができることはわかっています。ただし、これは無駄に思えます。なぜなら、私は多くのデータ ポイントを扱っており、振幅エンベロープを格納するためだけに中間ベクトルを作成することは、私の環境ではメモリをかなり浪費するからです。

Accelerate フレームワークで振幅エンベロープを操作する最良の方法は何ですか?

4

2 に答える 2

0

ベクトルを作成または操作するために、ベクトル関数のみを使用する必要はありません。ベクトル関数は、存在し、高速である場合に役立ちます。ベクトル要素ごとにenvelope()* sinf()の呼び出しを使用して、エンベロープで正弦を作成することに対してベクトル操作のシーケンスをベンチマークし、iOSテストデバイスでどちらが高速かを確認します。

長い中間ベクトルを保持して再利用するのに十分なメモリがある場合(たとえば、エンベロープの再利用)、これにより、後続の反復のパフォーマンスが向上する可能性があります。これは、典型的なメモリ使用量とパフォーマンスのYtrade-offです。

于 2012-01-20T15:56:21.650 に答える