我正在制作一个软件音频合成器,到目前为止,我已经设法一次播放一个音调。
我的目标是使它成为和弦,即当我按下 2 个键时,它们都处于活动状态并产生声音(我知道扬声器一次只能输出一个波形)。
从我到目前为止所读的内容来看,要实现您应该做的伪复音效果,就是将具有不同幅度的音调相互添加。
我拥有的代码太大而无法完整发布,但我已经对其进行了测试并且它是正确的(它实现了我上面描述的内容,至于何时它是正确的事情,我不再那么确定了)
这是我混音的一些伪代码
sample = 0.8 * sin(2pi * freq[key1] * time) + 0.2 * sin(2pi * freq[key2] * time)
我用这种方法遇到的问题是,当我尝试播放 CC# 时,它会产生一种奇怪的摆动,就像声音失真一样,它似乎使整个波形在 3-5 Hz 左右振荡。
我也知道这是“正确”的行为,因为我绘制了这样的场景,并且波形与我在这里遇到的非常相似。
我知道这是节拍效果,当您添加两个频率接近的音调时会发生这种情况,但当您在钢琴上按下 2 个键时不会发生这种情况,这意味着这种方法是不正确的。
只是为了测试,我制作了使用立体声配置的第二个版本,当按下第二个键时,它会在不同的通道上播放第二个音调,它会产生我正在寻找的确切效果。
这是一个比较
任何帮助将不胜感激,但不要说这是不可能的,因为所有严肃的合成器都可以达到这种效果