unclean SPARC
This commit is contained in:
Executable
+115
@@ -0,0 +1,115 @@
|
||||
class SamplerView extends EICDomContent {
|
||||
// all mpeg preloading not in dependency anymore,
|
||||
// but here, when you're really about to use then
|
||||
|
||||
sounds = [
|
||||
{"name": "98.mp3","path": "/app/assets/sfx/sampler/", 'label': '98'},
|
||||
{"name": "quenouilles.mp3","path": "/app/assets/sfx/sampler/", 'label': 'As-tu vu?'},
|
||||
{"name": "celebrate.mp3","path": "/app/assets/sfx/sampler/", 'label': 'party'},
|
||||
{"name": "paillettes.mp3","path": "/app/assets/sfx/sampler/", 'label': 'paillettes'},
|
||||
{"name": "manu.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Manu'},
|
||||
{"name": "projet.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Projet'},
|
||||
{"name": "judgenot.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Judge not!'},
|
||||
{"name": "metaphore.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Metaphore'},
|
||||
{"name": "gamin.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Gamin!'},
|
||||
{"name": "jcvd.mp3","path": "/app/assets/sfx/sampler/", 'label': '1+1=11'},
|
||||
{"name": "balladur.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Arretez!'},
|
||||
{"name": "guingamp.mp3","path": "/app/assets/sfx/sampler/", 'label': 'En avant !'},
|
||||
{"name": "phrases.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Phrases...'},
|
||||
{"name": "bourpif.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Raoul'},
|
||||
{"name": "fairplay.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Fairplay'},
|
||||
{"name": "neanderthal.mp3","path": "/app/assets/sfx/sampler/", 'label': 'Neanderthal'},
|
||||
{"name": "hassancehef.mp3","path": "/app/assets/sfx/sampler/", 'label': 'C\'est possible !'}
|
||||
];
|
||||
|
||||
mixer = null;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
DOMContentLoaded() {
|
||||
this.pads = this.findAll('.pad');
|
||||
this.init();
|
||||
this.preloadSounds(this.sounds);
|
||||
}
|
||||
|
||||
DOMContentRemoved() { window.removeEventListener('keyup',this.keyHandler); }
|
||||
|
||||
init() {
|
||||
for(let i = 0; i < this.sounds.length; i++) {
|
||||
let data = this.sounds[i];
|
||||
this.pads[i].name = data.name;
|
||||
this.pads[i].querySelector('label').innerText = data.label;
|
||||
let button = this.pads[i].querySelector('button');
|
||||
button.addEventListener('click', this.play.bind(this, data.name));
|
||||
}
|
||||
this.keyHandler = this.onKeyPressed.bind(this);
|
||||
window.addEventListener('keyup', this.keyHandler);
|
||||
}
|
||||
|
||||
preloadSounds(sndList){
|
||||
for(let snd of sndList){
|
||||
app.Assets.loadSound({
|
||||
'id': snd.name,
|
||||
'name': snd.name,
|
||||
'path': snd.path
|
||||
}).then(audioEl => {
|
||||
audioEl.addEventListener("play", this.playBoy.bind(this));
|
||||
audioEl.addEventListener("pause", this.pauseBoy.bind(this));
|
||||
let pad, idx;
|
||||
for([idx, pad] of this.pads.entries()){
|
||||
if(pad.name==audioEl.getAttribute('aid')) {
|
||||
pad.querySelector('button').classList.add('assigned');
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
playBoy(event){
|
||||
let aid = event.target.getAttribute('aid');
|
||||
let pad, idx;
|
||||
for([idx, pad] of this.pads.entries()){
|
||||
if(pad.name==aid) {
|
||||
pad.querySelector('button').classList.remove('assigned')
|
||||
pad.querySelector('button').classList.add('playing');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pauseBoy(event){
|
||||
let aid = event.target.getAttribute('aid');
|
||||
let pad, idx;
|
||||
for([idx, pad] of this.pads.entries()){
|
||||
if(pad.name==aid) {
|
||||
pad.querySelector('button').classList.remove('playing')
|
||||
pad.querySelector('button').classList.add('assigned');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
play(audioid, event) {
|
||||
event.stopPropagation();
|
||||
|
||||
if(this.mixer) {
|
||||
this.mixer.pause();
|
||||
this.mixer.currentTime = 0;
|
||||
}
|
||||
this.mixer = app.Assets.Store.sfx[audioid];
|
||||
this.mixer.play();
|
||||
}
|
||||
|
||||
stop() {}
|
||||
|
||||
onKeyPressed(event) {
|
||||
let btn = document.querySelector('button[accessKey="'+event.key.toLowerCase()+'"]');
|
||||
if(btn) btn.click();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
app.registerClass('SamplerView',SamplerView);
|
||||
Reference in New Issue
Block a user