Package Exports
- midi-grid
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (midi-grid) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
midi-grid
Map a duplex midi stream to observable input and output value grids.
For modelling grid midi controllers such as the Launchpad.
Install via npm
$ npm install midi-gridAPI
var MidiGrid = require('midi-grid')var midiGrid = MidiGrid(duplexMidiStream, mapping[, outputGrid])
Create an observable instance of MidiGrid.
Pass in a duplexMidiStream such as web-midi or midi-stream.
mapping is an array-grid containing the midi to map (e.g. "144/36").
Optionally pass in outputGrid - an observable grid for setting output values as observ-grid or observ-grid-stack for layering grids.
// observe Novation Launchpad button grid
var MidiStream = require('midi-stream')
var duplexPort = MidiStream('Launchpad Mini')
var mapping = ArrayGrid([], [8,8])
for (var r=0;r<8;r++){
for (var c=0;c<8;c++){
var launchpadButtonId = (r * 16) + c
mapping.set(r, c, '144/' + launchpadButtonId)
}
}
var launchpad = MidiGrid(duplexPort, mapping)
launchpad(function(grid){
// grid is an immutable instance of ArrayGrid with coords mapped to current values
if (grid._diff){
var coords = grid._diff[0]
var key = coords[0] + '/' + coords[1]
var value = grid._diff[2]
if (value){
triggerOn(coords, value)
// turn on light
launchpad.set(coords[0], coords[1], 127)
} else {
triggerOff(coords)
// turn off light
launchpad.set(coords[0], coords[1], 0)
}
}
})midiGrid.get(row, col)
Get the current input value of the given coordinates.
midiGrid.set(row, col, value)
Alias for output.set(row, col, value). Sets the output value at the given coordinates.
midiGrid.resend()
Resend all the current output values. Use if you switch the output device and want to resend all state.
midiGrid.midiStream (Duplex Stream)
This midi stream is connected to the constructor duplexPort if specified, otherwise it can be manually piped to and from a midi device.
Observable Attributes
midiGrid
Notifies when any input value changes (e.g. a button is pressed/released).
midiGrid.output (ObservGrid or custom observ passed to ctor)
Notifies when any output value changes (e.g. light up button). Set output values using midiGrid.output.set(row, col, val) or use the alias midiGrid.set.