diff options
author | Jon Nordby <jononor@gmail.com> | 2025-04-18 01:58:15 +0200 |
---|---|---|
committer | Martin StensgÄrd <mastensg@mastensg.net> | 2025-04-18 16:12:03 +0200 |
commit | df870d193c3ca6552ae85307abbb9f998228a776 (patch) | |
tree | 1b4b4f3dc3da8a63751f2a9f8d978c8c4f0d6eab /tools/pdm2pcm.py | |
parent | 61d9a812d1ab7c62b0e76903fb55a8c4d180298b (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.py | 13 |
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() |