gpt4 book ai didi

javascript - 网络音频 : Hz and Cents

转载 作者:搜寻专家 更新时间:2023-10-31 22:07:22 26 4
gpt4 key购买 nike

我正在尝试制作一个简单的振荡器程序,我可以在其中更改 Octave 类型,就像 Massive VST 用正数和负数显示它的方式一样:

Massive Oscillators
(来源:massivesynth.com)

现在,我知道一个 Octave 有 1200 音分(每半音 100 音分)。我遇到的问题是,在制作 Osc 代码时,我意识到它的音高是以音分为单位。

ctx = new webkitAudioContext(); 
function osc1(pitch){
osc = ctx.createOscillator(),
osc.type = 2; //0 = sine, 1 = square, 2 = saw, 3 = triangle, 4 = custom
osc.frequency.value = pitch; //in cents
gainNode = ctx.createGainNode();
osc.connect(gainNode);
gainNode.connect(ctx.destination);
gainNode.gain.value = 1;
osc.noteOn(0);
};

osc1 (20);

因为音高会改变音符的频率,所以我很困惑,没有 MIDI 键盘我怎么知道

  1. 正在演奏什么音符?
  2. 播放音符的频率是多少?

此外,我怎样才能从这些波形中获得低音效果?我做了几个测试,在 1 美分、2 美分、5 美分、20 美分等处产生声音,看看它们听起来如何,以及当振荡器以 1 美分产生音高时,我得到的只是一个低音 click 而在 2 美分的情况下,我在 4/4 节拍中得到几乎相同的click。根据我的理解,您可以将频率视为 map 上的点,同样,将美分视为这些点之间的距离。话虽如此,既然声音是直接从浏览器生成的,音分如何确定音符的频率?另外,如果只是移动振荡器的音高那么简单,那么振荡器从哪个音符开始?换句话说,您要“推销”什么音符?

考虑到我自己也很困惑,我希望我写的是有道理的。

感谢您的帮助和反馈!

最佳答案

音高以赫兹(每秒循环数)为单位,也可以表示为音符和与该音符的偏差(以音分为单位)。正如您正确指出的那样,1 音分是半音的 1/100 或 Octave 的 1/1200。

翻译音分的关键是要认识到音高的进展不是线性的而是几何的。 A 定义为 440 赫兹。高一个 Octave 的 A 为 880Hz,高一个 Octave 的 A 为 1760Hz,依此类推。请注意,两个 A 音符之间的 Hz 差异对于每个 Octave 音阶向上加倍。

从数学上讲,从给定的音高开始,下一个半音不是大固定的赫兹数,而是大一个比率,即 2 的第十二根 (21/12)。由于一分小了 100 倍,它的比率是 2 的 1200 次方根,或 21/1200。请记住,对于每个 Octave 音阶,您将 Hz 加倍。对于每个半音,您将频率乘以 21/12。如果你这样做十二次,你就会把原来的数字加倍 (440 * (21/12)12 = 440 * 2 = 880)。同样,(440 * (21/1200)1200 = 880)。

在 Excel 中尝试。

Cell A1: 440
Cell A2: =A1*2^(1/1200)
Cell A3: ...copy A2 down...
.
.
.
Cell A1201:

如果操作正确,单元格 A1201 将神奇地包含值 880,其间的所有单元格将为您提供每一分的频率(但请参阅下面的重要警告)。

不幸的是,事情并没有那么简单。我描述的是基于数学的毕达哥拉斯量表,今天没有人使用。如果你用这种方式给钢琴调音,C 大调和 A 小调可能听起来不错,但其他键听起来很走调。其原因与听力生理学有关。有很多关于气质的学术书籍,它在巴洛克时期引起了激烈的争论,几个系统争夺思想份额,直到巴赫“决定”每个人都使用良好的气质,因为键盘不能轻易地拥有它气质变了。

今天的音乐家使用一种称为平均律音阶的修改,其中一些音符从数学上的完美程度稍微向上或向下调整,以便所有键都可以使用而无需重新调整。这是一种妥协,但我们都习惯于听到它。我不会进一步讨论它,只是说,由于间隔不完全是 21/12,因此音分的定义略微取决于每个间隔的实际宽度。将音分视为 0 到 100 之间的一组点,在两个音符之间等距,但基于固定的比率 (21/1200) 而不是固定数量赫兹。

如果你想制作一个精确的振荡器来提供音符,你将不得不研究音律并调整 Hz 值以匹配当前的音乐惯例。您将需要一本关于音律的好书,和/或可以调节不同音律的调音器。有几个 iPhone 应用程序可以处理不同的气质,包括输入和输出到扬声器。

祝你好运,玩得开心。

关于javascript - 网络音频 : Hz and Cents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19603530/

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