kangalio / launchy Goto Github PK
View Code? Open in Web Editor NEWAn exhaustive Rust API for the Novation Launchpad devices, optimized for maximum expressiveness and minimum boilerplate!
License: MIT License
An exhaustive Rust API for the Novation Launchpad devices, optimized for maximum expressiveness and minimum boilerplate!
License: MIT License
The crate hasn't been updated and doesn't contain support for LP mini. Could it please be updated to the newest stable version?
Hi, I'm Erwann, just an IT student.
I happen to own a Launchpad Pro (1st gen) and am willing to contribute.
I'm going to fork the repo and fiddle with it, as I need the Pro support anyways, but if you want I could make a PR.
See you around.
I switch between a number of editors, but one of them is VSCode which attempts to watch all non-ignored files for changes. Without a .gitignore, this includes all the files in the target directory, so it watches all dependency files for changes as well. Additionally, tools like rg
use the gitignore to ignore what files to search, otherwise I continuously find results when looking for text in target/rls/debug/deps/save-analysis/launchy-b1e0490dd979d0b7.json
.
Would it be possible to add a basic .gitignore so at least the target directory (and hopefully Cargo.lock) can be ignored? These are files which should never be committed to the repo, so it makes sense to have them be gitignored.
I'm opening this issue to start the discussion since when I accidentally added it in the Launchpad Mini PR, you ended up reverting that change in your lp-mini branch, so I assume you have a reason for not wanting to have one.
Would love to add (even if just partial) support for the Launchpad Mini Mk3.
Using this issue to document my findings so far & any progress.
As per the manual the device has two operational modes: "Live" & "Programmer".
In order to get the device to input & output proper midi, one must:
Session
button for 3 secondsStop Solo Mute
button to enter "Programmer"-modeTo undo, either reboot/replug your device, or:
Session
button for 3 seconds>
button (above Stop Solo Mute
) to enter "Live"-mode (made for Ableton Live specifically)In addition to the above I discovered the device exposes two midi devices:
It appears the Launchpad Mini MK3 LPMiniMK3 MI
does the magic. The DA
variant I have yet to figure out what its for lol
A patched version (so far but still in progress) can be found on my temporary fork at lucemans/launchy.
Hope this helps! And I will keep you updated!
The following program fails to compile against the lp-mini branch:
use launchy::prelude::*;
use launchy::mini::{Input, Output, Color, Button};
fn main() -> anyhow::Result<()> {
let mut output = Output::guess()?;
for i in 0..4 {
for j in 0..4 {
output.light(Button::GridButton { x: i, y: j }, Color::new(i, j))?;
}
}
Ok(())
}
Here is an excerpt of the compilation error:
error[E0277]: `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
--> src/main.rs:9:39
|
9 | let input = Input::guess_polling()?;
| ^ `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
|
= help: within `MidiError`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq`
= note: required because it appears within the type `alsa::seq::Seq`
= note: required because it appears within the type `Option<alsa::seq::Seq>`
= note: required because it appears within the type `midir::backend::alsa::MidiInput`
= note: required because it appears within the type `midir::common::MidiInput`
= note: required because it appears within the type `midir::errors::ConnectError<midir::common::MidiInput>`
= note: required because it appears within the type `MidiError`
= note: required because of the requirements on the impl of `From<MidiError>` for `anyhow::Error`
= note: required by `from`
error[E0277]: `Cell<bool>` cannot be shared between threads safely
--> src/main.rs:9:39
|
9 | let input = Input::guess_polling()?;
| ^ `Cell<bool>` cannot be shared between threads safely
|
= help: within `MidiError`, the trait `Sync` is not implemented for `Cell<bool>`
= note: required because it appears within the type `alsa::seq::Seq`
= note: required because it appears within the type `Option<alsa::seq::Seq>`
= note: required because it appears within the type `midir::backend::alsa::MidiInput`
= note: required because it appears within the type `midir::common::MidiInput`
= note: required because it appears within the type `midir::errors::ConnectError<midir::common::MidiInput>`
= note: required because it appears within the type `MidiError`
= note: required because of the requirements on the impl of `From<MidiError>` for `anyhow::Error`
= note: required by `from`
...
error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0277`.
error: could not compile `lp-control`
To learn more, run the command again with --verbose.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.