SkillAgentSearch skills...

Launchpad.py

Novation Launchpad (and Midi Fighter) control suite for Python

Install / Use

/learn @FMMT666/Launchpad.py
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

launchpad.py

A [Novation Launchpad][1] (and [Midi Fighter][25]) control suite for [Python][2].

If you ever dreamed of using your Launchpad for completely other stuff than music: Welcome !-)

Compatible with most [tm] single board computers.

Watch a 6s video [here][7].
Or take a look at [that one][8].
What about the brand new Launchpad Pro support? [Right][9]!

Hey - and the Mac? Yep, that finally works too. [Look][12] \o/

Upcoming attraction: [Launch Control XL][15].

Oh, don't let us forget the [Dicer][16].

Older Launchpads might be documented [here][10].

Did we mention [Python 3][18] yet?

First [Mk3][21] and [X][22] Launchpad code snippets running now (4/2020).

Now with full [Midi Fighter 64][23] support (8/2020).

Finally! Hehe, say hello to the [Mk3 Pro][24] (8/2020)

And here comes the [Midi Fighter 3D][27] (5/2021)


STATUS 2025/06/xx:

Devices

Launchpad Mk1      - class "Launchpad()"        LEDs and buttons
Launchpad/S        - class "Launchpad()"        LEDs and buttons
Launchpad Mini     - class "Launchpad()"        LEDs and buttons

Launchpad Mk2      - class "LaunchpadMk2()"     LEDs and buttons

Launchpad Pro      - class "LaunchpadPro()"     LEDs and buttons (digitally only (yet))

Launchpad Pro Mk3  - class "LaunchpadProMk3()"  LEDs and buttons, pressure, everything; "should work"

Launchpad Mini Mk3 - class "LaunchpadMiniMk3()" LEDs and buttons  *** RENAMED 5/2020 ***

Launchpad X        - class "LaunchpadLPX()"     LEDs and buttons and more

Launch Control     - class "LaunchControl()"    EXPERIMENTAL

Launch Control XL  - class "LaunchControlXL()"  LEDs, buttons and potentiometers

LaunchKey (Mini)   - class "LaunchKeyMini()"    Buttons, keys and potentiometers/sliders, no LEDs

Dicer              - class "Dicer()"            LEDs and buttons

Midi Fighter 64    - class "MidiFighter64"      LEDs and buttons

Midi Fighter 3D    - class "MidiFighter3D       IN WORK

APPLE SILICON:
You most likely need to compile your own PyGame version.
6/2025: The PyPI version has a broken MIDI out path, the MacPorts version comes without MIDI at all.
I do not use Homebrew - maybe you can try your luck with that one.
Compiling PyGame though is acually easy. Usually. Hehe.
The process is explained somewhere below. CTRL-F your way down to "compile" in the RPi section.
Also, please update your Launchpads to the latest version.

PRO MK3 USERS:
You need to disable the Launchpad's "Transmit Clock" in the MIDI settings!
See section "For Launchpad Pro Mk3 users"

The Pro Mk3 needs the latest Firmware to operate flawlessly. FW is only available
via a Novation account- and product registration.

Alternatively, visit [mat1jaczyyy's Firmware Utility][28] on a Chromium-based browser to update the firmware of Pro Mk3.
USE THIS AT YOUR OWN RISK!

Please notice that the class "LaunchpadMk3()" was renamed to "LaunchpadMiniMk3()" in 5/2020.
This was necessary to avoid confusion with the device search string and the new "Pro-Mk3" Launchpad.
The "Pro Mk3" now is in LaunchpadProMk3().

Please notice the changes in methods "Open()" and "Check()" for the Mini Mk3 and X.
Also, see demo files "hello.py" or "launchpad_rgb.py" as a reference on how to use them.

Python

Now with Python 3 support \o/

OS

Now full functionality also on Windows 10 and macOS based systems.
Successfully tested with Ubuntu 18.04-LTS+. Requires compiling your own PyGame though (which is actually very easy; see below...).


NEWS

CHANGES 2025/06/XX:

- added notes for Apple Silicon
- added notes updating the MK2

CHANGES 2021/05/XX:

- fixed Launchpad Mk1 code in buttons_raw.py demo; thx to jmtrivial
- added first Midi Fighter 3D code; derived from the MF64
- added MF3D LedCtrlRaw()
- added MF3D ButtonStateRaw()
- added MF3D LedCtrlXY()

CHANGES 2021/04/XX:

- added link to driver for Mk1 Launchpad and Mini
- fixed Mk1 Automap buttons always yellow; thx to mutax and Ferada

CHANGES 2021/01/XX:

- fix for Python 3.9
- updated documentation for raw LED and button codes (top row had wrong values)
- changed version and tag to v0.9.1
- uploaded v0.9.1 to PyPI

CHANGES 2020/12/XX:

- changed version and tag to v0.9.0
- uploaded v0.9.0 to PyPI (finally :)

CHANGES 2020/09/XX:

- fixed sending command to not ready Pro Mk3 
- fixed MF64 LedCtrlString() to correctly work with the background color
- updated hello.py demo file for Midi Fighter 64
- updated demo files to new and recommended default device search strategy
- added Pro Mk3 ButtonStateXY() pressure events
- added demo file "launchpad_pressure_xy()" for new XY pressure events (Pro Mk3, so far)
- fixed MF64 minor init flaw
- added X ButtonStateXY() pressure events
- updated pressure xy demo file for X and also fixed an error for the Pro Mk3
- added Pro ButtonStateXY() pressure events
- updated pressure xy demo file for the Pro

CHANGES 2020/08/XX:

- added support for pressure events via ButtonStateRaw() for the Pro and Pro Mk3
- added support for pressure events via ButtonStateRaw() for the X
- added demo file "launchpad_pressure.py" for pressure sensitivity
- updated pressure demo to work with the X too
- added multiple search names for the X
- updated all rgb-demos to work with the X
- changed ListAll() method to optionally accept a string to query specific devices only
- added a general midi_events.py demo file for better debugging
- added a class for the Midi Fighter 64, only (raw) buttons so far
- added MF64 LedCtrlRaw(), ButtonStateXY(), LedAllOn()
- added MF64 LedCtrlXY()
- added support for the Launchpad Pro Mk3
- updated some demos to work with the Pro Mk3
- updated even some demos to work with the Pro Mk3
- updated yet some more demos and eliminated some bug
- updated pressure event handling in the Pro, Pro Mk3 and X's ButtonStateXY() methods
- added a Pro Mk3 "reset to Live mode" demo file
- updated ButtonStateXY() for the Pro Mk3, incl "classic" and "Pro" mode
- added character and string scrolling for Midi Fighter 64
- added stupid Midi Fighter text scrolling demo
- added MF64 LED-mode settings: brightness, toggling, flashing and animation settings
- updated MF64 LedCtrlRaw() to accept LED-mode settings
- updated MF64 LedAllOn() to optionally accept LED-mode settings
- updated MF64 LedCtrlXY() to optionally accept LED-mode settings
- added MF64 "constants" for easier LED-mode settings
- added MF64 LED-mode example file "midifighter_led_modes.py"

CHANGES 2020/05/XX:

- changed class name for the Mini MK3 to LaunchpadMiniMk3(); for compatibility w/ Pro-Mk3
- changed default search string for the Mini-Mk3 to "MiniMK3", for compatibility with Pro-Mk3
- changed default search string for the original Pro to "Launchpad Pro"; for compatibility w/ Pro-Mk3
- updated all included example files to match the class name and search term changes

CHANGES 2020/04/XX:

- added Mk3 Launchpad pull request #48; most of the Mk3 functionality available
- updated example launchpad_rgb.py (was "...mk2.py") for Mk2, Mk3 and Pro
- added "information.py" example to output some system and devices infos
- updated the "fire demo" to work with Mk2 and Mk3 too
- updated the "pulse demo" to work with Mk2 and Mk3 too
- added a class for the original Launch Control
- added Launchpad X pull request #51; most of the X functionality available

CHANGES 2020/03/XX:

- added Mk3 Launchpad; just a few lines of code, so far; ** EXPERIMENTAL **
- added LPX Launchpad; just a few lines of code, so far; ** EXPERIMENTAL **
- updated "hello.py" demo with basic Mk3/LPX code

CHANGES 2019/09/XX:

- added Mk1 LedCtrlRawRapidHome(), return to home position for LedCtrlRawRapid()
- updated build instructions

CHANGES 2018/10/XX:

- added PRO/Mk2 LedCtrlPulseByCode(), pulse LEDs by color code (RGB not supported)
- added PRO/Mk2 LedCtrlFlashByCode(), LED dual color flash by color codes (RGB not supported)
- added PRO/Mk2 LedCtrlBpm(), set pulsing/flashing rate
- updated PyGame compilation instructions
- added PRO/MK2 LedCtrlPulseXYByCode(), pulse LEDs by color code and X/Y position
- added PRO/MK2 LedCtrlFlashXYByCode(), flash LEDs by color code and X/Y position
- added PRO/MK2 flashing/pulsing example file
- changed version and tag to v0.8.1
- uploaded v0.8.1 to PyPI \o\\o//o/

CHANGES 2018/06/XX:

- added notes on how to compile your own PyGame (trouble solving)

CHANGES 2018/02/XX:

- added experimental (aka "seems quite good") support for Python 3
- added Pro example/test file "launchpad_pro.py"
- improving the doc, letter by letter
- added Mk2 example/test file "launchpad_mk2.py"
- removed the "Python 2 only" restriction from the setup file
- changed the imports in __init__.py to work with Python 3
- launchpad_py now ready for installations on Python 2 and 3
- updated "launchpad_pro.py" example/test; LedCtrlChar() positioning
- changed version and tag to v0.8.0
- uploaded v0.8.0 to PyPI \o\\o//o/
- added "launchpad_pro-fire.py" example; just a simple fire animation

CHANGES 2017/09/XX:

- added notes for Ubuntu 17.04 systems and /etc/alsa/alsa.conf issues
- added experimental 'Bad Pointer' fix upon exiting (needs more testing (w/ multiple LPads))

CHANGES 2017/08/XX:

- changed DCR; renamed InputStateRaw() to ButtonStateRaw()
- added DCR LedCtrlRaw()
- added DCR Reset()
- added DCR LedAllOff()
- added DCR "shift-lock" support (holding down mode buttons for additional 3*5 button events (per Dicer)
- added DCR ModeSet()
- add

Related Skills

View on GitHub
GitHub Stars377
CategoryDevelopment
Updated6d ago
Forks64

Languages

Python

Security Score

80/100

Audited on Mar 21, 2026

No findings