【问题标题】:Frequency related sine wave generator on embedded system嵌入式系统上的频率相关正弦波发生器
【发布时间】:2014-03-10 13:36:46
【问题描述】:

我对此主题有类似的问题:Writing musical notes to a wav file。但是,我是 stackoverflow.com 的初学者,我没有足够的声誉来添加命令,我不确定是否允许在 Q 下发布 Q。

请让我解释一下我的目的和问题。

我想通过 I2S 从 stm32f4 微控制器向 DAC 发送 16 位 48kHz 采样率正弦波。我用 C 和 sin() 函数的数学库生成一个波。生成后,我正在用耳机测试声音。但是,它似乎与频率无关,但也确实如此。当频率发生变化时。参数变化,但音色没有区别。可能我需要一个 FIR 低通滤波器,但我不确定。实际上,我还尝试使用 FIR 低通滤波器(来自 Andreas Finkelmeyer 的网站,mind-dump.net)。但是,它并没有改变我的正弦波发生器代码上的任何有意义的东西。

最后,我主要尝试在我的代码上遵循 Eric 的明智建议(在该主题中),但我做的事情是错误的。请帮忙!我将不胜感激。

这是我生成正弦波的代码。

if (SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE))
                {
                    for (countSin = 0;countSin < 65536;countSin ++){

                    SPI_I2S_SendData(SPI3, sample);
                    if (sampleCounter & 0x00000001) //this line for matching L&R channels
                    {

                        sample = (uint16_t) (32768+(2500*sin((2*3.14/48000)*countSin*8800)+2000*sin((2*3.14/48000)*countSin*11)));
}
                    sampleCounter++;

非常感谢!

【问题讨论】:

    标签: c audio trigonometry stm32f4discovery


    【解决方案1】:

    “音色”应该改变。正弦波是单一的纯音;改变频率会改变音调的音高,但只会改变音高。如果您听到其他声音,要么您没有生成正弦波,要么您的声音链中的某个地方出现了问题,导致信号失真。

    【讨论】:

    • 非常感谢!然后,我的代码生成接近正弦波的东西。当频率发生变化时,声音的连续性会发生变化,我猜这与音高有关。你有什么理想我怎样才能摆脱每次“countSin”计数器变为“0”时听到的一种切换音? (对不起我不好的关系条款)
    • 没听说过,没有强烈的意见。
    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 2019-12-12
    • 2015-12-16
    • 2023-04-06
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多