Skip to content

Conversation

@sapphicdisaster
Copy link

kia ora (hello)!
this pr adds support for the original Novation Launchpad (MK1), which uses the MIDI 1.0 protocol. I've tested extensively with my own mk1 with some optional value adds - including debug, mapping, and possible ability for canvas integration.

Overview:
The core of this change is the introduction of the launchpad_midi_1 module.
This module completely addresses the specific input and output logic required for the Launchpad MK1. Note that it's MIDI interface is markedly slower than the newer launchpads so it can't handle fast commands or pwn, and I added some debug functionality too.

Here's a summary of the key changes:

  • src/launchpad_midi_1/: New directory containing the imple mentation for theLaunchpad MK1.
    * input.rs: Handles MIDI input from the device, translating MIDI messages into launchy's internal message format.
    * output.rs: Handles MIDI output to the device, allowing for button LEDs to be controlled.
    * mod.rs: Defines the launchpad_midi_1 module and its components.
    * README.md: Provides a brief overview of the module.
  • src/lib.rs:
    * The launchpad_midi_1 module is now publicly exported as midi1, making it accessible to users of the library.
  • src/midi_io.rs:
    * Added log::debug statements to assist with debugging MIDI device discovery and connection issues.
  • src/protocols/mod.rs:
    * Added is_main_grid_button, is_top_control_button, and is_scene_launch_button helper methods to the Button80 enum to provide more convenient button classification. NOTE this is optional but i found it useful to avoid confusion with mapping.
  • README.md:
    * Updated the "Supported devices" section to include the Launchpad (MK1).

Copy link
Owner

@kangalio kangalio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for your work!

@kangalio
Copy link
Owner

Thanks! When I do a quick check locally, it fails:

image

Are you sure you set up the dependencies correctly? Or is this an issue on my end?

@sapphicdisaster
Copy link
Author

Ah, I hadn't committed the changed cargo requirements bc i wasn't certain if you wanted to merge in my debug statements or leave them out of the commit, I'll unstash it!

Add `log` as a dependency and `env_logger` as a dev-dependency to enable logging in the library and examples.
@sapphicdisaster
Copy link
Author

if its helpful i can also do a pr for an example with the mk1, i made a few demos to test it (tetris visualiser?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants