Add midi note to frequency converter

This commit is contained in:
Nikita Lisitsa 2023-01-12 15:18:16 +03:00
parent 292ccadc7e
commit e51fc4029d
2 changed files with 15 additions and 1 deletions

View file

@ -16,6 +16,7 @@
#include <psemek/audio/combine/duplicate.hpp> #include <psemek/audio/combine/duplicate.hpp>
#include <psemek/audio/combine/stereo.hpp> #include <psemek/audio/combine/stereo.hpp>
#include <psemek/audio/combine/mixer.hpp> #include <psemek/audio/combine/mixer.hpp>
#include <psemek/audio/midi.hpp>
#include <psemek/app/app.hpp> #include <psemek/app/app.hpp>
#include <psemek/app/main.hpp> #include <psemek/app/main.hpp>
#include <psemek/gfx/painter.hpp> #include <psemek/gfx/painter.hpp>
@ -101,7 +102,7 @@ struct audio_app
int midi = key_to_midi.at(key); int midi = key_to_midi.at(key);
if (!channels_.contains(midi)) 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); tone = audio::distortion(std::move(tone), 4.f);
channels_[midi] = mixer_->add(audio::fade_in(tone, 0.005f)); channels_[midi] = mixer_->add(audio::fade_in(tone, 0.005f));
} }

View file

@ -0,0 +1,13 @@
#pragma once
#include <cmath>
namespace psemek::audio
{
inline float midi_frequency(float note)
{
return 440.f * std::pow(2.f, (note - 69.f) / 12.f);
}
}