Skip to main content

Extended WAVE I/O

Project description

ProjectStatus Version BuildStatus License PythonVersions

Pure python support for reading and writing extended WAVE formats.

The wave module in Python’s standard library doesn’t support a number of useful formats and encodings, notably IEEE floats. Ewave is a small, simple solution written in pure Python that provides a number of enhanced features:

  • Floating point formats

  • Extensible formats (> 2 channels, larger bit depths)

  • Read and write using memory mapping for simple, speedy access to large files

  • Read directly to numpy arrays

  • Data appended to existing files in read/write modes can be immediately accessed

  • Rescaling of data for different encodings and bit depths

  • Supports Python context managers for cleaner resource semantics

Requirements and installation

The current version of ewave requires Python 3.7+ and numpy 1.19+.

To install, run pip install . in the source directory, or pip install ewave.

Usage

There are some notable differences between the ewave interface and the standard library wave module. There’s only a single class that manages both reading and writing, and a number of the properties have changed names and behaviors. Importantly, the read method by default returns a numpy memmap to the data in the file. This provides faster access to large files and allows writing data in place.

For example, to write a second of stereo white noise in floating point format and then rescale it in place:

import ewave
from numpy import random
data = random.randn(48000,2)
with ewave.open("myfile.wav","w+",sampling_rate=48000,dtype='f',nchannels=2) as fp:
    fp.write(data)
    # rescale the data by 50%
    fp.read(memmap='r+') *= 0.5

Testing

Ewave has been tested on a large number of different WAVE formats and comes with a fairly extensive unit test suite. To run unit tests on files, place them in the ‘test’ subdirectory and run pytest. You can also place unsupported or invalid files in the ‘unsupported’ directory to test whether ewave rejects them correctly. Bug reports are always appreciated.

Licence and acknowledgements

Ewave is based heavily on the original wave module in the Python standard library and is released under the same Python Software Foundation Licence (http://opensource.org/licenses/python-2.0)

Information about the WAVE formats supported by this module was extensively gleaned from http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/wave.html.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ewave-1.0.10.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

ewave-1.0.10-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file ewave-1.0.10.tar.gz.

File metadata

  • Download URL: ewave-1.0.10.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for ewave-1.0.10.tar.gz
Algorithm Hash digest
SHA256 638dada431c156696731a434b33ca662316fa592916114357d10599da02ea7ae
MD5 3b3e2d463890ca05f862ad5afd6fc82f
BLAKE2b-256 1274798c0e3540a7febed2ca6e137927ccf18e0f50c9a8186263bed4bd320eda

See more details on using hashes here.

Provenance

The following attestation bundles were made for ewave-1.0.10.tar.gz:

Publisher: publish-to-pypi.yml on melizalab/py-ewave

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ewave-1.0.10-py3-none-any.whl.

File metadata

  • Download URL: ewave-1.0.10-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for ewave-1.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 e12a7073da6b8e7ccd63497a6e048d6b7f39392bcd1b2c8b6173ff749110fd03
MD5 f12d9a1138f2beffe3794cfd8b7e311e
BLAKE2b-256 bdd8b3d64228a151045524ea11e6c2d61cf407f4ca8b97d6dcae43d3abb382b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ewave-1.0.10-py3-none-any.whl:

Publisher: publish-to-pypi.yml on melizalab/py-ewave

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page