1
WebMIDI 컨트롤이있는 간단한 신시사이저를 구축하고 있습니다. 게인 노드는 오실레이터에 아무런 영향을 미치지 않으며, 전체 볼륨에서 전체 시간을 유지합니다. 또한 화음을 재생할 때 주파수는 정확하지만 흔들리고 삐걱 거리는 효과가 있습니다. 내 MIDI 컨트롤러로 연주 할 때 및 콘솔을 사용하여 신디사이저를 시작 및 중지 할 때 문제가 발생합니다. - 즉, [-1, + 1]여러 발진기가 비명을 지르며, 이득이 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);
}
}