Skip to main content

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_delta decodes 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 with vel=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)

Source distribution for atompad 0.1.0
File Size Uploaded Provenance
atompad-0.1.0.tar.gz 39.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for atompad 0.1.0
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full 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