Skip to content

olyashok/lumibridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LUMI Bridge

LUMI Bridge is a small native helper for ROLI LUMI Keys BLOCK devices. It exposes virtual MIDI ports for apps that want normal note input and per-key light output, while handling the LUMI-specific BLOCKS protocol internally.

Features

  • Creates LUMI Keys as a virtual MIDI source for key input.
  • Creates LUMI Lights as a virtual MIDI destination for light output.
  • Connects to the physical LUMI Keys BLOCK MIDI input/output pair.
  • Detects one or more LUMI Keys BLOCKs through BLOCKS topology messages.
  • Starts and maintains BLOCKS API mode.
  • Loads bundled Littlefoot bytecode into each LUMI heap.
  • Runs a multi-color startup scan across connected blocks.
  • Maps each connected LUMI to its own note range.
  • Can light physically pressed keys locally while forwarding MIDI input.
  • Converts app MIDI note events into per-key RGB565 light frames.
  • Blinks repeated note-on events so repeated notes are visible.

Build

cargo build --release

The binary is created at:

target/release/lumi-bridge

Run

target/release/lumi-bridge

By default the bridge is quiet, terminates another running lumi-bridge instance before opening MIDI ports, and leaves physical key lighting to the app connected to LUMI Lights.

Useful options:

target/release/lumi-bridge --local-light
target/release/lumi-bridge --verbose
target/release/lumi-bridge --no-scan
target/release/lumi-bridge --no-kill

Then select these ports in your MIDI app:

  • Input: LUMI Keys
  • Light/output destination: LUMI Lights

Configuration

On first run, the bridge writes a settings file:

  • macOS: ~/Library/Application Support/LUMI Bridge/settings.json
  • Linux: $XDG_CONFIG_HOME/lumi-bridge/settings.json or ~/.config/lumi-bridge/settings.json
  • Windows: %APPDATA%/LUMI Bridge/settings.json

You can also choose a config path explicitly:

LUMI_BRIDGE_SETTINGS=/path/to/settings.json target/release/lumi-bridge

Example:

{
  "lumi_port": "LUMI Keys BLOCK",
  "input_port": "LUMI Keys",
  "lights_port": "LUMI Lights",
  "base_note": 36,
  "key_count": 24,
  "block_span": 24,
  "serial_order": []
}

For two LUMIs, set serial_order to control left-to-right block assignment. The first serial gets base_note; the second gets base_note + block_span.

Test

cargo test

License

MIT. See LICENSE and NOTICE.md.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages