Skip to main content

Control the PreSonus ATOM pad controller: RGB pad LEDs, per-pad pressure, knobs, buttons

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atompad-0.1.0.tar.gz (39.6 kB view details)

Uploaded Source

Built Distribution

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

atompad-0.1.0-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file atompad-0.1.0.tar.gz.

File metadata

  • Download URL: atompad-0.1.0.tar.gz
  • Upload date:
  • Size: 39.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for atompad-0.1.0.tar.gz
Algorithm Hash digest
SHA256 236b1bea2f776439762011465ff1124176a888e41f7beb460111da08c30de4cc
MD5 441b38187fc71f3ee84913a30fdb60b6
BLAKE2b-256 5de7244fd77aaea3e21cabf2087f316d8991d6995a2de50b258857153ea33085

See more details on using hashes here.

Provenance

The following attestation bundles were made for atompad-0.1.0.tar.gz:

Publisher: publish.yml on gregsadetsky/atompad

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atompad-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: atompad-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for atompad-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fff1d829c59d48db5295d60314010f389901989d86628c58e8794f469ccbbc48
MD5 e216e819c770bacc6293c5aac91a8eec
BLAKE2b-256 32114506ac9254a58d09c34abb32d5ead9e12238296b415db42a003282f45291

See more details on using hashes here.

Provenance

The following attestation bundles were made for atompad-0.1.0-py3-none-any.whl:

Publisher: publish.yml on gregsadetsky/atompad

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page