0

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

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 作为输入,虽然这个函数有一个波长,但它与具有相同波长的简单正弦波不同。

注意:也会将其发布在物理和音乐部分 - 只是想知道您的计算机科学家是否对此有所了解。

4

1 回答 1

2

您只需要缩放函数,使和弦的根处于所需的频率。例如,A 大和弦中 A 的根频率为 440Hz。因此,第 3、第 5 和第 8 音阶将分别为 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)
于 2014-10-13T03:34:13.967 回答