72 lines
1.3 KiB
JavaScript
Executable File
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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|