plectrum

Plectrum: instrument tuner for Android
Log | Files | Refs | README | LICENSE

NoteFrequencyCalculator.java (814B)


      1 package com.github.cythara.tuning;
      2 
      3 import com.github.cythara.Note;
      4 
      5 import java.util.Arrays;
      6 import java.util.List;
      7 
      8 public class NoteFrequencyCalculator {
      9 
     10     private static List<String> notes =
     11             Arrays.asList("C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B");
     12     private float referenceFrequency;
     13 
     14     public NoteFrequencyCalculator(float referenceFrequency) {
     15         this.referenceFrequency = referenceFrequency;
     16     }
     17 
     18     public double getFrequency(Note note) {
     19         int semitonesPerOctave = 12;
     20         int referenceOctave = 4;
     21         double distance = semitonesPerOctave * (note.getOctave() - referenceOctave);
     22 
     23         distance += notes.indexOf(note.getName() + note.getSign()) - notes.indexOf("A");
     24 
     25         return referenceFrequency * Math.pow(2, distance / 12);
     26     }
     27 }