我正在尝试制作一个简单的振荡器程序,我可以改变Octave类型的Massive VST显示正负数的方式:

现在,我知道一个八度音程有1200美分(每个半音100美分).我遇到的问题是,在制作Osc代码时,我意识到它的音高是用Cents测量的.
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);
Run Code Online (Sandbox Code Playgroud)
由于Pitch改变了音符的频率,我很困惑的是,没有MIDI键盘我怎么知道
此外,我怎样才能从这些波形中获得低音?我做了几个测试,产生1美分,2美分,5美分,20美分等声音,看看它们是如何发声的,当Osc以1美分的速度产生音高时,我得到的只是低咔嗒声,而2美分,我在4/4节拍中获得几乎相同的点击.根据我的理解,您可以在地图上查看像频率一样的频率,同样地,像这些点之间的距离一样.话虽如此,由于声音是直接从浏览器生成的,因此美分如何确定音符的频率?另外,如果它只是移动振荡器的音高那么简单,那么振荡器的启动是什么?换句话说,你在说什么"投球"?
我希望我写的内容很有意义,因为我自己很困惑.
感谢您的任何帮助和反馈!
我知道 JSON 是用来交换信息的。让我感到困惑的是,如果可能的话,我希望能够使用 JSON 来存储和调用对象及其构造函数,但是由于 JSON 是文字符号,我想知道是否有办法用某种类型的填充 JSON 对象参数构造函数很像普通构造函数的工作方式。
我发现的最接近的事情是这样的:
普通构造函数:
var dude = function(name, age) {
this.name = name;
this.age = age;
}
var bro = new dude("chad", 22);
Run Code Online (Sandbox Code Playgroud)
JSON:
var bro = {
'name': "chad",
'age': 22
};
Run Code Online (Sandbox Code Playgroud)
但是,即使考虑到您可以随时调用的构造函数var bro2 = new dude("tony", 21);,并dude在您想要的任何时候都有一个新实例,即使这些也不是完全相同的。您如何将这种类型的功能与 JSON 混合在一起?