From 40226610b9f4c79572853732611aabecee487889 Mon Sep 17 00:00:00 2001 From: Lionel Koenig Date: Fri, 10 Mar 2023 11:46:10 +0100 Subject: [PATCH] Add support for floating point wave files. This adds support for floating point wav files and fix #60729. --- Lib/test/audiodata/pluck-float32.wav | Bin 0 -> 26514 bytes Lib/test/audiotests.py | 12 ++++-- Lib/test/test_wave.py | 33 +++++++++++++++- Lib/wave.py | 36 +++++++++++++++--- ...3-03-10-13-10-06.gh-issue-60729.KCCHTe.rst | 1 + 5 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 Lib/test/audiodata/pluck-float32.wav create mode 100644 Misc/NEWS.d/next/Library/2023-03-10-13-10-06.gh-issue-60729.KCCHTe.rst diff --git a/Lib/test/audiodata/pluck-float32.wav b/Lib/test/audiodata/pluck-float32.wav new file mode 100644 index 0000000000000000000000000000000000000000..2030fb16d6e3bd797523605091ff1d732b432b88 GIT binary patch literal 26514 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±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 self._nframes: raise Error('position not in range') @@ -367,16 +380,16 @@ def readframes(self, nframes): def _read_fmt_chunk(self, chunk): try: - wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack_from('