diff --git a/examples/audio.cpp b/examples/audio.cpp index 90a48c1a..4da79e78 100644 --- a/examples/audio.cpp +++ b/examples/audio.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -101,7 +102,7 @@ struct audio_app int midi = key_to_midi.at(key); if (!channels_.contains(midi)) { - auto tone = audio::karplus_strong(440.f * std::pow(2.f, (midi - 69) / 12.f)); + auto tone = audio::karplus_strong(audio::midi_frequency(midi)); tone = audio::distortion(std::move(tone), 4.f); channels_[midi] = mixer_->add(audio::fade_in(tone, 0.005f)); } diff --git a/libs/audio/include/psemek/audio/midi.hpp b/libs/audio/include/psemek/audio/midi.hpp new file mode 100644 index 00000000..f953bf26 --- /dev/null +++ b/libs/audio/include/psemek/audio/midi.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include + +namespace psemek::audio +{ + + inline float midi_frequency(float note) + { + return 440.f * std::pow(2.f, (note - 69.f) / 12.f); + } + +}