Coder Social home page Coder Social logo

wvengen / lpx-controller Goto Github PK

View Code? Open in Web Editor NEW
12.0 4.0 0.0 35 KB

Use the full power of the Launchpad X in a Linux studio setup

License: GNU General Public License v3.0

Rust 100.00%
novation novation-launchpad launchpad-x music midi midi-controller linux-audio

lpx-controller's Introduction

Launchpad X Controller

The Novation Launchpad X is a MIDI controller with 80 buttons that connects over USB. By default, Note and Custom layouts can be used, but not the Session layout.

While some software may provide support for this device, it's improbable that all useful packages know about this device. So why not making something that allows music-software to work with the full functionality of this device using standard MIDI messages? That's what this project is.

This program sits in between your music application and the Launchpad X device. It interacts with both, and expands the functionality of a 'stock' Launchpad X with the Session layout and four Mixer layouts (Volume, Pan, Send A and Send B).

When the 'Controller' input and output is connected to your music application, you can use regular MIDI learn functionality to control it with the Launchpad X.

Install

Go to releases and find the latest release. Get the binary appropriate for your system (if you don't know, it's probably x86_64), and install it somewhere in your PATH:

mkdir -p $HOME/.local/bin && \
wget -O $HOME/.local/bin/lpx-controller \
  https://github.com/wvengen/lpx-controller/releases/latest/download/lpx-controller-`uname -i` && \
chmod a+x $HOME/.local/bin/lpx-controller

Alternatively, you can clone this repository and run cargo build --release, after which you can find the binary as target/release/lpx-controller. See Develop for build requirements.

Run

  1. Connect your Launchpad X to the computer.
  2. Run lpx-controller from the command-line.
  3. You should see the Session button light up.
  4. Connect your audio application to Launchpad X Helper's ports named Controller in and Controller out.
  5. When you're done, press Ctrl-C in the console to stop this program.

Note that this program doesn't currently reconnect to the Launchpad X when you plug it in and out. You're probably using a patchbay application already, so you might consider including these too. A later version of the program could perhaps reconnect automatically (and re-initialize without having to press Session again).

Notes

The four mixer layouts are initialized to send the following control change messages:

  • Volume - Channel 5, CC 30 - 37
  • Pan - Channel 5, CC 38 - 45
  • Send A - Channel 5, CC 46 - 53
  • Send B - Channel 5, CC 54 - 61

Note that your music application must not echo received control changes back to the device, because the Launchpad X fades the mixer channels, and on receiving the fade will stop.

Tested with

Feel free you share your usage of this program by submitting an issue or PR.

Develop

You'll need Rust 1.52.0+ with Cargo. The easiest option to get a recent enough Rust is using Rustup.

You also need the ALSA headers. On Debian you would need to run apt-get install libasound2-dev, on Fedora dnf install alsa-lib-devel.

With these in place, running a development version of lpx-controller is as easy as cargo run.

Relevant links:

License

This program is licensed under the GNU GPL v3 or later.

lpx-controller's People

Contributors

cuppajoeman avatar dependabot[bot] avatar wvengen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lpx-controller's Issues

Jack?

Having followed your installation instructions...

mididings$ python3 setup.py install --user
couldn't find package 'jack'

Which version to jack to install?
sudo apt install jackd2?

Move to rmididings

I'm reimplementing lpx-controller in Rust using rmididings, because a) it will become easier to install, b) allow better integration of OSC (without threading issues), and c) is a nice project to learn Rust ;)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.