javascript-piano icon indicating copy to clipboard operation
javascript-piano copied to clipboard

enhancement: Well Tempered tuning

Open lacojunior opened this issue 12 years ago • 0 comments

function noteToFreq(stepsFromMiddleC) {
        //Thomas Young 1799 Well Temperament frequency table taken from http://www.math.uwaterloo.ca/~mrubinst/tuning/tuning.html
        thomasYoungWellTemperament = { table : {
            0:1, 
            1:1.055730636,
            2:1.119771437,
            3:1.187696971,
            4:1.253888072,
            5:1.334745462,
            6:1.407640848,
            7:1.496510232,
            8:1.583595961,
            9:1.675749414,
            10:1.781545449,
            11:1.878842233},
            positionInTable : function(stepsFromMiddleC) {
                return stepsFromMiddleC < 0 ? 12 - (-stepsFromMiddleC % 12) : stepsFromMiddleC % 12;
            },
            octaveFromMiddleC : function(stepsFromMiddleC) {
                return Math.floor(stepsFromMiddleC / 12);
            }
        };
        var stepsFromA440 = stepsFromMiddleC + 4;
        var freq = 440 * Math.pow(2, thomasYoungWellTemperament.octaveFromMiddleC(stepsFromA440) - 1 
            + thomasYoungWellTemperament.table[thomasYoungWellTemperament.positionInTable(stepsFromA440)]);
        return freq;
    } 

lacojunior avatar May 15 '13 10:05 lacojunior