Mercurial > hg > svcore
diff plugin/plugins/SamplePlayer.cpp @ 143:0f0c9cf65d5e
* Add Hz tuning dial to sample player plugin. Need to figure out the best
way to get this passed through from the main program's configuration.
* Add ConfigFile class to deal with configuration load/save
* Add an organ sample (it's a bit big, though)
author | Chris Cannam |
---|---|
date | Wed, 26 Jul 2006 15:32:10 +0000 |
parents | c30728d5625c |
children | a9c3ba1777e1 |
line wrap: on
line diff
--- a/plugin/plugins/SamplePlayer.cpp Mon Jul 24 14:36:35 2006 +0000 +++ b/plugin/plugins/SamplePlayer.cpp Wed Jul 26 15:32:10 2006 +0000 @@ -36,6 +36,7 @@ "Output", "Tuned (on/off)", "Base Pitch (MIDI)", + "Tuning of A (Hz)", "Sustain (on/off)", "Release time (s)" }; @@ -58,6 +59,8 @@ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE, 0, 1 }, { LADSPA_HINT_DEFAULT_MIDDLE | LADSPA_HINT_INTEGER | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE, 0, 120 }, + { LADSPA_HINT_DEFAULT_440 | LADSPA_HINT_LOGARITHMIC | + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE, 220, 880 }, { LADSPA_HINT_DEFAULT_MINIMUM | LADSPA_HINT_INTEGER | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE, 0, 1 }, { LADSPA_HINT_DEFAULT_MINIMUM | LADSPA_HINT_LOGARITHMIC | @@ -122,6 +125,7 @@ m_output(0), m_retune(0), m_basePitch(0), + m_concertA(0), m_sustain(0), m_release(0), m_sampleData(0), @@ -168,6 +172,7 @@ &player->m_output, &player->m_retune, &player->m_basePitch, + &player->m_concertA, &player->m_sustain, &player->m_release }; @@ -529,13 +534,16 @@ void SamplePlayer::addSample(int n, unsigned long pos, unsigned long count) { - float ratio = 1.0; - float gain = 1.0; + float ratio = 1.f; + float gain = 1.f; unsigned long i, s; if (m_retune && *m_retune) { + if (m_concertA) { + ratio *= *m_concertA / 440.f; + } if (m_basePitch && n != *m_basePitch) { - ratio = powf(1.059463094, n - *m_basePitch); + ratio *= powf(1.059463094f, n - *m_basePitch); } }