From 8178009eb5c274c19f7717c4686cf0dbcf4db067 Mon Sep 17 00:00:00 2001 From: Louis-Joseph Fournier Date: Thu, 14 Jan 2016 19:56:24 +0100 Subject: [PATCH] Player: limit maximum frequency depending to rate --- src/audio/FreqPlayer.cpp | 4 +++- src/audio/FreqPlayer.hpp | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/audio/FreqPlayer.cpp b/src/audio/FreqPlayer.cpp index d98380c..292675d 100644 --- a/src/audio/FreqPlayer.cpp +++ b/src/audio/FreqPlayer.cpp @@ -27,6 +27,7 @@ template FreqPlayer::FreqPlayer(int _rate): { k = K(); k_update = -1; // invalid: don't update + max_harmonic_freq = rate / 2; } template void FreqPlayer::Reset() @@ -92,7 +93,8 @@ template sample_t FreqPlayer::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: diff --git a/src/audio/FreqPlayer.hpp b/src/audio/FreqPlayer.hpp index d19b867..571b1e3 100644 --- a/src/audio/FreqPlayer.hpp +++ b/src/audio/FreqPlayer.hpp @@ -46,6 +46,8 @@ template 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;