summaryrefslogtreecommitdiff
path: root/tools/pdm2pcm.py
diff options
context:
space:
mode:
authorJon Nordby <jononor@gmail.com>2025-04-18 01:58:15 +0200
committerMartin StensgÄrd <mastensg@mastensg.net>2025-04-18 16:12:03 +0200
commitdf870d193c3ca6552ae85307abbb9f998228a776 (patch)
tree1b4b4f3dc3da8a63751f2a9f8d978c8c4f0d6eab /tools/pdm2pcm.py
parent61d9a812d1ab7c62b0e76903fb55a8c4d180298b (diff)
tools: Fixup PDM reference conversion
Seems to agree pretty well with itself now PDM bitstream also looks plausible for a sinewave
Diffstat (limited to 'tools/pdm2pcm.py')
-rw-r--r--tools/pdm2pcm.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/tools/pdm2pcm.py b/tools/pdm2pcm.py
index 15b86ce..b333a6f 100644
--- a/tools/pdm2pcm.py
+++ b/tools/pdm2pcm.py
@@ -9,7 +9,8 @@ def load_pdm_file(filename):
byte_data = np.frombuffer(f.read(), dtype=np.uint8)
bit_data = np.unpackbits(byte_data)
# Convert to +1 (for 1s) and -1 (for 0s)
- pdm_signal = 2 * bit_data - 1
+ #pdm_signal = 2 * bit_data - 1
+ pdm_signal = bit_data
return pdm_signal
def pdm_to_pcm(pdm_signal, decimation_factor=64):
@@ -36,15 +37,11 @@ def main():
pcm_data = np.expand_dims(pcm_data, axis=1)
#print(pcm_data.shape)
- print(numpy.min(pcm_data), numpy.max(pcm_data), numpy.mean(pcm_data))
-
- # Normalize
- pcm_data -= 128.0
- pcm_data = 2**13 * (pcm_data / np.max(np.abs(pcm_data)))
-
- print(numpy.min(pcm_data), numpy.max(pcm_data), numpy.mean(pcm_data))
+ pcm_data -= numpy.mean(pcm_data) # remove DC offset
+ print(numpy.min(pcm_data), numpy.max(pcm_data), numpy.mean(pcm_data), pcm_data.dtype)
soundfile.write(out_path, pcm_data, samplerate)
+ print('Wrote', out_path)
if __name__ == '__main__':
main()