import keys from './lib/keys' import color from './lib/color' import kalimba from './lib/kalimba' const root = 440 const s = 50 const w = window.innerWidth const h = window.innerHeight const ws = w/s, hs = h/s const add_on = 0 const mul_on = 1.0 const add_off = 0.1 const mul_off = 0.9 let dragging = false for (var i = 0; i < ws; i++) { for (var j = 0; j < hs; j++) { add(i, j) } } function add (x, y) { const i = x + 1 const j = y + 1 const div = document.createElement('div') const freq = root * i/j let add = 0 let frac = Math.log2(i/j) % 1 div.style.left = (x * s) + 'px' div.style.top = (y * s) + 'px' div.innerHTML = `
${i}<\/div>
\/
${j}<\/div>` if (frac < 0) { frac += 1 console.log(frac) } if (i < j) { add = -Math.log(j/i) / 3.5 } else { add = Math.log(i/j) / 6 } if ( frac === 0) { div.style.fontWeight = '900' div.style.left = (x * s) + 'px' div.style.top = (y * s) + 'px' } div.style.backgroundColor = color(frac, add_off + add, mul_off) div.addEventListener('mouseenter', function(){ div.style.backgroundColor = color(frac, add + add_on, mul_on) if (dragging) { kalimba.play( freq ) } }) div.addEventListener('mouseleave', function(){ div.style.backgroundColor = color(frac, add + add_off, mul_off) }) div.addEventListener('click', function(){ kalimba.play( freq ) }) document.body.appendChild(div) } document.addEventListener('mousedown', () => { dragging = true }) document.addEventListener('mouseup', () => { dragging = false }) keys.listen(function(index){ // const freq = scales.current().index(index) // document.body.style.backgroundColor = color( index / scales.current().scale.length ) // kalimba.play(freq) })