2010-08-04 49 views
0

我不知道這是否可以做到,但我想我會問,我懷疑如果可能的話,它將在 - (void)renderFFTToTex例程中進行更改。有沒有人有任何想法做這個或他們可以推薦的其他建議?謝謝。將Auriotouch線性刻度變爲對數

回答

2

重新調節頻率,我們需要擴展該參數:

CGFloat yFract = (CGFloat)y/(CGFloat)(maxY - 1); 

具有0..1之間的值,並確定哪個FFT輸出取顯示在顯示行y。要獲得對數刻度,首先要做數學運算:頻率f(0.1kHz-20kHz)必須顯示在位置log(f)上。調用下界(0.1kHz)L,高界(20kHz的)H.然後一些數學後[跳過]你:

yFract = (exp(yFract*log(H/L)) - 1)/(H/L - 1); 

,你應該在你認爲什麼補是H/L比例,例如

yFract = (exp(yFract*log(20)) - 1)/(20 - 1); 

(你應該檢查一下0 0給出了1給出了1,這是這種情況)

+0

數據仍然顯得非常擁擠的頻段的低端。 – 2010-08-04 23:44:46

+0

沒關係,我不得不在兩個使用yFract的地方修改它。謝謝你的幫助和答案。 – 2010-08-04 23:48:10

+0

您用於再次縮放dB級別的那個公式是什麼? – 2010-08-05 15:38:02