問題タブ [accelerate-framework]

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.

0 投票する
1 に答える
1903 参照

c++ - 不完全な型へのポインタの添字 'const std::complexc++11を使用する場合

c++11 と LLVM でスタティック ライブラリをコンパイルする必要があります。このライブラリは、veclib フレームワークを含む Accelerated フレームワークを使用します。

私はc++ 11を使用しているので、次のようなエラーがあります:

前方宣言は「/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/vecLib.framework/Headers/vForce.h」で行われます" ファイル。

すべてが標準ライブラリで正常にコンパイルされます。

誰かがこの問題を経験しましたか?

0 投票する
1 に答える
1439 参照

ios - iOS Accelerate ローパス FFT フィルターのミラーリング結果

Accelerate vDSP フレームワークを使用して、既存の FFT ベースのローパス フィルターを iOS に移植しようとしています。

サンプルの最初の約 1/4 については、FFT が期待どおりに機能しているようです。しかし、その後、結果は間違っているように見え、さらに奇妙なことがミラーリングされます (信号の後半が前半の大部分をミラーリングします)。

以下のテスト アプリケーションの結果を確認できます。最初に元のサンプリングされたデータがプロットされ、次に予想されるフィルター処理された結果の例 (15Hz を超える信号をフィルター処理)、最後に現在の FFT コードの結果 (目的の結果と FFT の結果の例は異なるスケールであることに注意してください)元のデータ):

FFT結果

ローパス フィルターの実際のコードは次のとおりです。

元のコードでは、ライブラリは 2 のべき乗でないサイズの入力データを処理していました。私の Accelerate コードでは、最も近い 2 のべき乗まで入力をパディングしています。以下のサンプル テストの場合、元のサンプル データは 1000 サンプルなので、1024 にパディングされます。これが結果に影響を与えるとは思いませんが、可能な違いのために含めます。

ソリューションを試してみたい場合は、グラフを生成するサンプル プロジェクトをここ (FFTTest フォルダー内) からダウンロードできます。

FFT サンプル プロジェクト コード

洞察に感謝します。私は以前にFFTを使用したことがないため、重要な何かが欠けているように感じます。

0 投票する
1 に答える
470 参照

iphone - (iPhone) iPod からのライブ FFT

わかりました、私は FFT について多くのことを読みましたが、tableView を構築するよりも少し複雑なようです。

再生中のオーディオ (iPod ライブラリから) を 3 つの範囲 (低、中、高) で分析する方法を探しています。FFT が機能していると思いますが、再生中のオーディオをフィルター処理 (ローパス、バンドパス、ハイパス) し、ピークも分析できるかどうかはわかりません。したがって、誰かが何が最善かを知っている場合 (つまり、最速の (CPU) 方法)、私を助けてください。フロントエンドはないので、ウィンドウに FFT を描画しません (おそらく描画は多くの CPU を消費します)。

次に、オーディオを分析する方法がわかりません。私が見つけた FFT サンプル コードはすべてマイクを使用しています。マイクは使いたくない。何かがオーディオ ファイルを取得して非圧縮ファイルにエクスポートしているのを見ましたが、ライブ分析が必要です。aurioTouch2 を見てみましたが、マイクから iPod ライブラリへの入力を変更する方法がわかりません。私が探している部分はここにあると思います:

しかし、私はこれらすべての AudioUnits にまったく慣れていないので、入力がどこにロードされているのか理解できません。次に、上記のコードは AVAudioSession を使用します。小鳥が私に言った、これは非推奨になるだろう、それで代替手段は何ですか?

だから基本的に:

  1. 分析を行うために、現在再生中のオーディオを取得するにはどうすればよいですか? MPMusicPlayerController を使用してサンプルを取得することはできますか? または、ライブラリを再生する AudioUnit 全体を構築する必要がありますか?

  2. 低域、中域、高域を分析する最速の方法 (CPU) は何ですか? フィルタリング?FFT? 他の何か?

  3. 購入した音楽の著作権でトラブルになることはありますか? 再生ファイルを PCA サンプルに変換しようとしたときに、次のエラーが発生することがあるためです。

    VTM_AViPodReader[7666:307] * キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。

  4. AVAudioSession全体が将来的に機能しない場合、FFTを実行する「新しい」方法は何ですか?

0 投票する
3 に答える
680 参照

ios - vImage エンボス効果のサンプル コードをコンパイルするには?

ドキュメントにあるコードは次のとおりです。

ここに問題があります: カーネル変数は 3 つの異なる型を参照しているようです:

  1. void * 仮パラメーター リストのカーネル
  2. 未定義の unsigned int uint_8 カーネル。おそらく仮パラメーターをシャドウする新しい変数として
  3. vImageConvolve_ARGB8888 を呼び出すときの const signed int *kernel。

これは実際のコードですか?この関数をコンパイルするにはどうすればよいですか?

0 投票する
1 に答える
1200 参照

ios - vDSP_desamp FIR フィルターのサンプル履歴の連続性

vDSP_desamp()ルーチンを使用して、常にキャプチャされているオーディオ信号のダウンサンプリングを実行しようとしています。Accelerate フレームワークのドキュメントによると、このルーチンは FIR フィルタリングとデシメーションを実行します。

ただし、FIR フィルタリングを実行するためにサンプル履歴を保存するために必要な循環バッファーの入力パラメーターが API に提供されていないため、競合があります。これにより、各関数呼び出し中にサンプル履歴がリセットされているか、私が知っているアルゴリズムとは異なるアルゴリズムが適用されていると思われます。

残念ながら、この関数は完全なブラック ボックスであり、フィルタリングの実行方法や信号の連続性を確保する方法についてのヒントはありません。

フィルタリングの連続性を得るために、前のバッファの最後の N サンプル (N はフィルタ タップの数) で各フレームをパディングすれば十分だと思いますか? を呼び出しvDSP_desamp()た後、これらの padding-sample 出力を破棄しますが、パディング サンプルが処理された後、サンプル履歴行が正しく初期化されるはずです。

の内部に関するヒントvDSP_desamp()は大歓迎です。

0 投票する
2 に答える
1474 参照

signal-processing - フレームワーク vDSP、FFT フレーミングを高速化

Apple の vDSP を使用して、録音されたオーディオ ファイルに FFT 計算を実装しようとしています (モノラル PCM と仮定します)。

ここで調査を行ったところ、次のトピックが非常に役立つことがわかりました。

たとえば、frame_size N = 1024 サンプル、log2n=10 で FFT を構成しました。

コードのどこかに:

私が今欠けているのは、FFT の使用法を理解する上で、大きなオーディオ ファイルの完全なスペクトルを取得する方法です。合計で 12800 サンプルと仮定しましょう。


Q: 生データをサイズ 1024 サンプル (~ 12800 / 1024 = 13 フレーム) のフレームに分割し、各フレームで個別に FFT を実行し、何らかの方法で平均 13 FFT の結果を結果のスペクトルにする必要がありますか? それが正しい仮定である場合、平均化を実行する方法は?

助けていただければ幸いです。