nenadilic84 / launch-rs

Rust tool/library for the Launchpad MK2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rust Launchpad

A set of bindings for controlling a Novation Launchpad. Using PortMidi for Midi bindings.

Currently only supports the Launchpad MK2. If you have another Launchpad, please let me know @bitshiftmask!

Eventually, I would like to introduce a Launchpad Trait, so code can be generic across different Launchpad types. I accept pull requests!

Prerequisites

(excerpt from portmidi-rs)

You need to make sure you have the PortMidi library installed.

On Ubuntu / Debian:

apt-get install libportmidi-dev

Arch Linux:

pacman -S portmidi

On OSX (Homebrew):

brew install portmidi

On OSX, if you get a linker error ld: library not found for -lportmidi, either,

  • make sure you have the Xcode Command Line Tools installed, not just Xcode, or

  • make sure you have the PortMidi library in your $LIBRARY_PATH, e.g. for Homebrew:

    export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/lib"

Use

First, add launchpad to your Cargo.toml:

[dependencies]
launchpad = "0.1"

Then, get started!

extern crate launchpad;

use std::thread;
use launchpad::*;

fn main() {
    let mut lpad = LaunchpadMk2::guess();

    // Output
    println!("Clear screen...");
    lpad.light_all(0);

    println!("Columns on!");
    for i in 0..9 {
        lpad.light_column(&ColorColumn {column: i, color: 5});
        thread::sleep(Duration::from_millis(25));
    }

    thread::sleep(Duration::from_millis(500));
    lpad.light_all(0);

    // Input and Output
    loop {
        if let Some(events) = lpad.poll() {
            for press in events {
                if press.message.data2 == 127 {
                    lpad.pulse_single(&ColorLed {
                        color: foo,
                        position: press.message.data1,
                    });
                }
            }
        }

        // there is no blocking receive method in PortMidi, therefore
        // we have to sleep some time to prevent a busy-wait loop
        thread::sleep(timeout);
    }
}

References

License

This code is licensed under the MIT license.

About

Rust tool/library for the Launchpad MK2

License:MIT License


Languages

Language:Rust 100.0%