aboutsummaryrefslogtreecommitdiffstats
path: root/src/tone-test-sim
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2019-04-11 16:22:04 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2019-04-11 16:22:04 +0200
commiteed7072d6336a3cfdc8b52eb20166529a4de4d81 (patch)
tree1505819a1216406e6f15c4315bed93750c7ed68d /src/tone-test-sim
parent3555e921a0c743dbc2cc10d8655827be975c61e0 (diff)
downloadglutte-o-matic-eed7072d6336a3cfdc8b52eb20166529a4de4d81.tar.gz
glutte-o-matic-eed7072d6336a3cfdc8b52eb20166529a4de4d81.tar.bz2
glutte-o-matic-eed7072d6336a3cfdc8b52eb20166529a4de4d81.zip
Add some 1750 detection code to glutt-o-logic
Diffstat (limited to 'src/tone-test-sim')
-rwxr-xr-xsrc/tone-test-sim/analyse.py6
-rw-r--r--src/tone-test-sim/src/test.c17
2 files changed, 16 insertions, 7 deletions
diff --git a/src/tone-test-sim/analyse.py b/src/tone-test-sim/analyse.py
index 8222213..b1b0649 100755
--- a/src/tone-test-sim/analyse.py
+++ b/src/tone-test-sim/analyse.py
@@ -4,10 +4,12 @@ import numpy as np
import matplotlib.pyplot as plt
dat = np.loadtxt("tone.csv", dtype=np.int32, delimiter=",")
-# columns :"freq, threshold, num_samples, detector_output"
+# columns :"freq, threshold, num_samples, detector_output, avg_rms"
fig, ax = plt.subplots()
-plt.scatter(dat[...,0], dat[...,1], c=dat[...,3].astype(np.float32))
+plt.scatter(dat[...,0], dat[...,1] / dat[...,4], c=dat[...,3].astype(np.float32))
+plt.xlabel("freq")
+plt.ylabel("threshold over rms")
plt.show()
if 0:
diff --git a/src/tone-test-sim/src/test.c b/src/tone-test-sim/src/test.c
index 3bff6d7..716b7ae 100644
--- a/src/tone-test-sim/src/test.c
+++ b/src/tone-test-sim/src/test.c
@@ -33,7 +33,7 @@ int main(int argc, char **argv)
{
printf("Hello, ver %s\n", vc_get_version());
printf("Saving results to tone.csv\n");
- printf("freq, threshold, num_samples, detector_output\n");
+ printf("freq, threshold, num_samples, detector_output, avg_rms\n");
FILE *fd = fopen("tone.csv", "w");
if (!fd) {
@@ -48,12 +48,19 @@ int main(int argc, char **argv)
for (int threshold = 100000; threshold < 4000000; threshold += 100000) {
tone_init(threshold);
- for (size_t j = 0; j < 200; j++) {
- float samplef = cosf(j * 2.0f * FLOAT_PI * freq / AUDIO_IN_RATE);
- int16_t sample = samplef * 32767.0f;
+ double accu = 0;
+
+ for (size_t j = 0; j < 100; j++) {
+ const float samplef = cosf(j * 2.0f * FLOAT_PI * freq / AUDIO_IN_RATE);
+ const float noisef = (drand48() * 2.0f) - 1;
+ int16_t sample = (0.9f * samplef + 0.1f * noisef) * 32767.0f;
+
+ accu += (sample * sample);
+
int r = tone_detect_1750(sample);
if (r != -1) {
- fprintf(fd, "%d,%d,%zu,%d\n",freq, threshold, j, r);
+ const double rms = sqrt(accu / (double)j);
+ fprintf(fd, "%d,%d,%zu,%d,%f\n",freq, threshold, j, r, rms);
}
}
}