Python control of the PreSonus ATOM 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.
- 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
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 on the right side (pads turn into a settings menu), tap pad 7 (row 2 = pressure type, 7 = polyphonic aftertouch), release. the setting survives power cycles.
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.