node-novation
Node.js interface for Novation Launchkey Mini and Launchpad Mini controllers.
This library currently supports the following controllers:
- Launchkey Mini Mk2
- Launchpad Mini Mk3
What does this library do?
This library supports the following interactions with Novation controllers:
- Sending and receiving MIDI messages
- Controlling LEDs
- Enabling extended mode (InControl) on Launchkey Mini Mk2 controllers
- Setting modes (e.g. DAW mode) and selecting layouts (e.g. Session layout) on Launchpad Mk3 controllers
Installation
yarn add @vliegwerk/novation
or
npm install @vliegwerk/novation --save
Basic usage
The following code can be used to initialize and connect to a Launchkey controller:
const { Launchkey } = require('@vliegwerk/novation')
const controller = new Launchkey()
controller.connect()
Similarly, you can use the following code for a Launchpad controller:
const { Launchpad } = require('@vliegwerk/novation')
const controller = new Launchpad()
controller.connect()
This code creates a new Launchkey
or Launchpad
instance which depends on the midi library for sending and receiving MIDI messages, and the @lachenmayer/midi-messages library for encoding and decoding these MIDI messages.
The Launchkey
and Launchpad
classes emit an event whenever a MIDI message is received or when some error has occured. For instance, to listen for the keys pressed on a Launchkey controller:
const { Launchkey } = require('@vliegwerk/novation')
const controller = new Launchkey()
controller.on('connected', () => {
controller.on('NoteOn', (message) => {
console.log('NoteOn event:',message)
})
}
controller.on('error', (err) => {
console.error('Error occured:', err)
})
controller.connect()
The argument of the event listener contains a JSON version of the MIDI message sent by the controller. For example:
{
type: 'NoteOn',
channel: 1,
note: 60,
velocity: 34,
port: 'Launchkey Mini LK Mini MIDI'
}
For more examples, see the examples
folder in the node-novation repository on GitHub. Check out these examples to find out how to send messages to the controller to control LEDs, modes, and layouts.
Extras
- See the License file for license rights and limitations (MIT).
- Pull Requests are welcome!