Maschine

This crate for interacting with a Native Instruments Maschine interface over USB.

These devices have a large number of buttons, velocity sensitive pads, rotary encoder and Dot-matrix LCD.

Currently, only the Maschine Mikro mk2 is supported.

Usage

Example

```rust extern crate hidapi;

use hidapi::HidApi; use maschine::{get_device, Canvas, Colour, Controller, Event, EventContext, EventTask};

fn main() { let hidapi = HidApi::new().unwrap(); let mut ctlr = getdevice(&hid_api).unwrap();

loop {
    // Allow controller to do work and update any events
    let mut context = EventContext::new();
    ctlr.tick(&mut context).unwrap();

    // Handle any generated events
    while !context.events.is_empty() {
        let event = context.events.pop_front().unwrap();
        match event {
            Event::Button(button, pressed, shift) => {
                if pressed {
                    // If button is pressed assign it a random colour
                    ctlr.set_button_led(button, Colour::random());
                    println!("{:?}", button);
                } else {
                    // Turn the LED off on release.
                    ctlr.set_button_led(button, Colour::BLACK);
                }
            }
            // Print out other events
            _ => println!("{:?}", event),
        }
    }
}

}

```