【问题标题】:JUCE assertion failure - IIRFilter on iOSJUCE 断言失败 - iOS 上的 IIRFilter
【发布时间】:2017-12-14 01:20:41
【问题描述】:

我在 iOS 音频应用程序中遇到了 IIRFilter 问题。

我在更改滑块时使用了 setCoefficients 方法,但是当我移动滑块时,我会发出噼啪声,然后应用程序冻结,并且出现 Juce 断言失败。

IIRFilter Assertion Error

这里是我改变系数以对应频率滑块的地方:

Changing filter coefficient on sliderValueChanged

但我不明白它是如何失败的。我在 MainContentComponenet 构造函数中将 lpfSlider 的范围设置为 20 到 20k:

Setting range for Frequency slider

据我了解,来自麦克风的 iOS 音频数据以 44.1 kHz 采样。

这是我在 prepareToPlay() 中定义全局采样率 fs 的地方:

Setting global sample rate

那么为什么这个断言失败了?

有人知道这里发生了什么吗?

谢谢!

【问题讨论】:

    标签: c++ ios audio juce


    【解决方案1】:

    我在您的屏幕截图中搜索了断言,找到了 cpp 文件和断言。

    jassert (frequency > 0.0 && frequency <= sampleRate * 0.5);
    

    您对采样率的假设是错误的,或者您的滑块允许频率超出 Nyquist 或低于 0。

    噼啪声是突然改变滤波器系数的自然副作用。

    【讨论】:

    • 嗨,Jaket,感谢您花时间帮我解决这个问题。我自己已经检查了断言。 Nyquist 绝对是 44.1k/2(我将preparetoplay 的采样率打印到屏幕上),我的滑块范围绝对是 20 到 20k。所以这里发生了其他事情。
    • 你忽略了显而易见的事情。你打电话给makeLowPassFilter(frequency, sampleRate)makeLowPassFilter 断言失败。不管你怎么说,你的频率和/或采样率并不是你想象的那样。我将首先在调用makeLowPassFilter 之前放置两个单独的断言,一个关于频率,一个关于采样率。
    • 你是对的。采样率为 22050。我只是对它为什么改变感到困惑..??我将滑块的最大范围设置为取决于采样率。谢谢!
    • @AndrewDoss。很高兴你解决了。如果它对你有用,请接受这个答案。谢谢!
    猜你喜欢
    • 2014-10-03
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多