Skip to main content

audioif

CircuitPython's audio system for MicroPython and CPython — audiocore, audiomixer, synthio (including MidiTrack), the effects modules (audiofilters, audiodelays, audiofreeverb, audiospeed), audiomp3, and CircuitPython play()/stop()/pause()/resume() output semantics. Import names stay audiocore/synthio/etc., matching CircuitPython for source compatibility.

Five things here are not CircuitPython's. audiodynamics (compression, limiting, expansion, gating, transient shaping) and audioroute (fan one stream out to parallel branches) come from micropython-vst3's audio engine, which had them and CircuitPython does not; audiomath (multiply one stream by another — ring and amplitude modulation), audioecho (a delay with a filter, a soft-clip and a cross-feed inside its feedback loop) and audioconvolve (apply a measured or synthesized impulse response, by partitioned FFT) have no ancestor anywhere and are audioif's own. apply_cp_patches.sh adds all five to a CircuitPython tree too. And lib/audioinstruments/ is a pure-Python library of 53 classic synthesizers, keyboards and drum machines built entirely out of synthio — no samples — with a MIDI-shaped API:

import audioinstruments
inst = audioinstruments.create("tr808", 48000)
inst.note_on(36)                 # bass drum, full velocity
inst.set_macro(2, 96)            # BD Tune, on the 0-127 scale
audio_out.play(inst.output)

Two more pure-Python tiers sit on top of it. lib/audioeffects/ is 43 effect classes — compressors, delays, reverbs, EQ, modulation, pitch — each taking a source and exposing its chain tail as .output. lib/audiorender/ renders a whole composition offline: tracks, tempo map, notes and automation in, a mixed stereo master and a level report out. Each has its own README.

audiorender is the one part of this repository written for a desktop rather than a board — numpy throughout, a whole song in memory — so it ships in the wheel and is never frozen into firmware.

MicroPython consumes this repository as USER_C_MODULES. CPython 3.10+ installs the separately versioned native distribution from TestPyPI:

python -m pip install --index-url https://test.pypi.org/simple/ pydevices-audioif

The CPython distribution contains audiocore, synthio, audiomixer, audiofilters, audiodelays, audiofreeverb, audiospeed, audiodynamics, audioroute, audiomath, audioecho, audioconvolve, and the audioinstruments, audioeffects and audiorender packages. audiomp3 remains firmware-only. The distribution has no runtime dependencies and does not publish an audioif import; its version is the VERSION file, which is also what _audioif.__version__ reports.

MicroPython status: all module tiers ported and oracle-diffed byte-for-byte against bin/circuitpython on unix; DSP parity re-verified on windows and wasm; built and measured on two real mcu targets, ESP32-P4 (hardware-confirmed by ear) and RP2040 (build-only). See docs/porting-plan.md for the full phased history and docs/upstream-diff.md for every deliberate deviation from upstream CircuitPython.

CPython status: the public surface and wheel plumbing are present, and the committed synthesis, mixer, MIDI, streaming, and effects fixtures match CircuitPython 10.2.1 PCM byte-for-byte. Import/API smoke success is not used as a substitute for those oracle comparisons.

ulab and cmods/mp3 (the vendored Adafruit_MP3/Helix decoder audiomp3 depends on, RPSL/RCSL-licensed — not MIT, carried unmodified per upstream's own terms) are consumed as cloned sibling dependencies, same pattern as pygraphics/displayif, not vendored into this repo.

The playback-facing pull protocol (audiocore.get_buffer/reset_buffer) is consumed by pydevices' lib/audiodev package (AudioOut in sample_out.py), which pumps any audiosample into any of audiodev's existing push-PCM transports (sdl2/win/wasm/i2s/emulated) — see that package's own docs for the playback-side contract this repo's protocol implementation is built to satisfy.

Acceptance target: todbot's synthtools running unmodified, with rendered PCM diffed against bin/circuitpython's own unix coverage build (which already contains the entire DSP stack — the parity oracle for this whole port).

See docs/porting-plan.md for the architecture, module tiers, phased plan, and testing strategy.

Metadata

Release files for pydevices-audioif 0.0.4

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

Built distributions (wheels)

Table of built distributions (wheels) for pydevices-audioif 0.0.4
File Actions
pydevices_audioif-0.0.4-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pydevices_audioif-0.0.4-cp314-cp314-win_amd64.whl
pydevices_audioif-0.0.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl CPython 3.14 CPython 3.14 PyEmscripten 2026.0+ WebAssembly Details for pydevices_audioif-0.0.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
pydevices_audioif-0.0.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details for pydevices_audioif-0.0.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
pydevices_audioif-0.0.4-cp314-cp314-android_21_x86_64.whl CPython 3.14 CPython 3.14 Android API level 21+ x86-64 Details for pydevices_audioif-0.0.4-cp314-cp314-android_21_x86_64.whl
pydevices_audioif-0.0.4-cp314-cp314-android_21_arm64_v8a.whl CPython 3.14 CPython 3.14 Android API level 21+ ARM64 v8a Details for pydevices_audioif-0.0.4-cp314-cp314-android_21_arm64_v8a.whl
pydevices_audioif-0.0.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pydevices_audioif-0.0.4-cp313-cp313-win_amd64.whl
pydevices_audioif-0.0.4-cp313-cp313-pyemscripten_2025_0_wasm32.whl CPython 3.13 CPython 3.13 PyEmscripten 2025.0+ WebAssembly Details for pydevices_audioif-0.0.4-cp313-cp313-pyemscripten_2025_0_wasm32.whl
pydevices_audioif-0.0.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details for pydevices_audioif-0.0.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
pydevices_audioif-0.0.4-cp313-cp313-android_21_x86_64.whl CPython 3.13 CPython 3.13 Android API level 21+ x86-64 Details for pydevices_audioif-0.0.4-cp313-cp313-android_21_x86_64.whl
pydevices_audioif-0.0.4-cp313-cp313-android_21_arm64_v8a.whl CPython 3.13 CPython 3.13 Android API level 21+ ARM64 v8a Details for pydevices_audioif-0.0.4-cp313-cp313-android_21_arm64_v8a.whl
pydevices_audioif-0.0.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pydevices_audioif-0.0.4-cp312-cp312-win_amd64.whl
pydevices_audioif-0.0.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details for pydevices_audioif-0.0.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
pydevices_audioif-0.0.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pydevices_audioif-0.0.4-cp311-cp311-win_amd64.whl
pydevices_audioif-0.0.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details for pydevices_audioif-0.0.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
pydevices_audioif-0.0.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pydevices_audioif-0.0.4-cp310-cp310-win_amd64.whl
pydevices_audioif-0.0.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details for pydevices_audioif-0.0.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Total release size: 4.4 MB

Release files / pydevices_audioif-0.0.4-cp314-cp314-win_amd64.whl

Download URL pydevices_audioif-0.0.4-cp314-cp314-win_amd64.whl
Size 247.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
65bd5ff908438883f67dbb03b190a07d2ac548d0740bdff51dc2096353102650
BLAKE2b-256 checksum
How to use checksums
47c3c1883e100e7449d5d2e47d3af08af133a7498c9f4954bd09c580e5585b8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl

Download URL pydevices_audioif-0.0.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
Size 226.9 kB
Tags CPython 3.14 PyEmscripten 2026.0+ WebAssembly
SHA-256 checksum
How to use checksums
d121bc05abf5033ac7e5d9d610c7d170c13bf2d2f7b0268014a4fdabaa8f06f8
BLAKE2b-256 checksum
How to use checksums
5b66011479f118fdee78ef30925d76b82c83b0a48aa332c5d3cb11d4cf31bb2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL pydevices_audioif-0.0.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 334.1 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
5cc816346442b60bcaaab4eb3f26e472b3cf8f7d482772427db75a1d44cbd12e
BLAKE2b-256 checksum
How to use checksums
5d84003926184fcc403265084b94c6b84e045dafa2bbae9079e191b7cdff522b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp314-cp314-android_21_x86_64.whl

Download URL pydevices_audioif-0.0.4-cp314-cp314-android_21_x86_64.whl
Size 251.2 kB
Tags Android API level 21+ x86-64 CPython 3.14
SHA-256 checksum
How to use checksums
537799d38cf6ec957e4af46425315ad7c47a7966e5206160d8670ff698601825
BLAKE2b-256 checksum
How to use checksums
738ab39d264e157b6c8239ecd1f14207caddfd44ee658b54e729e2bdfb7caffa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp314-cp314-android_21_arm64_v8a.whl

Download URL pydevices_audioif-0.0.4-cp314-cp314-android_21_arm64_v8a.whl
Size 248.3 kB
Tags Android API level 21+ ARM64 v8a CPython 3.14
SHA-256 checksum
How to use checksums
5f899f1bfb4d9969b29ba9aa2ed684be52d0e59c5e2480dfb2cece80641e724c
BLAKE2b-256 checksum
How to use checksums
98cecfb9a58f752b60706bc19f5c4595326935be13da18b51aab656115a01c82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp313-cp313-win_amd64.whl

Download URL pydevices_audioif-0.0.4-cp313-cp313-win_amd64.whl
Size 245.8 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
f2828ed296434cc49e488bbfbd0a9f6be4c34b29f32e51594ad41629d71f8b60
BLAKE2b-256 checksum
How to use checksums
5af61f1affe05efafd7a4fbc690056591a1a91ddf70e7d61d047c402f3efa5f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp313-cp313-pyemscripten_2025_0_wasm32.whl

Download URL pydevices_audioif-0.0.4-cp313-cp313-pyemscripten_2025_0_wasm32.whl
Size 226.9 kB
Tags CPython 3.13 PyEmscripten 2025.0+ WebAssembly
SHA-256 checksum
How to use checksums
9c3a62e7337e895d9afd22eed7262b4c5ebe4ee60d569178701b7eaeba213110
BLAKE2b-256 checksum
How to use checksums
468ab793467051f989c20b00999452afc056307f62d0155854ab487525159008
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL pydevices_audioif-0.0.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 334.2 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
064af409f8f7e4d51db1fdb609b59b33375e654afa017a9228d9c49608ade785
BLAKE2b-256 checksum
How to use checksums
78cedf3b60a5beebb049e72004b2caea5117096e8ad909b23b9533da3592134e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp313-cp313-android_21_x86_64.whl

Download URL pydevices_audioif-0.0.4-cp313-cp313-android_21_x86_64.whl
Size 251.2 kB
Tags Android API level 21+ x86-64 CPython 3.13
SHA-256 checksum
How to use checksums
9bb362fe43ae8c6ab497adf64197cd9b81f3869ff5ff1f04e5f6f56c7216aca3
BLAKE2b-256 checksum
How to use checksums
b2fe0d5e4b5a335ce1be3d4ecd426e1d3c14d9a10f9bd702a6058e21b2ed0dd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp313-cp313-android_21_arm64_v8a.whl

Download URL pydevices_audioif-0.0.4-cp313-cp313-android_21_arm64_v8a.whl
Size 248.3 kB
Tags Android API level 21+ ARM64 v8a CPython 3.13
SHA-256 checksum
How to use checksums
cbff8c8e40833a26a2706dc4cc11fc8ba5e2354cb44871c3833add36dc73ebf5
BLAKE2b-256 checksum
How to use checksums
0366a84cc9bfcea403adb0ca22f17f9a9383f2a36651b33314af02a1982f9c05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp312-cp312-win_amd64.whl

Download URL pydevices_audioif-0.0.4-cp312-cp312-win_amd64.whl
Size 245.8 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
35318db82a65bac4e2fe47f190bdba02a328fc3dc3674f925478c5f9470600a5
BLAKE2b-256 checksum
How to use checksums
2f85b8494ef800e7b35549b96d2caa3f97231fecf700328172f43a47fcc6bf70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL pydevices_audioif-0.0.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 334.2 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
916c9ddd8de5df678c6c3865aeaa54e2937dbd72a9b1584fab2a998ec7953233
BLAKE2b-256 checksum
How to use checksums
dfe11b9cd1ed385af1f9e38f6371ae21d89a54839fc8f5828b736f9fe0d1b7b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp311-cp311-win_amd64.whl

Download URL pydevices_audioif-0.0.4-cp311-cp311-win_amd64.whl
Size 245.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
9676e1ede0f1b6af9352e5a9f3723ded93aaf3c8312662debadfcf783da5768a
BLAKE2b-256 checksum
How to use checksums
6c801c7034fd1d9a768f46b530071007b74a7924c79e4569caa096d27c16b301
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL pydevices_audioif-0.0.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 334.2 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
1a87e5f04a5522a7e1e5ad737dfb15332e475115f6fe78bc42cd5029d036230c
BLAKE2b-256 checksum
How to use checksums
28252ea7c0272b05c31cf4a5d3b230151b2cbab3866c26604e615d001b8432c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp310-cp310-win_amd64.whl

Download URL pydevices_audioif-0.0.4-cp310-cp310-win_amd64.whl
Size 245.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
e1bd48f2cedc19b49a4a82431b2e488d3e49a17342622d8a1b52a93f117c8ad0
BLAKE2b-256 checksum
How to use checksums
c071903722ae8a34c1013341dbdbbe6f5ec3ce0efb364fc56927918e8b0b0ebe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_audioif-0.0.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL pydevices_audioif-0.0.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 332.4 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
f77004fd3baee7baa2665973ec67f669698f90c35b6972f1ee5530877aed879f
BLAKE2b-256 checksum
How to use checksums
3e26d6e1f54d15fce45da3840ede688978b0f5a0670abcd54b213b0ccde2dc4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Security for pydevices-audioif 0.0.4

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

Release history Release notifications | RSS feed

This release

0.0.4 This release

16 release files No provenance

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