Dr Miller Events
Featured Albums
Latest News

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi condimentum, neque ac porttitor scelerisque, nisi nisl tincidunt enim, non aliquet diam neque sed urna.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi condimentum, neque ac porttitor scelerisque, nisi nisl tincidunt enim, non aliquet diam neque sed urna.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi condimentum, neque ac porttitor scelerisque, nisi nisl tincidunt enim, non aliquet diam neque sed urna.
const checkRadio = (field) => { if((typeof field.length == "undefined") && (field.type == "radio")) { if(field.checked) return field.value; } else { for(let i=0; i < field.length; i++) { if(field[i].checked) return field[i].value; } } return false; }; const changePianoMode = (active) => { for(let el of piano.getElementsByTagName("DIV")) { if(active) { el.addEventListener("mouseover", playNote, false); } else { el.removeEventListener("mouseover", playNote, false); } } };
const AudioContext = window.AudioContext || window.webkitAudioContext; const audio = new AudioContext();
const analyser = audio.createAnalyser();
let analyserDisplay = document.getElementById("analyser"); let myPlayer, myPlayer2; if(analyser.getFloatTimeDomainData) { analyser.fftSize = 512; analyser.connect(audio.destination); myPlayer = new SoundPlayer(audio, analyser); myPlayer2 = new SoundPlayer(audio, analyser); for(let i=0; i < analyser.fftSize; i++) { analyserDisplay.appendChild(document.createElement("DIV")); } let dataArray = new Float32Array(analyser.fftSize); setInterval(function() { analyser.getFloatTimeDomainData(dataArray); for(let i=0; i < dataArray.length; i++) { analyserDisplay.children[i].style.height = (50 + (10 * dataArray[i])) + "px"; } }, 500); } else { // getFloatTimeDomainData not supported myPlayer = new SoundPlayer(audio); myPlayer2 = new SoundPlayer(audio); analyserDisplay.style.display = "none"; } const compressor = audio.createDynamicsCompressor(); compressor.connect(audio.destination); const playNote = (e) => { (new SoundPlayer(audio, compressor)).play(e.target.dataset.frequency, 0.8, "sine").setVolume(1/1000, 0.55).stop(0.6); e.cancelBubble = true; };
let piano = document.getElementById("piano"); for(let el of piano.getElementsByTagName("DIV")) { el.addEventListener("click", playNote, false); }


