Изменение линейной шкалы Auriotouch на логарифмическую - PullRequest
0 голосов
/ 05 августа 2010

Я не знаю, возможно ли это вообще сделать, но подумал, что спросить, я подозреваю, что если это возможно, это будет изменено в подпрограмме - (void) renderFFTToTex.У кого-нибудь есть какие-либо идеи по поводу того или иного предложения, которое они могли бы порекомендовать?Спасибо.

1 Ответ

2 голосов
/ 05 августа 2010

Чтобы изменить частоту, нам нужно масштабировать этот параметр:

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

, значение которого находится в диапазоне от 0 до 1, и определяет, какой вывод fft следует отображать в строке отображения y.

Чтобы получить логарифмическую шкалу, сначала выполните математические расчеты: частота f (0,1 кГц-20 кГц) должна отображаться в журнале положения (f). Назовите нижнюю границу (0,1 кГц) L, верхнюю границу (20 кГц) 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, что имеет место)

...