From 6a2f2911e7ca3e3655dbe419482ecd95f2ed317c Mon Sep 17 00:00:00 2001 From: rkcf Date: Sun, 26 Feb 2023 16:38:53 -0600 Subject: [PATCH] Feat: add saw wave lookup table generation Refs: #2 --- src/generators.cpp | 15 +++++++++++++++ src/generators.h | 19 +++++++------------ src/wtpp.cpp | 6 +++++- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/generators.cpp b/src/generators.cpp index 393dd84..a377710 100644 --- a/src/generators.cpp +++ b/src/generators.cpp @@ -33,3 +33,18 @@ sample_table_t gen_squ() return squ_vals; } + +sample_table_t gen_saw() +{ + sample_table_t saw_vals = {0}; + float_t step = 2.0 / DEFAULT_N_SAMPLES; // calculate our incremental step size + float_t val = 0; // place to store calculate value + + // Start low go high [-1, 1] + for (uint16_t i = 0; i < DEFAULT_N_SAMPLES; i++) { + saw_vals[i] = val; + val += step; + } + + return saw_vals; +} diff --git a/src/generators.h b/src/generators.h index 08220e0..9e84223 100644 --- a/src/generators.h +++ b/src/generators.h @@ -19,24 +19,19 @@ sample_table_t gen_sin(); */ sample_table_t gen_squ(); -/*! Generate triangle wave data - @return a table of values - */ -sample_table_t gen_tri(); - -/*! Generate triangle wave data - @return a table of values - */ -sample_table_t gen_tri(); - /*! Generate saw wave data @return a table of values */ sample_table_t gen_saw(); -/*! Generate ramp wave data +/*! Generate inverse saw wave data @return a table of values */ -sample_table_t gen_ramp(); +sample_table_t gen_isaw(); + +/*! Generate triangle wave data + @return a table of values + */ +sample_table_t gen_tri(); #endif // GENERATORS_H_ diff --git a/src/wtpp.cpp b/src/wtpp.cpp index f439150..f06458c 100644 --- a/src/wtpp.cpp +++ b/src/wtpp.cpp @@ -25,20 +25,24 @@ static void log(std::string message) int main() { log("Generating wave cycle lookup tables"); - Wave sin_wave, squ_wave; + Wave sin_wave, squ_wave, saw_wave; // Calculate fundamental wave values sample_table_t sin_vals = gen_sin(); sample_table_t squ_vals = gen_squ(); + sample_table_t saw_vals = gen_saw(); // Set wave lookup table values sin_wave.setTable(sin_vals); squ_wave.setTable(squ_vals); + saw_wave.setTable(saw_vals); log("Printing head of sine table"); sin_wave.print_head(); log("Printing head of square table"); squ_wave.print_head(); + log("Printing head of saw table"); + saw_wave.print_head(); // Create Wavetable object containing fundamental Wave objects Wavetable wt_01{"Fundamental Waves"};