gpt4 book ai didi

c++ - 频率-线性仓到对数屏幕空间

转载 作者:行者123 更新时间:2023-12-03 02:29:33 29 4
gpt4 key购买 nike

我正在研究项目,需要可视化频谱分析以设置一些精确参数。现在,我将垃圾箱转换为屏幕空间,因为在线性空间中,较低频率的幅度被压缩在一起。这是我在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,但失败了。我猜想我缺少关于对数的关键知识。

免责声明:这是用于个人艺术项目,而不是家庭作业。

最佳答案

通常,光谱仪以10为底的对数刻度显示。

假设您的情况下的bins0 Hz变为nyquist Hz,则可以尝试执行以下操作(对于44.1kHz音频):

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

关于c++ - 频率-线性仓到对数屏幕空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730594/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com