Player: limit maximum frequency depending to rate
This commit is contained in:
parent
f143dcbb3d
commit
8178009eb5
2 changed files with 5 additions and 1 deletions
|
@ -27,6 +27,7 @@ template<typename sample_t> FreqPlayer<sample_t>::FreqPlayer(int _rate):
|
|||
{
|
||||
k = K();
|
||||
k_update = -1; // invalid: don't update
|
||||
max_harmonic_freq = rate / 2;
|
||||
}
|
||||
|
||||
template<typename sample_t> void FreqPlayer<sample_t>::Reset()
|
||||
|
@ -92,7 +93,8 @@ template<typename sample_t> sample_t FreqPlayer<sample_t>::AudioFrame()
|
|||
|
||||
case W_HARMONIC:
|
||||
v = 0;
|
||||
for (i = 1; i <= nb_harmonics; i++) v += sin(r * i) / i;
|
||||
for (i = 1; i <= nb_harmonics; i++) if (freq * i < max_harmonic_freq)
|
||||
v += sin(r * i) / i;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -46,6 +46,8 @@ template<typename sample_t> class FreqPlayer {
|
|||
sample_t last_frame;
|
||||
/// number of hamonics for waveforms (W_HARMONIC only)
|
||||
int nb_harmonics = 5;
|
||||
/// max harmonic to play given current frequency
|
||||
double max_harmonic_freq;
|
||||
|
||||
/// return k computed
|
||||
double K() const;
|
||||
|
|
Loading…
Reference in a new issue