正弦波音乐发生器



我一直在研究如何理解声音和正弦波的工作方式,尤其是和弦。到目前为止,我的理解如下:

1) b(t) = sin(Api(t)) is the base note of the chord at frequency A.
2) T(t) = sin(5/4piA(t)) is the major third of the base b(t).
3) D(t) = sin(3/2piA(t)) is the dominant (fifth) of the base b(t).
4) A(t) = sin(2Api(t)) is the octave.

每一个单独是一个单独的频率,这对于计算机生成器来说很容易发出声音。然而,频率为A的音符的主和弦如下:

大弦=b+T+D+A

我想知道是否有人能让电脑合成器播放这个功能,这样我就能听到结果;我发现的大多数程序都只将Hz作为输入,虽然这个函数有一个波长,但它与相同波长的简单正弦波不同。

注意:我们也会在物理和音乐部分发布这篇文章——只是想知道你们的计算机科学家是否对此有所了解。

您只需要缩放函数,使弦根处于所需频率。例如,A大和弦中A的词根频率为440Hz。因此,第三、第五和八度音阶将分别为440*5/4、440*3/2和440*2。

要在计算机上生成声音,你需要做的第一件事是将函数从连续时间转换为离散时间,并从连续级别转换为量化级别。关于这个话题,网上有很多很好的参考资料。

正弦波的连续时间版本类似于

y = ampl * sin(2 * pi * freq)

离散时间版本如下:

y[n] = ampl * sin(2 * pi * freq / sampleRate)

其中n是采样数,sampleRate是一秒的分割数。

然后,主弦的组成部分将以以下方式构建:

root[n]   = ampl * sin(2 * pi * freq / sampleRate)
third[n]  = ampl * sin(2 * pi * freq * (5/4) / sampleRate)
fifth[n]  = ampl * sin(2 * pi * freq * (3/2) / sampleRate)
octave[n] = ampl * sin(2 * pi * freq * 2 / sampleRate)

最新更新