[issue16525] wave file module does not support 32bit float format
New submission from Sebastian Kraft: The wave module cannot read audio WAV files containing 32bit float values. This is a very common file type for professional audio! There has already been a patch some years ago which works fine but was finally not applied. I can confirm that it does not break anything and only adds support for a new number format. http://bugs.python.org/issue1144504 -- components: Extension Modules, IO messages: 176077 nosy: Sebastian.Kraft priority: normal severity: normal status: open title: wave file module does not support 32bit float format type: enhancement versions: Python 2.6, Python 2.7, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5 ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16525] wave file module does not support 32bit float format
Sebastian Kraft added the comment: Write support is no problem, I will add this. >From reading the spec in the link you provided I think the implementation in >general is OK. Everything apart WAVE_FORMAT_PCM should have an extension size cbSize, that's right. But only WAVE_FORMAT_EXTENSIBLE sets cbSize=22. So for read access it is not mandatory to check the value when WAVE_FORMAT_IEEE_FLOAT, but for writing files I would set this to zero. There are several other wave formats which also use float data, but most important is WAVE_FORMAT_IEEE_FLOAT, and that can be suppoted quite easily without many changes. -- ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16525] wave file module does not support 32bit float format
Sebastian Kraft added the comment: I will create a patch together with a testset of example files and also fill out the agreement. BTW: readframes() returns bad data for 24bit PCM if big_endian==True. Furthermore IMO it doesn't make sense to return a byte stream in little endian order on a big endian system... What do you think? At least the waves doc doesn't mention or specify the endianess which will cause trouble. -- ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16525] wave file module does not support 32bit float format
Sebastian Kraft added the comment: Attached to this mail you find my patch for the implementation of support for 8, 16, 24, 32 bit signed int PCM and 32, 64 bit float. 24bit on big endian systems is buggy, but this will be reported in another ticket. The modified test checks all number formats apart form 24bit int. If the patch is fine and will be accepted I will also update the doc and send a seperate patch for this. -- keywords: +patch Added file: http://bugs.python.org/file28122/wave_float_issue16525.patch ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16525] wave file module does not support 32bit float format
Sebastian Kraft added the comment: Contribution agreement is now attached to my account. So the review can start ;) -- ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16525] wave file module does not support 32bit float format
Sebastian Kraft added the comment: Any news or feedback regarding my patch? -- ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16525] wave file module does not support 32bit float format
Sebastian Kraft added the comment: After the last changes in the development version of python 3.4 the patch cannot be applied anymore. As the the other audio file readers and the wave module share a common API it may be not desireable to simply enhance the wave module with support for floating point data. In particular the underlying audiooop module is designed ro only work with integer data. Therefore, and taking into account that this patch and its predecessor has not been reviewed in the last 2 years, I will not take the time to modify the patch again. At least please consider to apply the documentation patch I have uploaded now. This will clearly state in the documentation what sample formats are supported by the wave module. -- Added file: http://bugs.python.org/file34264/wave_issue16525_doc.patch ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16525] wave file module does not support 32bit float format
Changes by Sebastian Kraft : Removed file: http://bugs.python.org/file28122/wave_float_issue16525.patch ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16525] wave file module does not support 32bit float format
Sebastian Kraft added the comment: Thanks for the hint Harvey! I have updated my patch to include your changes, but only applied the second hunk for the following reasons: Wave_read should not assume any wave format, as it is expected to open a file during initialization. So actually the only missing thing was the assignment of the wave format during the reading of the format chunk. setparams() in Wave_write already sets the wavformat a few lines later together with the other parameters. So no need to set it twice... Can you please check if the updated patch works for you? -- Added file: http://bugs.python.org/file29085/patch ___ Python tracker <http://bugs.python.org/issue16525> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com