coffee shop code
This commit is contained in:
133
scripts/scripts_obs.js
Normal file
133
scripts/scripts_obs.js
Normal file
@@ -0,0 +1,133 @@
|
||||
const synth = new Tone.FMSynth().toMaster();
|
||||
var sus1 = 0;
|
||||
var atk1 = 0;
|
||||
var wav = "sawtooth";
|
||||
// var synth = new Tone.AMSynth({
|
||||
// oscillator: {
|
||||
// type: "square",
|
||||
// },
|
||||
// envelope: {
|
||||
// attack: atk1,
|
||||
// decay: 0.1,
|
||||
// sustain: sus1,
|
||||
// release: 0.1,
|
||||
// },
|
||||
// modulation: {
|
||||
// type: "square",
|
||||
// },
|
||||
// }).toMaster();
|
||||
// const synth = new Tone.FMSynth().toDestination();
|
||||
// synth.type = "pwm";
|
||||
|
||||
var activeSynths = {};
|
||||
const createPiano = (lowNote, highNote) => {
|
||||
const newPiano = new Nexus.Piano("#target", {
|
||||
size: [500, 125],
|
||||
mode: "button",
|
||||
lowNote,
|
||||
highNote,
|
||||
});
|
||||
|
||||
return newPiano;
|
||||
};
|
||||
|
||||
let lowNote = 72;
|
||||
let highNote = 84;
|
||||
let piano = createPiano(lowNote, highNote);
|
||||
|
||||
synth.triggerRelease();
|
||||
|
||||
|
||||
const keyMapper = {
|
||||
a: 0,
|
||||
w: 1,
|
||||
s: 2,
|
||||
e: 3,
|
||||
d: 4,
|
||||
f: 5,
|
||||
t: 6,
|
||||
g: 7,
|
||||
y: 8,
|
||||
h: 9,
|
||||
u: 10,
|
||||
j: 11,
|
||||
k: 12,
|
||||
};
|
||||
|
||||
|
||||
|
||||
piano.on("change", (k) => {
|
||||
if (k.state) {
|
||||
if (!activeSynths[k.note]) {
|
||||
activeSynths[k.note] = new Tone.AMSynth({
|
||||
oscillator: {
|
||||
type: wav,
|
||||
},
|
||||
envelope: {
|
||||
attack: atk1,
|
||||
decay: 0.1,
|
||||
sustain: sus1,
|
||||
release: 0.1,
|
||||
},
|
||||
modulation: {
|
||||
type: wav,
|
||||
},
|
||||
}).toMaster();
|
||||
}
|
||||
activeSynths[k.note].triggerAttack(k.note);
|
||||
document.querySelector(".innernote").innerHTML =
|
||||
k.note + " - " + activeSynths[k.note].triggerAttack(k.note);
|
||||
} else {
|
||||
activeSynths[k.note].triggerRelease();
|
||||
}
|
||||
});
|
||||
|
||||
var sustain1 = new Nexus.Dial('#sus1',{
|
||||
'size': [75,75],
|
||||
'interaction': 'radial', // "radial", "vertical", or "horizontal"
|
||||
'mode': 'relative', // "absolute" or "relative"
|
||||
'min': 0,
|
||||
'max': 1,
|
||||
'step': 0,
|
||||
'value': 0
|
||||
})
|
||||
|
||||
sustain1.on('change',function(v) {
|
||||
sus1 = v;
|
||||
})
|
||||
var attack1 = new Nexus.Dial('#attack1',{
|
||||
'size': [75,75],
|
||||
'interaction': 'radial', // "radial", "vertical", or "horizontal"
|
||||
'mode': 'relative', // "absolute" or "relative"
|
||||
'min': 0,
|
||||
'max': 1,
|
||||
'step': 0,
|
||||
'value': 0
|
||||
})
|
||||
|
||||
attack1.on('change',function(va) {
|
||||
atk1 = va;
|
||||
})
|
||||
|
||||
var select = new Nexus.Select('#waves',{
|
||||
'size': [100,30],
|
||||
'options': ['sine','sawtooth', 'square']
|
||||
})
|
||||
|
||||
select.on('change',function(waves) {
|
||||
wav = waves;
|
||||
})
|
||||
|
||||
document.addEventListener("keydown", (event) => {
|
||||
const keyIndex = keyMapper[event.key];
|
||||
keyIndex !== undefined && !piano.keys[keyIndex]._state.state
|
||||
? piano.toggleIndex(keyIndex, true)
|
||||
: null;
|
||||
});
|
||||
|
||||
document.addEventListener("keyup", (event) => {
|
||||
const keyIndex = keyMapper[event.key];
|
||||
keyIndex !== undefined && piano.keys[keyIndex]._state.state
|
||||
? piano.toggleIndex(keyIndex, false)
|
||||
: null;
|
||||
});
|
||||
Reference in New Issue
Block a user