ゲインをフェードアウトさせることで、アプリケーションのクリックを取り除こうとしています。以下のコードでは、音の変化を聞くことができますが、フェードアウトしません。ここでWeb Audio API - クリックを避けるためのランプゲイン
var oscillator = audioContext.createOscillator();
oscillator.connect(gainNode);
oscillator.type = 'sine'; // sine, triangle, sawtooth
console.log(self.currentPitch);
if(isFinite(self.currentPitch)==true){
oscillator.frequency.value = self.currentPitch;
// connect it to the output
oscillator.connect(audioContext.destination);
// start the note
oscillator.start(0);
setTimeout(function(){
var now = audioContext.currentTime;
//gainNode.gain.value=0;
gainNode.gain.linearRampToValueAtTime(0,now+.05);
oscillator.stop(now+.05);
}, self.duration*1000);
は完全なコードです:
var Musical = function(){
var self=this;
self.basePitch= 420;
self.currentPitch=420;
self.baseLineLength=$("#guidecircles circle").first().attr("r");
self.currentLineLength=100;
self.duration=.2; //time in seconds
self.playPosition=0;
self.playTimer=false;
try {
if (! window.AudioContext) {
if (! window.webkitAudioContext) {
self.bad_browser();
return;
}
window.AudioContext = window.webkitAudioContext;
}
var audioContext = new AudioContext();
}
catch(e) {
console.log('Web Audio API is not supported in this browser');
}
var gainNode = audioContext.createGain();
gainNode.connect(audioContext.destination);
/* Playing a tone */
self.playTone=function(){
self.setCurrentPitch();
// create the oscillator
var oscillator = audioContext.createOscillator();
oscillator.connect(gainNode);
oscillator.type = 'sine'; // sine, triangle, sawtooth
console.log(self.currentPitch);
if(isFinite(self.currentPitch)==true){
oscillator.frequency.value = self.currentPitch;
// connect it to the output
oscillator.connect(audioContext.destination);
// start the note
oscillator.start(0);
setTimeout(function(){
var now = audioContext.currentTime;
//gainNode.gain.value=0;
gainNode.gain.linearRampToValueAtTime(0,now+.05);
oscillator.stop(now+.05);
}, self.duration*1000);
}
/* if(typeof oscillator !="undefined"){
}*/
return self;
}
/* Get current pitch */
self.setCurrentPitch=function(){
/* find ratio of current line length to base line length */
var ratio=parseFloat(self.baseLineLength/self.currentLineLength);
/* apply ratio to base pitch and set the current pitch */
self.currentPitch=self.basePitch*ratio;
console.log(self.baseLineLength,self.currentLineLength,"ratio:"+ratio);
}
/* play music */
self.play=function(){
self.playTimer=setInterval(function(){ playNext() }, self.duration*1000);
return self;
}
var playNext=function(){
var toneLine=$("#musicallines line").eq(self.playPosition);
$("#musicallines line").removeClass('playing');
toneLine.addClass('playing');
if(self.playPosition>($("#musicallines line").length-1)){
clearInterval(self.playTimer);
self.playPosition=0;
} else {
self.playPosition++;
self.currentLineLength=toneLine.LineEquation().getMagnitude();
self.playTone();
}
}
self.bad_browser=function(){
alert("Your browser does not support web audio");
}
return self;
}
それを実行しているバージョンは、このサイトにアクセスしてくださいを参照するには、次の
ライブサイト上のmusical.jsファイルゲイン調整の更新はありません。このサイトは、ルーラーとコンパスのパターンを作成するための描画ツールです。
円ツールは一点、別のをクリックして使用して、描画するには。交点は互いに幾何学的関係にある。下の中から選んだ楽譜ツールで楽譜を作成します。ピッチは、ベースピッチ(220hz)を新しいラインに対する最初の半径の比で割って決定されます。
キーボードで "p"と入力して構図を再生します。