president/public/js/manager/synth.js

72 lines
1.3 KiB
JavaScript
Executable File

var piano;
var oscillator;
$(document).on('click', '#synth_toggle', function() {
var url = '/manager/synth';
var timestamp = Date.now();
$.ajax({
url: url,
type: 'GET',
data: { timestamp: timestamp, window_maker: 'yes' },
success: function(response) {
windowMaker(response);
pianoInit();
}
});
});
$(document).on('click', '.piano_key', function() {
var freq = $(this).attr('freq');
var waveform = $('#synth_waveform').val();
var length = $('#synth_length').val();
var destination = $('#synth_destination').val();
var sdata = { 'app': 'music', type: 'synth', freq: freq, waveform: waveform, length: length };
var json = JSON.stringify(sdata);
console.log(json);
if (destination == 'browser') {
oscillator = piano.createOscillator();
var synth = document.getElementById('synthesizer');
oscillator.frequency.value = freq;
oscillator.connect(piano.destination);
oscillator.type = waveform;
oscillator.connect(piano.destination);
synth.src = piano;
oscillator.start();
var pInt = setInterval(function() {
oscillator.stop();
clearInterval(pInt);
},length * 1000);
}
else if (destination == 'sox') {
ws['music'].send(json);
}
});
function pianoInit() {
piano = new AudioContext;
oscillator = piano.createOscillator();
var synth = document.getElementById('synthesizer');
return piano;
}