#include #define e1 82.4 #define e2 92.4986 #define e3 97.9989 #define e4 110.0 #define e5 123.4708 #define e6 130.8128 #define e7 146.8324 #define e8 164.8 float e_minor::get_freq(float f) //match f to freqs in range 82.4 - 164.8 Hz corresponding to midi notes 40 - 52 { if (f == 0) return 0; //restrict f to be within the octave 82.4-164.8 Hz while(true) { if (f < 77.7817) f *= 2; else break; } while (true) { if (f > 174.6141) f *= 0.5; else break; } if (f < e1) return e1; if (f >= e1 && f <= e2) { if (fabs(f - e1) < 5.05) return e1; else return e2; } if (f >= e2 && f <= e3) { if (fabs(f - e2) < 2.75) return e2; else return e3; } if (f >= e3 && f <= e4) { if (fabs(f - e3) < 6) return e3; else return e4; } if (f >= e4 && f <= e5) { if (fabs(f - e4) < 6.73) return e4; else return e5; } if (f >= e5 && f <= e6) { if (fabs(f - e5) < 3.67) return e5; else return e6; } if (f >= e6 && f <= e7) { if (fabs(f - e6) < 8) return e6; else return e7; } if (f >= e7 && f <= e8) { if (fabs(f - e7) < 8.9) return e7; else return e8; } }