feat: Add support for Launchpad MK1 (MIDI 1.0) #17
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

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).