Skip to content

Instantly share code, notes, and snippets.

@stuartmemo
Created September 22, 2012 15:00
Show Gist options
  • Star 31 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save stuartmemo/3766449 to your computer and use it in GitHub Desktop.
Save stuartmemo/3766449 to your computer and use it in GitHub Desktop.
Convert note to frequency
// Takes string of Note + Octave
// Example:
// var frequency = getFrequency('C3');
var getFrequency = function (note) {
var notes = ['A', 'A#', 'B', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#'],
octave,
keyNumber;
if (note.length === 3) {
octave = note.charAt(2);
} else {
octave = note.charAt(1);
}
keyNumber = notes.indexOf(note.slice(0, -1));
if (keyNumber < 3) {
keyNumber = keyNumber + 12 + ((octave - 1) * 12) + 1;
} else {
keyNumber = keyNumber + ((octave - 1) * 12) + 1;
}
// Return frequency of note
return 440 * Math.pow(2, (keyNumber- 49) / 12);
};
@EvanHahn
Copy link

EvanHahn commented Sep 2, 2013

What's the licensing on this?

@cristiano-belloni
Copy link

@1j01
Copy link

1j01 commented Feb 19, 2015

@CGrassin
Copy link

@rknightly
Copy link

@MasterPuffin
Copy link

Java Version

private double getFrequency(String note) {
        String[] notes = {"A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"};

        int octave = note.length() == 3 ? Integer.parseInt(String.valueOf(note.charAt(2))) : Integer.parseInt(String.valueOf(note.charAt(1)));
        int keyNumber = java.util.Arrays.asList(notes).indexOf(note.substring(0, note.length() - 1));

        if (keyNumber < 3) {
            keyNumber = keyNumber + 12 + ((octave - 1) * 12) + 1;
        } else {
            keyNumber = keyNumber + ((octave - 1) * 12) + 1;
        }

        // Return frequency of note
        return 440 * Math.pow(2, (float)(keyNumber - 49) / 12);
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment