Skip to content

taylordotfish/ncc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ncc

ncc compiles text-based configuration files into custom modes for Novation MIDI devices.

The behavior and appearance of controls on the device are specified using TOML files, which are then compiled by ncc into MIDI SysEx messages that can be sent to the hardware to apply the custom mode.

ncc is not affiliated with Novation or its parent, Focusrite plc.

Supported devices

  • Launchkey [MK3]: full support
  • Launchkey Mini [MK3]: full support, tested1
  • FLkey: full support
  • FLkey Mini: full support
  • Launchpad X: full support, tested1
  • Launchpad Mini [MK3]: full support

Installation

Ensure Rust is installed. The latest version is highly recommended; versions as old as 1.74 are technically supported, but they may require additional configuration.

Then, install with Cargo:

cargo install ncc

This will install a binary named ncc in ~/.cargo/bin. If that directory is in your PATH, you can run the program simply by typing ncc in your shell:

$ ncc --version
ncc 0.1.4
Troubleshooting older Rust versions

If you’re using an older version of Rust, installation may fail with an error like “X cannot be built because it requires rustc Y or newer”. In that case, run this command instead:

cargo install ncc --locked

However, this will use outdated versions of ncc’s dependencies, so upgrading to the latest version of Rust is recommended.


Manual installation

To compile and install ncc manually, ensure the following dependencies are installed:

  • Rust 1.74 or later (latest version recommended)
  • Git

Download the source code:

git clone https://github.com/taylordotfish/ncc
cd ncc

Build and install the program:

cargo install --path .
Troubleshooting older Rust versions

If you’re using Rust 1.83 or earlier, installation may fail with an error like “X cannot be built because it requires rustc Y or newer”. In this case, run this command instead:

cargo install --path . --locked

However, this will use outdated versions of ncc’s dependencies, so upgrading to at least Rust 1.84 is recommended.


Alternatively, you can build and run ncc locally without installing:

$ cargo update  # recommended if on Rust >= 1.84
$ cargo build --release
$ ./target/release/ncc --version
ncc 0.1.4

Usage

See ncc --help for detailed usage information. The simplest use of ncc is ncc <file>, which compiles the TOML file <file> into a SysEx file with the same name but ending in .syx:

$ cd examples/launchkey-mini-mk3
$ ls example-pads*
example-pads.toml
$ ncc example-pads.toml
$ ls example-pads*
example-pads.toml  example-pads.syx

See the examples directory for a demonstration of how to write custom modes for ncc.

Installing custom modes

To install custom modes on your device, the compiled .syx file needs to be sent to the device as MIDI (and the response from the device must be read). The way to do this depends on your operating system. A guide is available for GNU/Linux systems using ALSA.

License

ncc is licensed under version 3 of the GNU Affero General Public License, or (at your option) any later version. See LICENSE.

The example .toml files in the examples directory have additionally been released to the public domain using CC0.

Contributing

Pull requests are welcome. By contributing to ncc, you agree that your contribution may be used under the terms of ncc’s license.

Footnotes

  1. Tested on real hardware. 2

About

Compiler for custom modes on Novation MIDI devices—libre alternative to Components

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors