This repository has been archived on 2026-01-13. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
EMP-WEB-SYNTH/scripts/osc2.js
2020-10-19 03:20:26 +02:00

83 lines
2.5 KiB
JavaScript

var dist2_2;
var filter2_2;
var reverb2_2 = 1;
synth2 = new Tone.FMSynth({
oscillator: {
type: "sawtooth",
detune: 0,
},
envelope: {
attack: 0,
decay: 0,
sustain: 0,
release: 0,
},
}).toDestination();
piano.on('change',function(keyValue) {
if (keyValue.state == true) { // If Key is down
synth2.triggerAttackRelease(Tone.Frequency(keyValue.note, "midi").toNote()); // Play note
}
})
// Midi input
function midiNote2(note, vel){
if(vel !=0){ // Skip Key up, If velocity is 0 then play
synth2.triggerAttackRelease(Tone.Frequency(note, "midi").toNote()); // Play note
}
}
//filters
function updateFilter2(){
var filter2 = new Tone.AutoFilter(filter2_2).start(); //LFO
var reverb2 = new Tone.Reverb(reverb2_2);
var distortion2 = new Tone.Distortion(dist2_2); //DIST
// connect the player to the filter, distortion and then to the master output
synth2.chain(filter2, distortion2, reverb2, Tone.Destination);
}
// Controls
var sus2_d = new Nexus.Dial('#sustain2', dial_settings1)
var dec2_d = new Nexus.Dial('#decay2', dial_settings1)
var atk2_d = new Nexus.Dial('#attack2', dial_settings1)
var rel2_d = new Nexus.Dial('#release2', dial_settings1)
// var tune2_d = new Nexus.Dial('#tune2', dial_settings2)
var select2 = new Nexus.Select('#osc2', dropdown_osc)
var dist2 = new Nexus.Dial('#dist2', distortion_settings)
var lfo2 = new Nexus.Dial('#lfo2', dial_settings1)
var reverb2_d = new Nexus.Dial('#reverb2', reverb_settings)
// When controls change
sus2_d.on('change',function(value) {
synth2.envelope.attack = value;
});
dec2_d.on('change',function(value) {
synth2.envelope.decay = value;
});
atk2_d.on('change',function(value) {
synth2.envelope.attack = value;
});
rel2_d.on('change',function(value) {
synth2.envelope.release = value;
});
// tune2_d.on('change',function(value) {
// synth2.oscillator.detune = value;
// });
select2.on('change',function(value) {
synth2.oscillator.type = value.value;
});
//Effect knobs
dist2.on('change',function(value) {
dist2_2 = value.toFixed(1);
typewatch(function(){updateFilter2();}, 100 );
});
lfo2.on('change',function(value) {
filter2_2 = value.toFixed(1);
typewatch(function(){updateFilter2();}, 100 );
});
reverb2_d.on('change',function(value) {
reverb2_2 = value.toFixed(0);
typewatch(function(){updateFilter2();}, 100 );
});