gpt4 book ai didi

audio - 与 "real"完全不同的合成复音

转载 作者:行者123 更新时间:2023-12-02 23:28:23 25 4
gpt4 key购买 nike

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

我的目标是使其具有复音性,即当我按下 2 个键时,它们都处于事件状态并产生声音(我知道扬声器一次只能输出一个波形)。

从我到目前为止所读的内容来看,要实现您应该做的伪复音效果,就是将具有不同幅度的音调相互添加。

我拥有的代码太大而无法完整发布,但我已经对其进行了测试并且它是正确的(它实现了我上面描述的内容,至于何时它是正确的事情,我不再那么确定了)

这是我混音的一些伪代码

sample = 0.8 * sin(2pi * freq[key1] * time) + 0.2 * sin(2pi * freq[key2] * time)

我用这种方法遇到的问题是,当我尝试播放 C C# 时,它会产生一种奇怪的摆动,就像声音失真一样,它似乎使整个波形在 3-5 Hz 左右振荡。

我也知道这是“正确”的行为,因为我绘制了这样的场景,并且波形与我在这里遇到的非常相似。

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

只是为了测试,我制作了使用立体声配置的第二个版本,当按下第二个键时,它会在不同的 channel 上播放第二个音调,它会产生我正在寻找的确切效果。

这是一个比较
  • 正常 https://files.catbox.moe/2mq7zw.wav
  • 立体声 https://files.catbox.moe/rqn2hr.wav

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

    最佳答案

    从声音向后工作,“跳动”声音是由相隔 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) 的节拍率可能与听到的相匹配。

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

    你使用什么采样率?我想知道结果是否可能是由于您的数据生成过程中每秒样本数异常低而造成的伪影。我听到的音调有很多正弦函数的泛音。我假设谐波是由于步骤相对较少(看起来非常“ block 状”的信号)而导致缺乏平滑度。

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

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

    关于audio - 与 "real"完全不同的合成复音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59277694/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com