Closed fonsp closed 5 months ago
Thanks! Here's my version:
julia> using MusicTheory, MusicTheory.PitchNames
julia> abstract type Temperament end
julia> struct EqualTemperament
base_pitch::Pitch
base_frequency::Float64
end
julia> temperament = EqualTemperament(A[4], 440)
EqualTemperament(A₄, 440.0)
julia> function frequency(temperament::EqualTemperament, pitch::Pitch)
semitone_distance = semitone(pitch) - semitone(temperament.base_pitch)
return 2.0^(semitone_distance // 12)
end
frequency (generic function with 1 method)
julia> frequency(temperament, C[4])
0.5946035575013605
julia> function frequency(temperament::EqualTemperament, pitch::Pitch)
semitone_distance = semitone(pitch) - semitone(temperament.base_pitch)
return 2.0^(semitone_distance // 12) * temperament.base_frequency
end
frequency (generic function with 1 method)
julia> frequency(temperament, C[4])
261.6255653005986
I'll add a frequency.jl
file.
Done in https://github.com/JuliaMusic/MusicTheory.jl/pull/24.
Thanks!
Hey! Here is a little function to get the piano frequency of a
Pitch
, using the table https://upload.wikimedia.org/wikipedia/commons/a/ad/Piano_key_frequencies.png