Add midi note to frequency converter
This commit is contained in:
parent
292ccadc7e
commit
e51fc4029d
2 changed files with 15 additions and 1 deletions
|
|
@ -16,6 +16,7 @@
|
|||
#include <psemek/audio/combine/duplicate.hpp>
|
||||
#include <psemek/audio/combine/stereo.hpp>
|
||||
#include <psemek/audio/combine/mixer.hpp>
|
||||
#include <psemek/audio/midi.hpp>
|
||||
#include <psemek/app/app.hpp>
|
||||
#include <psemek/app/main.hpp>
|
||||
#include <psemek/gfx/painter.hpp>
|
||||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
13
libs/audio/include/psemek/audio/midi.hpp
Normal file
13
libs/audio/include/psemek/audio/midi.hpp
Normal 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);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue