Skip to main content

ewave

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.

Metadata

Release files for ewave 1.0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ewave 1.0.12
File Size Uploaded Provenance Actions
ewave-1.0.12.tar.gz 7.9 kB With provenance Details for ewave-1.0.12.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ewave 1.0.12
File Interpreter ABI Platform Actions
ewave-1.0.12-py3-none-any.whl Python 3 none any Details for ewave-1.0.12-py3-none-any.whl

Total release size: 17.7 kB

Release files / ewave-1.0.12.tar.gz

Download URL ewave-1.0.12.tar.gz
Size 7.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3928d28cd336756a993df983a098232da65a371effe9c6c72343b2b6e8519882
BLAKE2b-256 checksum
How to use checksums
e334a1e4c6ddb8efe85f7f84f1c043e837a442930fbddb626fd53a25d642e348
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 16, 2026.

Transparency log

Release files / ewave-1.0.12-py3-none-any.whl

Download URL ewave-1.0.12-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
29569137dca7c99f279b8f3c78597396605b902497a88f64560f05a0d8a3d795
BLAKE2b-256 checksum
How to use checksums
62c191f51205100088416c5d388cae7697b9a692b2c6198647ca3fd032861db7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 16, 2026.

Transparency log

Security for ewave 1.0.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ewave-1.0.12.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page