Mercurial > hg > libxtract
annotate tests/xttest_util.cpp @ 285:89fe52066db1 tip master
MSCV missing ssize_t fix
author | Jamie Bullock <jamie@jamiebullock.com> |
---|---|
date | Tue, 16 Jul 2019 18:29:20 +0100 |
parents | 446f6d3dc809 |
children |
rev | line source |
---|---|
jamie@264 | 1 |
jamie@264 | 2 |
jamie@264 | 3 #include "xttest_util.hpp" |
jamie@267 | 4 #include "xttest_tables.hpp" |
jamie@264 | 5 |
jamie@264 | 6 #include <random> |
jamie@264 | 7 |
jamie@264 | 8 #include <math.h> |
jamie@264 | 9 #include <stdio.h> |
jamie@264 | 10 |
jamie@264 | 11 |
jamie@264 | 12 #define XTTEST_2PI 6.28318530717958647693 |
jamie@264 | 13 |
jamie@264 | 14 void xttest_gen_sine(double *table, uint32_t tablesize, double samplerate, double frequency, double amplitude) |
jamie@264 | 15 { |
jamie@264 | 16 int samples_per_period = samplerate / frequency; |
jamie@264 | 17 |
jamie@267 | 18 for (uint32_t i = 0; i < tablesize; ++i) |
jamie@264 | 19 { |
jamie@264 | 20 int phase = i % samples_per_period; |
jamie@264 | 21 table[i] = sin((phase / (double)samples_per_period) * XTTEST_2PI) * amplitude; |
jamie@264 | 22 } |
jamie@264 | 23 } |
jamie@264 | 24 |
jamie@269 | 25 void xttest_gen_sawtooth(double *table, uint32_t tablesize, double samplerate, double frequency, double amplitude) |
jamie@269 | 26 { |
jamie@269 | 27 int samples_per_period = samplerate / frequency; |
jamie@269 | 28 |
jamie@269 | 29 for (uint32_t i = 0; i < tablesize; ++i) |
jamie@269 | 30 { |
jamie@269 | 31 int phase = i % samples_per_period; |
jamie@269 | 32 table[i] = ((phase / (double)samples_per_period) * 2.0 - 1.0) * amplitude; |
jamie@269 | 33 } |
jamie@269 | 34 } |
jamie@269 | 35 |
jamie@264 | 36 void xttest_gen_noise(double *table, uint32_t tablesize, double amplitude) |
jamie@264 | 37 { |
jamie@267 | 38 for (uint32_t i = 0; i < tablesize; ++i) |
jamie@264 | 39 { |
jamie@267 | 40 table[i] = xttest_noise1024[i] * amplitude; |
jamie@264 | 41 } |
jamie@264 | 42 } |
jamie@264 | 43 |
jamie@267 | 44 uint16_t xttest_ftom(double frequency) |
jamie@267 | 45 { |
jamie@267 | 46 return (int)roundf(6900.0 + 1200.0 * log2(frequency / 440.0)); |
jamie@267 | 47 } |
jamie@267 | 48 |
jamie@267 | 49 void xttest_add(double *table1, double *table2, uint32_t tablesize) |
jamie@267 | 50 { |
jamie@267 | 51 for (uint32_t i = 0; i < tablesize; ++i) |
jamie@267 | 52 { |
jamie@267 | 53 table1[i] += table2[i]; |
jamie@267 | 54 } |
jamie@267 | 55 } |
jamie@267 | 56 |
jamie@267 | 57 void xttest_mul(double *table, uint32_t tablesize, double constant) |
jamie@267 | 58 { |
jamie@267 | 59 for (uint32_t i = 0; i < tablesize; ++i) |
jamie@267 | 60 { |
jamie@267 | 61 table[i] *= constant; |
jamie@267 | 62 } |
jamie@267 | 63 } |
jamie@267 | 64 |
jamie@267 | 65 |