我一直在研究如何理解声音和正弦波的工作方式,尤其是和弦。到目前为止,我的理解如下:
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的音符的主要和弦如下:
Major Chord = b + T + D + A
我想知道是否有人有办法让计算机合成器发挥这个功能,所以我可以听到结果;我发现的大多数程序只将Hz作为输入,有时这个函数有一个波长,它与波长相同的简单正弦波不同。
注意:也会在物理和音乐部分发布 - 只是想知道你的计算机科学家是否对此有所了解。
答案 0 :(得分:2)
您只需要缩放功能,使和弦的根达到所需的频率。例如,A大调和弦中A的根频率为440Hz。因此,第3,第5和第八音将分别为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)