summaryrefslogtreecommitdiff
path: root/tools/testsignal.py
diff options
context:
space:
mode:
authorJon Nordby <jononor@gmail.com>2025-04-18 00:04:20 +0200
committerMartin StensgÄrd <mastensg@mastensg.net>2025-04-18 16:12:03 +0200
commitd26152cb2fdaf1381dc43eb69a3f299911b68d50 (patch)
tree53e739df86ffb3e48c7c719842784da6e95654c7 /tools/testsignal.py
parent793057e0021154278a77d0decd00e543b2c66a23 (diff)
tools: WIP on PDM<->PCM conversion in Python
First test signal does not seem correct...
Diffstat (limited to 'tools/testsignal.py')
-rw-r--r--tools/testsignal.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/tools/testsignal.py b/tools/testsignal.py
new file mode 100644
index 0000000..0f28e1c
--- /dev/null
+++ b/tools/testsignal.py
@@ -0,0 +1,37 @@
+import numpy as np
+import soundfile as sf
+
+def generate_test_tone(
+ duration_sec=5,
+ sample_rate=44100,
+ freqs=[440, 1000, 3000],
+ noise_level=0.05,
+ amplitude=0.5,
+):
+ t = np.linspace(0, duration_sec, int(sample_rate * duration_sec), endpoint=False)
+ signal = np.zeros_like(t)
+
+ # Add multiple sine waves
+ for freq in freqs:
+ signal += amplitude * np.sin(2 * np.pi * freq * t)
+
+ # Normalize to avoid clipping if multiple frequencies are added
+ signal /= len(freqs)
+
+ # Add white noise
+ noise = noise_level * np.random.normal(0, 1, signal.shape)
+ signal += noise
+
+ return signal
+
+if __name__ == "__main__":
+
+ filename="test_tone.wav"
+ # Save to WAV file
+
+ sample_rate = 16000
+
+ signal = generate_test_tone(sample_rate=sample_rate)
+
+ sf.write(filename, signal, sample_rate)
+ print(f"Saved test tone to '{filename}'.")