Package: wave-bwf-rf64
wave-bwf-rf64Python modules for handling the Broadcast Wave Format and RF64 files.Installing:$pipinstallwave-bwf-rf64Basic example:importcontextlibimportwave_bwf_rf64withcontextlib.closing(wave_bwf_rf64.open("input.wav","rb"))asf:print("Num frames:",f.getnframes())FeaturesThis package gives you the ability to work with both BWF and RF64 compatible WAV-files in Python.Supported file IDs (first four bytes):RIFFRF64Supported WAVE formats:PCMSupported chunk types:ds64fmtdatabextaxmlMD5levlchnar64m (only when reading)This package's scope is limited to BWF and RF64 WAV files in the PCM format.
Feature requests and pull requests for other types of (WAV) files are outside of this scope and would increase our maintenance burden if accepted.
They will therefore not be considered.
You are, however, more than welcome to publish such additions in a fork of your own.CompatibilityThis project requires Python version 3.10 or higher.VersioningWe usesemantic versioning.The Semantic Versioning Specification requires that we declare a public API.
We may only introduce breaking changes to this public API if we simultaneously increment the major version.
No such commitment is made for the parts of this project that are outside of the public API.The public API is:wave_bwf_rf64.openwave_bwf_rf64.chunk.Chunkwave_bwf_rf64.wave.__all__ErrorWAVE_FORMAT_PCMBextChnaR64mMarkerR64mWave_readWave_writeopenAll methods and attributes of any classes mentioned above, where the method or attribute name does not start with an underscore (!= _*)All methods and attributes of any classes mentioned above, where the method or attribute name is asystem-defined name, i.e. their name starts and ends with two underscores (== __*__)LicenseThis project is licensed under the GNU General Public License version 3 or later.
SeeLICENSEfor details.wave-bwf-rf64is a modified version of BBC'swave-bwfproject.
The latter is, to the best of our knowledge, no longer available.
See thechangelogfor the history of this project, which spans back to 2014/2015.Known issuesThere is no rendered documentation for theopenfunction and the classes it may returnTheopenfunction does not acceptpathlib.PathobjectsThe object returned byopenis not a context manager, so it cannot be used with awithstatement directlyIssues where the size in the RIFF file header is too small or equal to 0, as may be the case when a recording was abruptly stopped or is accessed mid-recording, are not handled gracefullyThe project is lacking quality controlThe project is missing type annotations, so type checkers and IDEs may not help you so muchSpecificationsPrimary specification:Recommendation ITU-R BS.2088-1Superseded specification containing information on the RF64 marker chunk (r64m):EBU-TECH 3306: MBWF/RF64: An extended File Format for AudioModuleschunk.pyThe original Python module for handling RIFF chunkswith extensions for handling RF64.wave.pyExtension of the Python Standard Library'swave modulewith BWF handling added (bext, chna, axml, md5 and levl chunks).ContributorsThank you to:The Python Standard Library authors and contributors for the originalwaveandchunkmodulesDavid Marston (BBC) for the Broadcast Wave File supportTormod Værvågen (NRK) for the RF64 support and support for theMD5andlevlchunksJohn Arne Johnsen (NRK) for conversion to Python 3 and the addition of BEXT coding history fieldThorben Werner Sjøstrøm Dahl (NRK) for the support for ther64mchunk (when reading) and preparations before publicationTodoIncorporate changes made to thechunkandwavemodules in the Python Standard Library after this fork was madeAdapt tests from the Python Standard Library and expand them with tests for the added functionalityAdapt documentation from the Python Standard Library and expand it with descriptions of the added functionalityRun tests and other quality control tools automaticallySet up automatic release pipelineRefactor the user-facing API for easier useRefactor the internals, so that type checking works and the code is more readable