【发布时间】: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。我正在快速连续多次采样线路的瞬时电压,以使这种可视化工作。我今天进行了一项测试,尝试对另一个音频通道上的电压进行采样,但将采样数量加倍意味着显示器的刷新率降低了一半,并且外观非常糟糕。我认为硬件会是一个更好的方式来做到这一点。