Я строю простой синтезатор с помощью элемента управления WebMIDI. Узел усиления не влияет на осциллятор, он находится в полном объеме все время. Также, когда я воспроизвожу аккорды, частоты правильны, но есть эффект качания и визжа. Проблемы возникают при игре с моим MIDI-контроллером и при запуске и остановке синтезатора с помощью консоли.Множество осцилляторов визг, усиление не действует в WebAudio
Вот мой синтезатор код:
var synth = {
voices: {},
start: function (note, vol) {
this.voices[note] = {
gain: audio.createGain(),
osc: audio.createOscillator()
}
this.voices[note].gain.connect(audio.destination);
this.voices[note].osc.frequency.value = noteToFreq(note);
this.voices[note].osc.connect(this.voices[note].gain);
this.voices[note].osc.start(0);
this.voices[note].gain.gain.setTargetAtTime(vol, audio.currentTime, 0.5);
},
stop: function (note) {
this.voices[note].gain.gain.setTargetAtTime(0, audio.currentTime, 2);
this.voices[note].osc.stop(audio.currentTime + 2);
}
}