如何在我的声卡上输出方波

我想在声卡上创建一个数字(方形)信号。如果我产生高频率,它的效果很好。但是,由于我无法在声卡上输出DC,因此对于较低的频率,所得的数字位将全部慢慢衰减为0。 这就是声卡高通对我的方波所做的: http://www.electronics-tutorials.ws/filter/fil39.gif 什么是信号的数学函数,当通过高通时会变成方形? 理想情况下,该解决方案在gnuplot中进行了演示。     
已邀请:
声卡会切断波形中的低频,因此您需要在传递给它时将这些频率提高一些。 方波包含许多频率(请参见此处的傅里叶级数部分)。我怀疑生成校正方波的最简单方法是对傅立叶级数求和,提高低频分量的幅度以补偿声卡中的高通滤波器。 为了计算每个低频分量的增加量,首先需要通过输出各种频率但幅度恒定的正弦波来测量声卡中高通滤波器的响应,并测量每个频率的比率输出幅度的
r(f)
到输入的幅度。然后,通过将方波傅立叶级数中的每个频率分量
f
的幅度乘以
1/r(f)
(“逆滤波器”),可以产生对方波输出的近似。 声卡中的高通滤波器也可能调整信号的相位。在这种情况下,人们可能最好将高通建模为RC滤波器(这可能是声卡如何进行滤波),并从中反转幅度和相位响应。     
之前的一些答案正确地指出,高通滤波器(声卡输出上的交流耦合电容)正在阻止低频方波“保持”,因此它们会迅速衰减。 没有办法从软件中完全击败这个过滤器,或者它不存在,现在会吗?如果你可以在较低频率下使用较低振幅的方波,你可以通过发送类似三角波的东西来近似它们。从瞬态分析的角度来看,这里的操作理论是,当耦合电容放电(阻断直流)时,你会增加其偏置电压以抵消放电,从而维持方波的平稳状态一段时间。当然你最终会耗尽PCM余量(你不能无限期地增加电压),所以24位卡在这方面比16位更好,因为它会给你更多的分辨率。另一种更抽象的方法是RC滤波器作为微分器,因此为了获得方波的平坦峰值,您需要在输入端给出三角波的平坦斜率。但这是一种理想化的行为。 作为概念的快速证明,这是在1Kohm负载下通过1uF耦合帽时60Hz±1V三角形信号的变化;它近似于±200mV的方波 注意,负载的阻抗/电阻在这里很重要;如果将其降低到100欧姆,则输出幅度会急剧下降。这就是耦合帽如何阻止扬声器/耳机上的DC,因为这些设备的阻抗远低于1Kohm。 如果我能在今天晚些时候找到更多的时间,我会添加一个更好的模拟,更好的形状刺激而不是简单的三角波,但我无法从基于网络的平均电路模拟器软件中获得... 好吧,如果你很幸运,你可以得到0.99美元的USB声卡中的一个,制造商已经偷工减料,以至于他们没有安装耦合帽。 https://www.youtube.com/watch?v=4GNRzwfP7RE     
不幸的是,你无法得到方波的良好近似值。声音硬件有意地限制转换速率,并且不能产生超出其预期频率范围的下降沿或上升沿。 您可以通过每N个样本交替使用高和低PCM代码(+ max,-max)来近似严重变形的方波。     
你实际上无法产生真正的方波,因为它具有无限的带宽。你可以产生一个合理的方波近似值,例如在10 Hz和1 kHz之间的频率(低于10 Hz,你可能会遇到声卡的模拟部分等问题,而在1 kHz以上,近似值会变得越来越不准确,因为你只能重现相对较少的谐波)。 Tp生成波形,样本值将在+/-某个值之间交替,例如,满量程,对于16位PCM流,它将是-32767和+32767。频率将由这些样本的周期确定。例如。对于44.1 kHz采样率,如果你说100个样本-32767然后100个样本+32767,即周期= 200个样本,那么你的方波的基频将是44.1 kHz / 200 = 220 Hz。     
我发现了一个基于它构建的应用程序。 http://www.blogger.com/blogger.g?blogID=999906212197085612#editor/target=post;postID=7722571737880350755 您可以生成所需的格式,甚至是您需要的模式。 该代码使用SLIMDX。     

要回复问题请先登录注册