{"id":16737687,"url":"https://github.com/wvengen/lpx-controller","last_synced_at":"2025-10-14T09:39:29.721Z","repository":{"id":37098993,"uuid":"272976766","full_name":"wvengen/lpx-controller","owner":"wvengen","description":"Use the full power of the Launchpad X in a Linux studio setup","archived":false,"fork":false,"pushed_at":"2022-06-17T08:32:21.000Z","size":35,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-10T13:08:28.886Z","etag":null,"topics":["launchpad-x","linux-audio","midi","midi-controller","music","novation","novation-launchpad"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wvengen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-17T13:08:57.000Z","updated_at":"2024-12-17T19:38:48.000Z","dependencies_parsed_at":"2022-06-24T12:19:21.832Z","dependency_job_id":null,"html_url":"https://github.com/wvengen/lpx-controller","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/wvengen/lpx-controller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvengen%2Flpx-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvengen%2Flpx-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvengen%2Flpx-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvengen%2Flpx-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wvengen","download_url":"https://codeload.github.com/wvengen/lpx-controller/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wvengen%2Flpx-controller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018618,"owners_count":26086404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["launchpad-x","linux-audio","midi","midi-controller","music","novation","novation-launchpad"],"created_at":"2024-10-13T00:27:28.724Z","updated_at":"2025-10-14T09:39:29.702Z","avatar_url":"https://github.com/wvengen.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Launchpad X Controller\n\nThe [Novation Launchpad X](https://novationmusic.com/en/launch/launchpad-x) is a MIDI controller\nwith 80 buttons that connects over USB. By default, _Note_ and _Custom_ layouts can be used, but\nnot the _Session_ layout.\n\nWhile some software may provide support for this device, it's improbable that all useful packages\nknow about this device. So why not making something that allows music-software to work with the\nfull functionality of this device using standard MIDI messages? That's what this project is.\n\nThis program sits in between your music application and the Launchpad X device. It interacts with\nboth, and expands the functionality of a 'stock' Launchpad X with the _Session_ layout and four\n_Mixer_ layouts (_Volume_, _Pan_, _Send A_ and _Send B_).\n\nWhen the 'Controller' input and output is connected to your music application, you can use regular\nMIDI learn functionality to control it with the Launchpad X.\n\n## Install\n\nGo to [releases](https://github.com/wvengen/lpx-controller/releases) and find the latest release.\nGet the binary appropriate for your system (if you don't know, it's probably `x86_64`), and install\nit somewhere in your `PATH`:\n\n```sh\nmkdir -p $HOME/.local/bin \u0026\u0026 \\\nwget -O $HOME/.local/bin/lpx-controller \\\n  https://github.com/wvengen/lpx-controller/releases/latest/download/lpx-controller-`uname -i` \u0026\u0026 \\\nchmod a+x $HOME/.local/bin/lpx-controller\n```\n\nAlternatively, you can clone this repository and run `cargo build --release`, after which you\ncan find the binary as `target/release/lpx-controller`. See [Develop](#develop) for build requirements.\n\n## Run\n\n1. Connect your Launchpad X to the computer.\n2. Run `lpx-controller` from the command-line.\n3. You should see the _Session_ button light up.\n4. Connect your audio application to _Launchpad X Helper_'s ports named _Controller in_ and _Controller out_.\n5. When you're done, press `Ctrl-C` in the console to stop this program.\n\nNote that this program doesn't currently reconnect to the Launchpad X when you plug it in and out. You're\nprobably using a patchbay application already, so you might consider including these too. A later version of\nthe program could perhaps reconnect automatically (and re-initialize without having to press _Session_ again).\n\n## Notes\n\nThe four mixer layouts are initialized to send the following control change messages:\n- _Volume_ - Channel 5, CC 30 - 37\n- _Pan_ - Channel 5, CC 38 - 45\n- _Send A_ - Channel 5, CC 46 - 53\n- _Send B_ - Channel 5, CC 54 - 61\n\nNote that your music application must not echo received control changes back to the device, because the\nLaunchpad X fades the mixer channels, and on receiving the fade will stop.\n\n## Tested with\n\nFeel free you share your usage of this program by submitting an issue or PR.\n\n* [Luppp](http://openavproductions.com/luppp/) -\n    with [this PR](https://github.com/openAVproductions/openAV-Luppp/pull/310)\n    and [this controller definition](https://gist.github.com/wvengen/dd43cc82ad4ef425630fa290c1f2b3e9)\n\n## Develop\n\nYou'll need [Rust](https://www.rust-lang.org/) 1.52.0+ with [Cargo](https://doc.rust-lang.org/cargo/).\nThe easiest option to get a recent enough Rust is using [Rustup](https://rustup.rs/).\n\nYou also need the ALSA headers. On Debian you would need to run `apt-get install libasound2-dev`,\non Fedora `dnf install alsa-lib-devel`.\n\nWith these in place, running a development version of lpx-controller is as easy as `cargo run`.\n\nRelevant links:\n- [RMididings](https://github.com/wvengen/rmididings), on which lpx-controller is built.\n- [mididings documentation](http://dsacre.github.io/mididings/doc/), which RMididings is inspired by.\n- [Launchpad X programmer's reference guide](https://fael-downloads-prod.focusrite.com/customer/prod/s3fs-public/downloads/Launchpad%20X%20-%20Programmers%20Reference%20Manual.pdf)\n- A previous version of [lpx-controller in Python](https://github.com/wvengen/lpx-controller/tree/python).\n\n## License\n\nThis program is licensed under the [GNU GPL v3 or later](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwvengen%2Flpx-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwvengen%2Flpx-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwvengen%2Flpx-controller/lists"}