Note frequency calculation in Swift
August 24, 2015 ยท View on GitHub
enum Note: Int { case C = 0 case D = 2 case E = 4 case F = 5 case G = 7 case A = 9 case B = 11 }
enum Modifier: Int { case Sharp = 1 case Flat = -1 }
func frequencyForNote(note: Note, modifier: Modifier?, octave: Int) -> Double { var halfStepsFromA4: Int = note.rawValue - Note.A.rawValue halfStepsFromA4 += 12 * (octave - 4)
if let modifier = modifier {
halfStepsFromA4 += modifier.rawValue
}
let frequencyOfA4 = 440.0
let a = 1.059463094359
return frequencyOfA4 * pow(a, Double(halfStepsFromA4))
}