An unofficial Python API/wrapper for the Audient EVO series (4, 8, 16) on Linux.
Project description
audient-evo-python
An experimental, unofficial Python API/wrapper for the Audient EVO series 8 (4,16 in the works) USB audio interfaces on Linux.
This library allows direct USB communication with the EVO hardware, replicating the core functionality of the official EVO Mixer software using raw control transfers.
⚠️ DISCLAIMER & Project Status
- This project is a partially reverse-engineered USB control protocol.
- It is not affiliated with or endorsed by Audient.
- The kernel driver is detached while the app is active.
- Crashes or forced exits may leave the device unclaimed until replugged.
- Information may be incomplete or inaccurate; use at your own risk.
Features
- Direct USB communication with EVO firmware
- Input controls: Phantom power (48V), Gain, Mute, Mono
- Output controls: Volume, Mute
- Monitor mixer routing (per input → output)
- Sample‑rate switching (experimental)
- Event polling support
- Input Routing Loopback source persistently changeable
Architecture
The library is built on three logical layers, completely independent of any UI frameworks:
Evo8Device: High‑level device API. Converts semantic actions into protocol commands.EvoProtocol: Pure helper class containing addressing rules and calculators (no USB logic).EvoUsbTransport: Low‑level USB transport handling discovery, interface claiming, and control transfers.
Requirements
- Python 3.10+
- Linux
pyusb
Installation & Setup
-
Install the package:
pip install audient-evo-linux
-
Ensure your user has permission to access the EVO USB device by adding yourself to the audio group:
sudo usermod -aG audio $USER
-
You may also want to copy the udev rule from this projects
udev/directory into/etc/udev/rules.d/:SUBSYSTEM=="usb", ATTR{idVendor}=="2708", ATTR{idProduct}=="0008", MODE="0666" # EVO16 SUBSYSTEM=="usb", ATTR{idVendor}=="2708", ATTR{idProduct}=="0007", MODE="0666" # EVO8 SUBSYSTEM=="usb", ATTR{idVendor}=="2708", ATTR{idProduct}=="0006", MODE="0666" # EVO4
Usage Example
from audient_evo import EvoUsbTransport, Evo8Device
transport = EvoUsbTransport()
transport.connect()
evo = Evo8Device(transport)
evo.set_gain(1, 40) # gain range 0 - 100
evo.set_phantom(1, True)
Channel numbers are 1‑based.
References
This project builds upon previous community efforts:
Huge credit to the developers of those projects for protocol discovery.
Source Code Documentation Overview
Key Classes
EvoUsbTransport
Responsible for:
- USB device discovery
- Kernel driver detachment
- Interface claiming / releasing
- Control transfer I/O
Implements context‑manager support for safe cleanup.
EvoProtocol
Pure helper class that:
- Encapsulates EVO firmware addressing rules
- Calculates channel‑based and monitor‑matrix addresses
Contains no USB logic.
Evo8Device
High‑level API intended for UI and scripting:
- Converts semantic actions into protocol commands
- Handles error recovery
- Enforces "app vs OS" control state
License
BSD-3-Clause
Contributing
Any kind of contribution is always welcome.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 audient_evo_linux-0.8.2.tar.gz.
File metadata
- Download URL: audient_evo_linux-0.8.2.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
383e4a1322383543f2bf4fa8153e378b3651cb6b6d6951043211a1003f8c4af7
|
|
| MD5 |
daf89ba78e51765bf29a31b1ebcef3a2
|
|
| BLAKE2b-256 |
b6905027c55572b50f26538f0e5c18a022a8ee1f242bc167c72171a27b566c59
|
File details
Details for the file audient_evo_linux-0.8.2-py3-none-any.whl.
File metadata
- Download URL: audient_evo_linux-0.8.2-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44a385c74f89ed9ea7afbf193b94728cd8ba0679db2c32289a9f110ff9958e13
|
|
| MD5 |
a1f7ec29fed9576f2e8bb722d428c7a1
|
|
| BLAKE2b-256 |
8ba449fd591ab1325aa20d016c449042739e56579fafaa79bf222b08631dcc7d
|