2016-04-19 13 views
-1

私は、正確なパラメータを設定するためにスペクトル解析を視覚化する必要があるプロジェクトに取り組んでいます。今私はビンをスクリーンスペースに変換しています。なぜなら、線形空間では、より低い周波数の大きさが一緒に押しつぶされるからです。ここに私のコードは、C++にあります:周波数 - 線形ビン対対数スクリーンスペース

float windowSize = 640; 
float windowHeight = 480; 
for (size_t i = 0; i < bins; i++) 
{ 
    float m = audioIn.getSpectrum.at(i)*windowHeight; 
    float pos = i; 
    drawLine(vec2(pos, 0), vec2(pos, m)); 
} 

私は別のアプローチを使用してposを計算しようとしているが、無残に失敗しました。私は私が推測する対数についての重要な知識を欠いている。

免責事項:これは、個人的な芸術のプロジェクトではなく、宿題です。

+1

_「免責事項:これは個人的なアートプロジェクトではなく、宿題のためです。」_それは[MCVE]を失ったことの理由ではありません。 –

答えて

1

通常、スペクトログラフは、ベース10の対数スケールで表示されます。

あなたのケースでbinsは、あなたが(44.1kHzのオーディオ用)、このような何かを試してみてくださいnyquist Hz0 Hzから行くと仮定:

float nyquist = 22050.0; 
float logMax = log10(nyquist); 
float log = log10((float)i * nyquist/(float)bins); 
float pos = log/logMax * windowSize;