Tuning - - - Equal temperament - - - - Perfect 5th - - - - Perfect 4th - - - - Perfect major 3rd - - - - Perfect minor 3rd - + + Equal + Perfect 5th + Lower 5th + Quarter-comma meantone 5th + Quarter-comma meantone lower 5th + Perfect major 3rd + From: diff --git a/index.js b/index.js index c31034a..01652a6 100644 --- a/index.js +++ b/index.js @@ -243,10 +243,14 @@ function refreshHolds() { } } -function tuneFraction(key, fromKey, fraction) { +function tuneFactor(key, fromKey, factor) { + const index = keyIndex(key); const fromIndex = keyIndex(fromKey); - const freq = frequencies[fromIndex] * fraction; - setFrequency(key, freq); + if (index > fromIndex) { + setFrequency(key, frequencies[fromIndex] * factor); + } else { + setFrequency(key, frequencies[fromIndex] / factor); + } } function tuneEqual(key, fromKey) { @@ -305,17 +309,19 @@ function setupListeners() { document.getElementById('tune').onclick = () => { const key = document.getElementById("current-note").innerHTML; const fromkey = document.getElementById('tuning-from').value; - const method = radioValue('tuning'); + const method = document.getElementById('tuning').value; if (method === 'equal') { tuneEqual(key, fromkey); - } else if (method === '5th') { - tuneFraction(key, fromkey, 3/2); - } else if (method === '4th') { - tuneFraction(key, fromkey, 4/3); - } else if (method === 'maj3rd') { - tuneFraction(key, fromkey, 5/4); - } else if (method === 'min3rd') { - tuneFraction(key, fromkey, 6/5); + } else if (method === 'perfect-5th') { + tuneFactor(key, fromkey, 3/2); + } else if (method === 'lower-5th') { + tuneFactor(key, fromkey, 2/3); + } else if (method === 'quartmean-5th') { + tuneFactor(key, fromkey, Math.pow(5, 1/4)); + } else if (method === 'quartmean-lower-5th') { + tuneFactor(key, fromkey, Math.pow(5, 1/4)); + } else if (method === 'perfect-3rd') { + tuneFactor(key, fromkey, 5/4); } refreshHolds(); updateOptions(key);