【问题标题】:'Mono' FFT Visualization of a Stereo Analog Audio Source立体声模拟音频源的“单声道”FFT 可视化
【发布时间】:2019-01-17 20:41:15
【问题描述】:

我使用一个 Teensy 微控制器、一个显示面板和一对耳机插孔创建了一个非常基本的 FFT 可视化器。我为 Arduino 使用了 kosme 的 FFT 库:https://github.com/kosme/arduinoFFT

模拟音频流入耳机输入和微控制器对其进行采样的连接点。该接头还连接到音频输出插孔,以便将音频传递到某些扬声器。

这一切都很好,但目前我只对左声道进行采样。任何时候音乐被立体声分离,可视化都无法解释正确通道上的任何声音。我想纠正这个问题,但我不确定我应该从硬件还是软件开始。

我应该建立一个电路来混合左右声道吗?我想我可以这样做:

但我很确定我的示意图被误导了。我加入了偏置电压来尝试对音频信号进行直流耦合,以便它能够正确地越过二极管。不过,确保输出与输入匹配对我来说很重要。

或者也许应该在软件中最好地解决这个问题?我是否应该只是分别对两个通道进行采样,然后做一些数学运算来组合它们?

【问题讨论】:

  • 我不熟悉 kosme(或 arduino),但在软件中混合这两个通道可以像将它们加在一起并除以 2 一样简单(以防止削波)。例如,wave (pcm) 的左右通道数据是交错的(left0、right0、left1、right1 等),因此在代码中分离通道很简单。
  • 是的,正如@dsp_user 建议的那样,只需将来自多个通道的信号相加,然后除以 num 个通道,但请注意此总和的数据类型,因为根据定义,源通道数据将携带一个消耗其信号的信号整个信息承载能力...通常音频的位深度为 16 位,因此使用两个字节存储,因此只需确保您选择存储总和的数据类型可以处理两次(立体声),即四字节数据类型,否则总和会超载
  • 不幸的是,如果我按照您的解释,我正在处理模拟音频,而不是数字 pcm。我正在快速连续多次采样线路的瞬时电压,以使这种可视化工作。我今天进行了一项测试,尝试对另一个音频通道上的电压进行采样,但将采样数量加倍意味着显示器的刷新率降低了一半,并且外观非常糟糕。我认为硬件会是一个更好的方式来做到这一点。

标签: audio fft circuit


【解决方案1】:

结合前叉一端的立体声通道而不结合其他两个是非常困难的。在软件中工作要容易得多。

如果您采集两组样本,微控制器需要执行的数学运算量就会增加一倍。

但是,如果您从两个引脚获取读数并将它们除以 2,您可以将它们加在一起并获得一组代表“单声道”信号的样本。

请记住,人耳对音量的反应不均匀,因此两个引脚上的“中等”音量读数,加起来和减半,将导致“中低”值。如果可以为更复杂的除法节省周期,最好除以 1.5 或 1.75。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-22
    • 2015-12-27
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多