我正在尝试使用Audiolet(一个综合库,http: //oampo.github.io/ )在JavaScript中实现Yamaha YM3812声音芯片(又名OPL2 http://en.wikipedia.org/wiki/YM3812)的一些功能.Audiolet/api.html)
Audiolet允许您将合成器构建为节点图(振荡器,DSP,包络发生器等).
OPL2有9个通道,每个通道有两个运算符(振荡器).通常,每个通道中的一个振荡器调制另一个振荡器的频率.为了模拟这个,我为每个频道建立了一系列节点:
Synth节点链(九个通道之一)
节点链创建和连接代码:
var FmChannel = function(audiolet) {
this.car = new ModifiedSine(audiolet);
this.carMult = 1;
this.setCarrierWaveform(this.SIN);
this.mod = new ModifiedSine(audiolet);
this.modMult = 1;
this.setModulatorWaveform(this.SIN);
this.modMulAdd = new MulAdd(audiolet);
this.carGain = new Gain(audiolet);
this.carEnv = new ADSREnvelope(audiolet, 0, 0.1, 0.1, 0.1, 0.1,
function() {
this.carEnv.reset();
}.bind(this)
);
this.carAtten = new Multiply(audiolet);
this.modGain = new Gain(audiolet);
this.modEnv = new ADSREnvelope(audiolet, 0, 0.1, 0.1, 0.1, 0.1,
function() {
this.modEnv.reset();
}.bind(this)
);
this.modAtten = …
Run Code Online (Sandbox Code Playgroud) javascript signal-processing sound-synthesis audiolet web-audio-api