2015-12-20 7 views
2

Я создал генератор (как показано ниже), как MDN сказал:Изменение объема осциллятора в JavaScript?

// from : https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API 
 

 
var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); 
 
var oscillator = audioCtx.createOscillator(); 
 
var gainNode = audioCtx.createGain(); 
 
oscillator.connect(gainNode); 
 
gainNode.connect(audioCtx.destination); 
 
oscillator.type = 'sine'; // sine wave — other values are 'square', 'sawtooth', 'triangle' and 'custom' 
 
oscillator.frequency.value = 2500; // value in hertz 
 
oscillator.start();

Есть ли способ, чтобы изменить громкость, как я изменил значение частоты?

+1

Взгляните на [эту строку] (https://github.com/mdn/violent-theremin/blob/gh-pages/scripts/app.js#L35) из источника примера приложения на этой странице. Вы бы просто сделали что-то вроде: 'gainNode.gain.value = [volume]'. –

+0

@HunanRostomyan, Спасибо! Это было именно то, что мне нужно. – Stardust

+0

Отлично. Np. Возможно также захочет проверить эту ссылочную статью (у нее красивые фотографии!): [MDN: GainNode] (https://developer.mozilla.org/en-US/docs/Web/API/GainNode). –

ответ

0

Вы можете получить управление переменной частоты с помощью ползунка, который управляет выходной частоты:

document.getElementById('slider99').addEventListener('input', slider99change, false); 
function slider99change(e) { 
    var x = document.getElementById("slider99"); 
    var s = x.value.toString(); 
    oz.frequency.value = s; 
} 

Ваш генератор определен глобально в другом месте:

var ozcontext = new (window.AudioContext || window.webkitAudioContext)(); 
var oz = ozcontext.createOscillator(); 
var gainNode = ozcontext.createGain(); 
oz.connect(gainNode); 
gainNode.connect(ozcontext.destination); 
gainNode.gain.value = 0; 
oz.type = 'sine'; 
oz.frequency.value = 440; 
oz.start(); 
Смежные вопросы