Чтобы изменить частоту, нам нужно масштабировать этот параметр:
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, что имеет место)