Skip to main content
Pre-release

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 pip without 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 ring
  • InputStream.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 frames
  • drain(): wait for queued frames to play
  • flush(): discard queued frames without closing the stream
  • close(): stop playback and release native resources

StreamStats reports:

  • frames_processed: frames consumed by the backend
  • underruns / overruns: buffer starvation or rejected writes
  • hardware_latency: backend-reported device latency in seconds when available
  • queued_frames: frames currently waiting in the native ring
  • queued_latency: queued ring duration in seconds
  • estimated_latency: queued_latency + hardware_latency when hardware latency is available, otherwise queued latency
  • buffer_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

tachyaudio-0.2.0b2.tar.gz (668.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tachyaudio-0.2.0b2-cp314-cp314-win_amd64.whl (754.7 kB view details)

Uploaded CPython 3.14Windows x86-64

tachyaudio-0.2.0b2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

tachyaudio-0.2.0b2-cp314-cp314-macosx_11_0_arm64.whl (678.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tachyaudio-0.2.0b2-cp314-cp314-macosx_10_15_x86_64.whl (678.7 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

tachyaudio-0.2.0b2-cp313-cp313-win_amd64.whl (755.5 kB view details)

Uploaded CPython 3.13Windows x86-64

tachyaudio-0.2.0b2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

tachyaudio-0.2.0b2-cp313-cp313-macosx_11_0_arm64.whl (678.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tachyaudio-0.2.0b2-cp313-cp313-macosx_10_13_x86_64.whl (678.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

tachyaudio-0.2.0b2-cp312-cp312-win_amd64.whl (755.5 kB view details)

Uploaded CPython 3.12Windows x86-64

tachyaudio-0.2.0b2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

tachyaudio-0.2.0b2-cp312-cp312-macosx_11_0_arm64.whl (678.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tachyaudio-0.2.0b2-cp312-cp312-macosx_10_13_x86_64.whl (678.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

tachyaudio-0.2.0b2-cp311-cp311-win_amd64.whl (755.4 kB view details)

Uploaded CPython 3.11Windows x86-64

tachyaudio-0.2.0b2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

tachyaudio-0.2.0b2-cp311-cp311-macosx_11_0_arm64.whl (678.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tachyaudio-0.2.0b2-cp311-cp311-macosx_10_9_x86_64.whl (678.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

tachyaudio-0.2.0b2-cp310-cp310-win_amd64.whl (755.4 kB view details)

Uploaded CPython 3.10Windows x86-64

tachyaudio-0.2.0b2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

tachyaudio-0.2.0b2-cp310-cp310-macosx_11_0_arm64.whl (678.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tachyaudio-0.2.0b2-cp310-cp310-macosx_10_9_x86_64.whl (678.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

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

Hashes for tachyaudio-0.2.0b2.tar.gz
Algorithm Hash digest
SHA256 54f9eb6dbae434a4da1d686f36554b3498b43e2369f03f729710a455d0f27cfc
MD5 2a6f8a77f78c7466d55c18ed974e4cc7
BLAKE2b-256 fdede42921eb39e7c40c357f9fd315220c56fb372a9e88af011cd2a2c80d1f74

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5b232d1a73728ae7811770e0712b736eedf216e69cec34d1bc02aa58f70c93e7
MD5 1429bf73b49019484d262fe222846865
BLAKE2b-256 e0042b39d412387c93927161f06abbe5a1c1915d9b0500d101f681c8b868558c

See more details on using hashes here.

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

File hashes

Hashes for tachyaudio-0.2.0b2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1c164420c4f61f94435b393530d73b6f10e2c9ecf470fe97034de0e37e4e71f2
MD5 c93c5c88cc98684cd059f8026a79ef65
BLAKE2b-256 da6c1ba9ed9f2f704c5752020271861166f38ae2faef63c44e406a04aaef2a09

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b7318fb3922e0abdb29115a7378ee5258f08ca7f62e74fc76f87f72d9b4f989
MD5 3411611aa23f6471d4865f9ff16ad886
BLAKE2b-256 99f54af52d8629479593e36306bb070a21a21802a0c4a94d7cc51825425a3880

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f4c9bf79fdbf7adb162d96ef279df4864d98ef0b6f9c4943ed97680adf400a55
MD5 49bd8d2d55eda269b266458c41f20c15
BLAKE2b-256 062b5c4502c1174f0c31acad4b404b6d6a92553df29d3d833f685fd89888e014

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5feaa5defd78456466a7d0c39cda890843e141b80d127afa12b473684ac4a620
MD5 3700d8ae6cf9e95975182bc7042cef3d
BLAKE2b-256 641b12e7541f94aa12297f48b3337878690dfb6d9b558981dd4d3665fe79696a

See more details on using hashes here.

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

File hashes

Hashes for tachyaudio-0.2.0b2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e13756e45aefbda939a07148cb9e2b160e3d70f5d1aea091591f2aec7f81e65
MD5 1318b5d6a290e1d9515ea7c2d591adb5
BLAKE2b-256 0ff3a9156d11163ed8b8f1b558ea778a1a752d96d6e68e607419c8599d502c2e

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 abab6dd0caab1c6f39c807a5b9acfdc0e8e78e370160e76997277de53aa4992d
MD5 e2e41e17a2e6fc625570309a08973d18
BLAKE2b-256 6a771b4056f439a71c4dc240a92781f554276c84c3775d2c63b9c26c57702465

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 08449d8798a7a4b02cc980843140ab5525d3890d72c108c64a59b3839b73eb98
MD5 b5bc4bca8646ab808fdab204c241bec5
BLAKE2b-256 eaac8bf3666bf824537afb03469b940ee12bf695446d5ab86628cb2e71eb63bb

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1fa82ab170ea2912cba1e0fbcac035f3cceaf32b6510d596d23c28361458ac7f
MD5 b8d25cdc271912a4a9a102bc4b028c21
BLAKE2b-256 7be480381e63c610e1f1f4cc4f5dddb937c68cd28f66c72e4b61743e4947417b

See more details on using hashes here.

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

File hashes

Hashes for tachyaudio-0.2.0b2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5660c66afea326838c8c5e1af2d4ae3919c136f1908dc308fc773b8f5897fd6a
MD5 a6b299c36bf4b08783dce11702af7ff4
BLAKE2b-256 0a827922584012cbe961003b39ffb4a8d246009058576ab7ba2a3e71c1ef7194

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bc5a132500abfc0f6a98280d43fa2f9c5340ac06e2b5099cd220d30a5c11648
MD5 ff18f7c8ec1a1a0fed3bf4e527107911
BLAKE2b-256 9a92bf207be8041b0c783607c2dfa0203e238a5e376153e473bcfe419b16317e

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b2f4445e26e96185d69ad67d8a9c29810b4af23a3d9053018770f62a26b2bf20
MD5 ec02277c9b7265d0b5443d42415a88a2
BLAKE2b-256 725a7e45da031f63e27d891975ec3640b68bee46b082e79765a3bcdbf0d8434c

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a0f5c06c66c6a894887938a51d1ebef04d6f842a4253d43ca0c22f545400efb1
MD5 93a6a3173ef9ec5ed753edc4f245839f
BLAKE2b-256 2d2af29e930972d363cec4673194f1ce5460a96eeb263ffa0e65b17f2f63b3c0

See more details on using hashes here.

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

File hashes

Hashes for tachyaudio-0.2.0b2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 27465d8e29da487820f243c0ab31937fee125561483a111d655be2535f0e8c1c
MD5 85556f2cbec36dab0167148dbfcf3f24
BLAKE2b-256 e1f3e9ea7f42c358c249927bdc500bc4665d3fe455674cca55dd4a762bff5e47

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3dd53676e882a7fb0c0ea32a4c2985b08e33cf187953a2a256b4acb7b990185
MD5 062ef0bd406abbf3fd96644a2d294b61
BLAKE2b-256 7a0f7c82f0cb43e2d0fb0e028419f71b2191adfd69d1672fe581895980f46fe1

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 75ae41c539334ed533275ce8ac8bdbe74b80531fa3a11513038f69d053006271
MD5 37864455dfc3bacd695d41a4a69ac60c
BLAKE2b-256 2c160dceb8c1909a8123bd14506f6c23c6741bc1f13cd50d53cee0deb205567c

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 52f54b7dd001e09afcfb70f518e00c38ffb93efb24249aa9b9d481ab102d6296
MD5 e2b4e3d9fc3e302922e2b2ddd03daca6
BLAKE2b-256 bad8002d5afd267bd28607c378d2e7bbcdf7b5ba1cb3cce04b395810b43c3920

See more details on using hashes here.

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

File hashes

Hashes for tachyaudio-0.2.0b2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4cb9febb266e05565a926c4a6fe904dfe0a91bb83895296b2841a5269a8283d
MD5 4dea2b962c6405b4126b3504461a4f2e
BLAKE2b-256 9ca0719c2a798e9025373396670dc2352a03626825fe83ae63859a7631978f39

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43f93c47d4b6a5d90f0688571e38b0b514720319fa00f380aa1b2f3fab9ac8ad
MD5 326f350fea24f169c155ad63ec3c3827
BLAKE2b-256 eda6ee634640d131ef57782f27621d3d4eed4cb6420475b0d46f6280a213ec2d

See more details on using hashes here.

File details

Details for the file tachyaudio-0.2.0b2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tachyaudio-0.2.0b2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 990cdf8f17fcbcfd121134a2799662d61340b57eeafb12ea176d625cecf749a9
MD5 5c0b7f2fb601538f8dfd0e0a59e2cd6b
BLAKE2b-256 d3afbeae1b824f7c60c23692fac1a35cb6b98c9867c8d1f22a976bee573ee720

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0b2 This release

21 files

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