Audio 合成的复调声音完全不同于;“真正的”;一

Audio 合成的复调声音完全不同于;“真正的”;一,audio,synthesizer,sound-synthesis,Audio,Synthesizer,Sound Synthesis,我正在制作一个软件音频合成器,到目前为止,我已经设法一次播放一个单音 我的目标是使它成为复调的,即当我按下两个键时,两个键都处于活动状态并发出声音(我知道一个扬声器一次只能输出一个波形) 从我到目前为止读到的内容来看,要实现一个伪复调效果,你应该做的是,以不同的振幅将音调彼此相加 我拥有的代码太大,无法完整发布,但我已经测试过了,而且它是正确的(它实现了我上面描述的内容,无论什么时候做正确的事情,我都不太确定) 下面是我的一些混合的伪代码 sample = 0.8 * sin(2pi * fre

我正在制作一个软件音频合成器,到目前为止,我已经设法一次播放一个单音

我的目标是使它成为复调的,即当我按下两个键时,两个键都处于活动状态并发出声音(我知道一个扬声器一次只能输出一个波形)

从我到目前为止读到的内容来看,要实现一个伪复调效果,你应该做的是,以不同的振幅将音调彼此相加

我拥有的代码太大,无法完整发布,但我已经测试过了,而且它是正确的(它实现了我上面描述的内容,无论什么时候做正确的事情,我都不太确定)

下面是我的一些混合的伪代码

sample = 0.8 * sin(2pi * freq[key1] * time) + 0.2 * sin(2pi * freq[key2] * time)
我使用这种方法的问题是,当我试着弹奏C#时,它会产生一种扭曲的wierd摆动状声音,它似乎会使整个波形在3-5 Hz左右振荡

我也知道这是“正确的”行为,因为我画了一个这样的场景,波形与我在这里经历的非常相似

我知道这是节拍效应,当你在频率上加上两个相近的音调时会发生这种情况,但当你在钢琴上按两个键时不会发生这种情况,这意味着这种方法是不正确的

为了测试,我制作了第二个版本,使用立体声配置,当按下第二个键时,它会在不同的频道上播放第二个音调,并产生我想要的效果

这是一个比较

  • 正常的
  • 立体声

任何帮助都将不胜感激,但不要说这是不可能的,因为所有严肃的合成器都可以实现这一效果

从声音开始反向工作,“跳动”声音是由相隔5或6 Hz附近的两个音调产生的声音。(它太短了,我无法计算每秒的准确节拍数。)您正在播放Midi 36(C2)=65.4Hz和Midi 37(C#2)69.3Hz吗?预计它们将以每秒约4倍的速度击败对手。Midi 48和49将接近每秒8次

我听到的音高听起来更像是A而不是C。A2(110)+A#2(116.5)的拍频可能与听到的匹配

我会再次检查您在两种场景(单声道和立体声)中使用的代码是否真正发送了您认为正确的频率

您使用的采样率是多少?我想知道,由于在数据生成过程中每秒的采样数异常低,结果是否可能是人为因素。我听到的音调有很多作为正弦函数的泛音。我假设谐波是由于相对较少的阶跃(一个看起来非常“块状”的信号)而缺乏平滑度造成的

我不确定我的推理是否正确,但也许这是一个合理的假设。假设您的计算机能够以44100 fps的速度发送信号。这应该能够很好地解码一个相当“块状”的正弦(有很多谐波)。由于块状产生的高频内容(超过Nyquist值),可能会出现一些混叠


让我们进一步假设加法函数不是以44100 fps的速度出现,而是以更低的采样率出现。这将降低奈奎斯特并增加混叠。因此,与单独输出信号的情况相比,混合声音更容易受到混叠相关失真的影响。

从声音向后工作,“跳动”声音是由相隔5或6 Hz附近的两个音调产生的声音。(它太短了,我无法计算每秒的准确节拍数。)您正在播放Midi 36(C2)=65.4Hz和Midi 37(C#2)69.3Hz吗?预计它们将以每秒约4倍的速度击败对手。Midi 48和49将接近每秒8次

我听到的音高听起来更像是A而不是C。A2(110)+A#2(116.5)的拍频可能与听到的匹配

我会再次检查您在两种场景(单声道和立体声)中使用的代码是否真正发送了您认为正确的频率

您使用的采样率是多少?我想知道,由于在数据生成过程中每秒的采样数异常低,结果是否可能是人为因素。我听到的音调有很多作为正弦函数的泛音。我假设谐波是由于相对较少的阶跃(一个看起来非常“块状”的信号)而缺乏平滑度造成的

我不确定我的推理是否正确,但也许这是一个合理的假设。假设您的计算机能够以44100 fps的速度发送信号。这应该能够很好地解码一个相当“块状”的正弦(有很多谐波)。由于块状产生的高频内容(超过Nyquist值),可能会出现一些混叠


让我们进一步假设加法函数不是以44100 fps的速度出现,而是以更低的采样率出现。这将降低奈奎斯特并增加混叠。因此,与单独输出信号的情况相比,混合声音更容易受到混叠相关失真的影响。

您可能更幸运地在上问这个问题-这不适合这个网站您可能更幸运地在上问这个问题-这不适合这个网站我想我会用一些更详细的信息更新这个问题关于实际代码,尽管这不是我的初衷。顺便说一句,我用了48khz的SR和220hz的音阶,但在440上你也能听到跳动,所以不是那样,音符是A,不是C?另外,在你的等式中,你在“时间”中使用的量是多少,你是否在以48khz的频率更新每一帧?此外,在“声音”堆栈交换或DSP区域尝试也是一个好主意。过去,我在这两个方面都得到了很好的回复。我在声音和音乐上的回复都增加了1/SRi,后者给了我最多的回复。我想我会更新这个问题,提供更多关于