我正在尝试制作一个简单的振荡器程序,我可以在其中更改 Octave 类型,就像 Massive VST 用正数和负数显示它一样:
(来源:massynth.com)
现在,我知道一个八度音阶有 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);
由于 Pitch 改变了音符的频率,我感到困惑的是,没有 MIDI 键盘我怎么能知道
- 演奏的是什么音符?
- 音符的播放频率是多少?
此外,我怎样才能从这些波形中获得低音?我已经进行了几次测试,以 1 美分、2 美分、5 美分、20 美分等产生声音,以查看它们的声音以及当 Osc 以 1 美分产生音高时,我得到的只是低点击,而使用2 美分,我在 4/4 节拍中得到几乎相同的点击。根据我的理解,您可以查看地图上的频率点,同样,美分就像这些点之间的距离。话虽如此,既然声音是直接从浏览器生成的,那么美分如何确定音符的频率呢?另外,如果只是移动振荡器的音高那么简单,那么振荡器从哪个音符开始?换句话说,你每次说什么“投球”?
考虑到我自己很困惑,我希望我写的东西有意义。
感谢您的任何帮助和反馈!