From 60f379031e40dd296abca9a97279a2db823f0fec Mon Sep 17 00:00:00 2001 From: rkcf Date: Tue, 28 Feb 2023 11:50:03 -0600 Subject: [PATCH 1/2] Feat: add noise wave generation Refs: #9 --- src/generators.cpp | 17 +++++++++++++++++ src/generators.h | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/src/generators.cpp b/src/generators.cpp index efbd2c7..1af4e53 100644 --- a/src/generators.cpp +++ b/src/generators.cpp @@ -1,4 +1,6 @@ #include +#include +#include "common.h" #include "generators.h" #include "wave.h" @@ -84,3 +86,18 @@ sample_table_t gen_isaw() return isaw_vals; } + +sample_table_t gen_noise() +{ + // setup RNG for floats in [-1, 1] + std::default_random_engine generator; + std::uniform_real_distribution distribution(-1, 1); + sample_table_t noise_vals = {}; + // Set first and last value to 0 + noise_vals[0] = 0; + noise_vals[DEFAULT_N_SAMPLES - 1] = 0; + for (uint16_t i = 1; i < DEFAULT_N_SAMPLES - 1; i++) { + noise_vals[i] = distribution(generator); + } + return noise_vals; +} diff --git a/src/generators.h b/src/generators.h index c48cb1b..188be9e 100644 --- a/src/generators.h +++ b/src/generators.h @@ -31,4 +31,9 @@ sample_table_t gen_isaw(); */ sample_table_t gen_tri(); +/*! Generate noise wave data + @return a table of values + */ +sample_table_t gen_noise(); + #endif // GENERATORS_H_ From 315c1b71940d52c471dc161a3860cfc1d6bccd6a Mon Sep 17 00:00:00 2001 From: rkcf Date: Tue, 28 Feb 2023 11:50:42 -0600 Subject: [PATCH 2/2] Test: add noise Wave generation testing Refs: #9 --- tests/generators_test.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/generators_test.cpp b/tests/generators_test.cpp index 6790a0c..ffe628b 100644 --- a/tests/generators_test.cpp +++ b/tests/generators_test.cpp @@ -33,3 +33,13 @@ TEST(Generator, InverseSawWave) { // Starts at 1 EXPECT_EQ(t[0], 1); } + +TEST(Generator, NoiseWave) +{ + sample_table_t t = gen_noise(); + // Always start and end at 0 + EXPECT_EQ(t[0], 0); + EXPECT_EQ(t[DEFAULT_N_SAMPLES - 1], 0); + // Check second value, probably not equal to 0 + EXPECT_NE(t[1], 0); +}