Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/brenekh/etc-express-midi
Rust library to control the ETC Express lighting console using MIDI commands.
https://github.com/brenekh/etc-express-midi
crate electronic-theatre-controls etc etc-express lighting-console midi midi-show-control rust rust-crate rust-lang rust-library
Last synced: about 1 month ago
JSON representation
Rust library to control the ETC Express lighting console using MIDI commands.
- Host: GitHub
- URL: https://github.com/brenekh/etc-express-midi
- Owner: BrenekH
- License: mit
- Created: 2023-05-09T05:22:59.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-08-02T22:33:31.000Z (over 1 year ago)
- Last Synced: 2024-10-31T12:13:23.363Z (3 months ago)
- Topics: crate, electronic-theatre-controls, etc, etc-express, lighting-console, midi, midi-show-control, rust, rust-crate, rust-lang, rust-library
- Language: Rust
- Homepage: https://docs.rs/etc-express-midi
- Size: 53.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ETC Express MIDI
![Crates.io](https://img.shields.io/crates/v/etc-express-midi)
![docs.rs](https://img.shields.io/docsrs/etc-express-midi)Rust library to control the [ETC Express](https://www.etcconnect.com/Products/Legacy/Console/Others/Express/Support-Articles.aspx) lighting console using MIDI commands.
This library contains 2 methods of interacting with the Express console:
- [Method 1](ConsoleETCMidi) uses MIDI instrument commands to interact with the cue and macro functionality
of the Express.
Any USB to MIDI adapter should work with this method.- [Method 2](ConsoleMSC) uses MIDI Show Control to operate the Express.
This method requires a MIDI adapter that passes [SysEx](https://en.wikipedia.org/wiki/MIDI#System_Exclusive_messages) commands.## Examples
### ETC MIDI
```rust
use etc_express_midi::{MidiOutput, ConsoleETCMidi, FaderPair};fn main() -> Result<(), Box> {
let midi_client = MidiOutput::new("ETC MIDI Example")?;
let midi_ports = midi_client.ports();let midi_port_index = 0; // The index of the desired controller
let midi_conn = midi_client.connect(&(midi_ports[midi_port_index]), "Example Output")?;let express_midi_channel = 1;
let mut express_console = ConsoleETCMidi::new(midi_conn, express_midi_channel);// Execute the next cue in the CD fader pair
express_console.go(FaderPair::CD)?;Ok(())
}
```### MIDI Show Control
```rust
use etc_express_midi::{MidiOutput, ConsoleMSC, FaderPair};fn main() -> Result<(), Box> {
let midi_client = MidiOutput::new("ETC MSC Example")?;
let midi_ports = midi_client.ports();let midi_port_index = 0; // The index of the desired controller
let midi_conn = midi_client.connect(&(midi_ports[midi_port_index]), "Example Output")?;let msc_device_id = 1;
let mut express_console = ConsoleMSC::new(midi_conn, msc_device_id);// Execute the next cue in the CD fader pair
express_console.go(FaderPair::CD)?;Ok(())
}
```