如何用Qt制作平滑的电平(峰值)表
how to make smooth level(peak) meter with Qt
从频道获取峰值电平:
BASS_ChannelGetLevelEx(chan, levels, 0.02, BASS_LEVEL_STEREO );
这个函数我在线程中以相同的频率调用
void Thread::run()
{
while(!m_abort)
{
emit SetLevels();
QThread::msleep(20);
}
}
通过 QPainter 绘制电平表
就是这样
运行 疯狂地跳跃。但一定要顺利
如何让它平滑平滑?
当你的新峰值大于当前峰值时,就赋新值即可。如果小于,则像这样以对数方式减小当前值..
float factor = 0.10;
cur_left_value = cur_left_value - factor * (cur_left_value - new_left_value);
该系数越大,您的峰值仪表就会越快"fall"。您将必须有一个计时器或线程来 连续 使用上述逻辑分配最新(新)峰值。
从频道获取峰值电平:
BASS_ChannelGetLevelEx(chan, levels, 0.02, BASS_LEVEL_STEREO );
这个函数我在线程中以相同的频率调用
void Thread::run()
{
while(!m_abort)
{
emit SetLevels();
QThread::msleep(20);
}
}
通过 QPainter 绘制电平表
就是这样
运行 疯狂地跳跃。但一定要顺利
如何让它平滑平滑?
当你的新峰值大于当前峰值时,就赋新值即可。如果小于,则像这样以对数方式减小当前值..
float factor = 0.10;
cur_left_value = cur_left_value - factor * (cur_left_value - new_left_value);
该系数越大,您的峰值仪表就会越快"fall"。您将必须有一个计时器或线程来 连续 使用上述逻辑分配最新(新)峰值。