// An example implementation of a pitch. import java.lang.Math; public class Pitch { protected double A; protected int steps; final static double half = Math.pow(2.0,1.0/12.0); final static double USA = 440.0; public Pitch() { steps = 0; } public Pitch(double freq, double stdA) { A = stdA; steps = 0; while (freq > A) { freq /= half; steps++; } while (freq < A) { freq *= half; steps--; } } public Pitch(int steps, double stdA) { A = stdA; this.steps = steps; } public Pitch(int steps) { this(steps,USA); } public Pitch(double freq) { this(freq,USA); } public double frequency() { return Math.pow(half,(double)steps)*A; } public int steps() { return steps; } public static void main(String a[]) { Pitch middleC = new Pitch(131.0); for (int i = (-9)-12; i < 12; i++) { Pitch p1 = new Pitch(i); Pitch p2 = new Pitch(i,415.0); System.out.println(p1.steps()+": "+p1.frequency()+" | "+p2.frequency()); } } }