atompad
python control of the presonus atom pad controller (the original, not the SQ): rgb pad leds, per-pad pressure, endless knobs, all buttons. no daw needed.
pip install atompad
import atompad
out, inp = atompad.open_atom() # finds the port, enters native control mode
atompad.pad_color(out, 0, 127, 0, 0) # pad 1 red
atompad.button_color(out, 109, 0, 0, 127) # play button blue
for msg in inp: # decoded raw midi via mido
if msg.type == "note_on" and msg.note in atompad.PADS:
print("pad", msg.note - 36 + 1, "velocity", msg.velocity)
see examples/ for an interactive playground (pressure painting, animations), a full input decoder, and a guided feature tour.
what the device can do
- 16 pads: full rgb (0-127 per channel), velocity in, per-pad polyphonic aftertouch in (see below)
- 4 endless knobs with acceleration (
atompad.knob_deltadecodes the cc values) - 20 side buttons, all send press/release; play, bank and preset +/- have rgb leds, the rest are fixed-color bright/dim
- multiple simultaneous pad presses, no banks in native control mode
per-pad pressure (one-time device setting)
out of the box the pads send channel pressure (one value for all held pads). for true per-pad pressure: hold the small Setup button (pads turn into a settings menu), tap pad 7 (row 2 = pressure type, 7 = polyphonic aftertouch), release. the setting survives power cycles.
protocol notes (reverse-engineered, fw 3.00)
two device modes: factory midi mode (banked pads, no led control) and native control mode — what studio one uses, and what this lib enables. mido 0-indexed channels below:
- enter native control:
note_off ch15 note=0 vel=127, exit withvel=0. persists until exit or usb replug - pads = notes 36–51. led on/off: ch0 note_on, velocity must be exactly 127 for on (1–126 = off — there is no hardware blink/breathe/brightness; animate in software). color: ch1/2/3 note_on velocity = r/g/b
- knobs = cc 14–17, relative: value 1–63 = +n steps, 65–127 = −n
- buttons = cc on ch0 (127 down, 0 up); leds via the same cc out (127 bright, 0 dim). rgb for cc 26/27/109 via ch1/2/3
- pad pressure: channel aftertouch by default, poly aftertouch / cc22 / off selectable in hardware quick setup
- pressing the tiny setup button makes the firmware flush note-offs for all 16 pads (stuck-note prevention, harmless)
protocol sources: kmitch95120/Reaper-ATOM-Integration, EMATech/AtomCtrl, plus device testing.
Metadata
Release files for atompad 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| atompad-0.1.0.tar.gz | 39.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| atompad-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.6 kB
Release files / atompad-0.1.0.tar.gz
| Download URL | atompad-0.1.0.tar.gz |
|---|---|
| Size | 39.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
236b1bea2f776439762011465ff1124176a888e41f7beb460111da08c30de4cc
|
|
BLAKE2b-256 checksum How to use checksums |
5de7244fd77aaea3e21cabf2087f316d8991d6995a2de50b258857153ea33085
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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 27, 2026.
Transparency logRelease files / atompad-0.1.0-py3-none-any.whl
| Download URL | atompad-0.1.0-py3-none-any.whl |
|---|---|
| Size | 5.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fff1d829c59d48db5295d60314010f389901989d86628c58e8794f469ccbbc48
|
|
BLAKE2b-256 checksum How to use checksums |
32114506ac9254a58d09c34abb32d5ead9e12238296b415db42a003282f45291
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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 27, 2026.
Transparency logSecurity for atompad 0.1.0
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.
Attestation for atompad-0.1.0.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 27, 2026.
Transparency logA 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.