Je ne sais pas si c'est encore possible, mais je pensais que je demanderais, je soupçonne que si cela est possible, il serait changé dans la routine - (void) renderFFTToTex. Quelqu'un a-t-il des idées pour faire ceci ou d'autres suggestions qu'ils pourraient recommander? Je vous remercie.Modification de l'échelle linéaire d'Auriotouch en logarithmique
0
A
Répondre
2
Pour RESCALE la fréquence, nous avons besoin à l'échelle de ce paramètre:
CGFloat yFract = (CGFloat)y/(CGFloat)(maxY - 1);
qui a une valeur entre 0..1 et détermine la sortie fft à prendre pour afficher sur la ligne d'affichage y. Pour obtenir une échelle logarithmique, commencez par calculer: une fréquence f (0.1kHz-20kHz) doit être affichée dans un journal de position (f). Appelez le bas lié (0.1kHz) L, de la limite haute (20kHz) H. Puis, après quelques calculs [[sauté]] vous obtenez:
yFract = (exp(yFract*log(H/L)) - 1)/(H/L - 1);
où vous devez remplir ce que vous pensez est le H/L rapport, par exemple
yFract = (exp(yFract*log(20)) - 1)/(20 - 1);
(vous devriez vérifier si 0 donne 0 et 1 donne 1, qui est le cas)
Les données semblent encore vraiment bondé à l'extrémité inférieure de la bande de fréquence. –
Peu importe, j'ai dû le modifier aux deux endroits où yFract est utilisé. Merci beaucoup pour votre aide et votre réponse. –
Quelle était cette formule que vous avez utilisée pour redimensionner le niveau de dB? –