This release is a pre-release and may not be stable for production use.
tachyaudio
tachyaudio is a low-level audio package intended to replace tachypy’s direct
dependency on sounddevice/PortAudio over time.
Status: beta. The native backend currently supports macOS through Core Audio,
Linux through vendored miniaudio, and Windows through vendored miniaudio
using WASAPI.
Goals
- install from
pipwithout requiring users to install PortAudio separately - keep real-time audio work out of Python callbacks where possible
- expose explicit latency, underrun, and overrun diagnostics
- support playback, capture, duplex streams, and device enumeration
- keep tachypy’s public API stable while the backend evolves
Non-goals
- full DAW-style audio graph support in the initial release
- replacing OS audio stacks such as Core Audio, WASAPI, ALSA, or PulseAudio
- exposing backend-specific details as the primary user API
Initial API shape
import tachyaudio as ta
devices = ta.list_devices()
stream = ta.OutputStream(sample_rate=48_000, channels=2)
stream.write(samples)
with stream:
...
stats = ta.play(samples, sample_rate=48_000, channels=2)
The native backend currently supports device enumeration, float32 output playback, and nonblocking float32 input capture on macOS, Linux, and Windows.
OutputStream is currently a continuous stream. Write audio before or during
playback; if the stream runs out of queued frames it outputs silence and counts
an underrun.
Use tachyaudio.play() for finite stimuli that should start, drain, and close
as a single operation.
See examples/play_wav.py for dependency-free playback of WAV files exported
from an editor such as Audacity. The repository example uses a 48 kHz float WAV
to avoid runtime resampling. Pass --eq to show a lightweight five-band
terminal meter during playback.
Use blocking helpers when callers need complete buffer transfer:
OutputStream.write_all(frames, timeout=None): wait until all frames are accepted by the output ringInputStream.read_exactly(frame_count, timeout=None): wait until exactly the requested number of frames has been captured
Full-duplex capture/playback is exposed as DuplexStream. Native macOS, Linux,
and Windows support is available.
Lifecycle semantics:
stop(): stop playback without discarding queued framesdrain(): wait for queued frames to playflush(): discard queued frames without closing the streamclose(): stop playback and release native resources
StreamStats reports:
frames_processed: frames consumed by the backendunderruns/overruns: buffer starvation or rejected writeshardware_latency: backend-reported device latency in seconds when availablequeued_frames: frames currently waiting in the native ringqueued_latency: queued ring duration in secondsestimated_latency:queued_latency + hardware_latencywhen hardware latency is available, otherwise queued latencybuffer_size: native callback buffer size in frames
Development
Supported Python versions:
- Python 3.10
- Python 3.11
- Python 3.12
- Python 3.13
- Python 3.14
Run the standard-library test suite:
python3 -m unittest discover -s tests
Play a short test tone:
PYTHONPATH=src python3 examples/play_tone.py
Capture a short input buffer and print its RMS level:
PYTHONPATH=src python3 examples/capture_level.py
InputStream.read(frame_count) is nonblocking and returns currently available
frames up to frame_count.
On macOS, a restricted sandbox may hide Core Audio devices. On Linux, sandboxed
processes may be unable to reach the user PipeWire/PulseAudio server. On
Windows, remote/headless sessions may expose different WASAPI endpoints than an
interactive desktop login. If tachyaudio.list_devices() returns an empty tuple
or unexpected devices in a sandboxed environment, verify from an unsandboxed
terminal before debugging the backend. Headless Linux containers may return no
devices while still being able to build and import the native extension.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tachyaudio-0.2.0b2.tar.gz.
File metadata
- Download URL: tachyaudio-0.2.0b2.tar.gz
- Upload date:
- Size: 668.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54f9eb6dbae434a4da1d686f36554b3498b43e2369f03f729710a455d0f27cfc
|
|
| MD5 |
2a6f8a77f78c7466d55c18ed974e4cc7
|
|
| BLAKE2b-256 |
fdede42921eb39e7c40c357f9fd315220c56fb372a9e88af011cd2a2c80d1f74
|
File details
Details for the file tachyaudio-0.2.0b2-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 754.7 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b232d1a73728ae7811770e0712b736eedf216e69cec34d1bc02aa58f70c93e7
|
|
| MD5 |
1429bf73b49019484d262fe222846865
|
|
| BLAKE2b-256 |
e0042b39d412387c93927161f06abbe5a1c1915d9b0500d101f681c8b868558c
|
File details
Details for the file tachyaudio-0.2.0b2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c164420c4f61f94435b393530d73b6f10e2c9ecf470fe97034de0e37e4e71f2
|
|
| MD5 |
c93c5c88cc98684cd059f8026a79ef65
|
|
| BLAKE2b-256 |
da6c1ba9ed9f2f704c5752020271861166f38ae2faef63c44e406a04aaef2a09
|
File details
Details for the file tachyaudio-0.2.0b2-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 678.9 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b7318fb3922e0abdb29115a7378ee5258f08ca7f62e74fc76f87f72d9b4f989
|
|
| MD5 |
3411611aa23f6471d4865f9ff16ad886
|
|
| BLAKE2b-256 |
99f54af52d8629479593e36306bb070a21a21802a0c4a94d7cc51825425a3880
|
File details
Details for the file tachyaudio-0.2.0b2-cp314-cp314-macosx_10_15_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp314-cp314-macosx_10_15_x86_64.whl
- Upload date:
- Size: 678.7 kB
- Tags: CPython 3.14, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4c9bf79fdbf7adb162d96ef279df4864d98ef0b6f9c4943ed97680adf400a55
|
|
| MD5 |
49bd8d2d55eda269b266458c41f20c15
|
|
| BLAKE2b-256 |
062b5c4502c1174f0c31acad4b404b6d6a92553df29d3d833f685fd89888e014
|
File details
Details for the file tachyaudio-0.2.0b2-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 755.5 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5feaa5defd78456466a7d0c39cda890843e141b80d127afa12b473684ac4a620
|
|
| MD5 |
3700d8ae6cf9e95975182bc7042cef3d
|
|
| BLAKE2b-256 |
641b12e7541f94aa12297f48b3337878690dfb6d9b558981dd4d3665fe79696a
|
File details
Details for the file tachyaudio-0.2.0b2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e13756e45aefbda939a07148cb9e2b160e3d70f5d1aea091591f2aec7f81e65
|
|
| MD5 |
1318b5d6a290e1d9515ea7c2d591adb5
|
|
| BLAKE2b-256 |
0ff3a9156d11163ed8b8f1b558ea778a1a752d96d6e68e607419c8599d502c2e
|
File details
Details for the file tachyaudio-0.2.0b2-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 678.9 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abab6dd0caab1c6f39c807a5b9acfdc0e8e78e370160e76997277de53aa4992d
|
|
| MD5 |
e2e41e17a2e6fc625570309a08973d18
|
|
| BLAKE2b-256 |
6a771b4056f439a71c4dc240a92781f554276c84c3775d2c63b9c26c57702465
|
File details
Details for the file tachyaudio-0.2.0b2-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 678.6 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08449d8798a7a4b02cc980843140ab5525d3890d72c108c64a59b3839b73eb98
|
|
| MD5 |
b5bc4bca8646ab808fdab204c241bec5
|
|
| BLAKE2b-256 |
eaac8bf3666bf824537afb03469b940ee12bf695446d5ab86628cb2e71eb63bb
|
File details
Details for the file tachyaudio-0.2.0b2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 755.5 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fa82ab170ea2912cba1e0fbcac035f3cceaf32b6510d596d23c28361458ac7f
|
|
| MD5 |
b8d25cdc271912a4a9a102bc4b028c21
|
|
| BLAKE2b-256 |
7be480381e63c610e1f1f4cc4f5dddb937c68cd28f66c72e4b61743e4947417b
|
File details
Details for the file tachyaudio-0.2.0b2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5660c66afea326838c8c5e1af2d4ae3919c136f1908dc308fc773b8f5897fd6a
|
|
| MD5 |
a6b299c36bf4b08783dce11702af7ff4
|
|
| BLAKE2b-256 |
0a827922584012cbe961003b39ffb4a8d246009058576ab7ba2a3e71c1ef7194
|
File details
Details for the file tachyaudio-0.2.0b2-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 678.9 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bc5a132500abfc0f6a98280d43fa2f9c5340ac06e2b5099cd220d30a5c11648
|
|
| MD5 |
ff18f7c8ec1a1a0fed3bf4e527107911
|
|
| BLAKE2b-256 |
9a92bf207be8041b0c783607c2dfa0203e238a5e376153e473bcfe419b16317e
|
File details
Details for the file tachyaudio-0.2.0b2-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 678.6 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2f4445e26e96185d69ad67d8a9c29810b4af23a3d9053018770f62a26b2bf20
|
|
| MD5 |
ec02277c9b7265d0b5443d42415a88a2
|
|
| BLAKE2b-256 |
725a7e45da031f63e27d891975ec3640b68bee46b082e79765a3bcdbf0d8434c
|
File details
Details for the file tachyaudio-0.2.0b2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 755.4 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0f5c06c66c6a894887938a51d1ebef04d6f842a4253d43ca0c22f545400efb1
|
|
| MD5 |
93a6a3173ef9ec5ed753edc4f245839f
|
|
| BLAKE2b-256 |
2d2af29e930972d363cec4673194f1ce5460a96eeb263ffa0e65b17f2f63b3c0
|
File details
Details for the file tachyaudio-0.2.0b2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27465d8e29da487820f243c0ab31937fee125561483a111d655be2535f0e8c1c
|
|
| MD5 |
85556f2cbec36dab0167148dbfcf3f24
|
|
| BLAKE2b-256 |
e1f3e9ea7f42c358c249927bdc500bc4665d3fe455674cca55dd4a762bff5e47
|
File details
Details for the file tachyaudio-0.2.0b2-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 678.8 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3dd53676e882a7fb0c0ea32a4c2985b08e33cf187953a2a256b4acb7b990185
|
|
| MD5 |
062ef0bd406abbf3fd96644a2d294b61
|
|
| BLAKE2b-256 |
7a0f7c82f0cb43e2d0fb0e028419f71b2191adfd69d1672fe581895980f46fe1
|
File details
Details for the file tachyaudio-0.2.0b2-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 678.5 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75ae41c539334ed533275ce8ac8bdbe74b80531fa3a11513038f69d053006271
|
|
| MD5 |
37864455dfc3bacd695d41a4a69ac60c
|
|
| BLAKE2b-256 |
2c160dceb8c1909a8123bd14506f6c23c6741bc1f13cd50d53cee0deb205567c
|
File details
Details for the file tachyaudio-0.2.0b2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 755.4 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52f54b7dd001e09afcfb70f518e00c38ffb93efb24249aa9b9d481ab102d6296
|
|
| MD5 |
e2b4e3d9fc3e302922e2b2ddd03daca6
|
|
| BLAKE2b-256 |
bad8002d5afd267bd28607c378d2e7bbcdf7b5ba1cb3cce04b395810b43c3920
|
File details
Details for the file tachyaudio-0.2.0b2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4cb9febb266e05565a926c4a6fe904dfe0a91bb83895296b2841a5269a8283d
|
|
| MD5 |
4dea2b962c6405b4126b3504461a4f2e
|
|
| BLAKE2b-256 |
9ca0719c2a798e9025373396670dc2352a03626825fe83ae63859a7631978f39
|
File details
Details for the file tachyaudio-0.2.0b2-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 678.8 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43f93c47d4b6a5d90f0688571e38b0b514720319fa00f380aa1b2f3fab9ac8ad
|
|
| MD5 |
326f350fea24f169c155ad63ec3c3827
|
|
| BLAKE2b-256 |
eda6ee634640d131ef57782f27621d3d4eed4cb6420475b0d46f6280a213ec2d
|
File details
Details for the file tachyaudio-0.2.0b2-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: tachyaudio-0.2.0b2-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 678.5 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
990cdf8f17fcbcfd121134a2799662d61340b57eeafb12ea176d625cecf749a9
|
|
| MD5 |
5c0b7f2fb601538f8dfd0e0a59e2cd6b
|
|
| BLAKE2b-256 |
d3afbeae1b824f7c60c23692fac1a35cb6b98c9867c8d1f22a976bee573ee720
|