nbn is suppported for both MacOS and Raspberry Pi (tested from Raspberry Pi 4 and up). Extra the zip-package that corresponds with your platform and run the executable.
When running nbn for the first time you'll be prompted with a few questions to set up your configuration. It might look something like this (depending on your connected hardware):
│
· • ┌┐├┐┌┐ • ·
─ ─ ─ ─┘│└┘│└─ ─ ─ ─
─ ─ ─┐│┌┐│┌─ ─ ─
└┘├┘└┘
│
nbn - v1.0.0
-----------------------------------------------
[?] 14:48:15 Locating project directory: default.proj
[?] 14:48:15 Project directory/file did not exist. Creating a new project.
[?] 14:48:15 Locating config file: default.proj/config.json
[?] 14:48:15 Config file did not exist. Creating empty config file.
Looks like you don't have a configuration in place. This wizard will walk you through the steps to create a configuration file. Please make sure all your Midi devices are connected and powered on.
This configuration will be saved in config.json and can be edited by an external editor.
-----------------------------------------------
You can connect up to 2 output devices for midi playback.
Available output ports:
[0] IAC Driver Bus 1
[1] Launchpad X LPX DAW In
[2] Launchpad X LPX MIDI In
[3] Roland SH-4d
Please enter the number for Midi Playback device #1:
nbn can connect up to 2 playback devices (1 on lite). A playback device can be anything that supports Midi in; this can be either an instrument (like a synthesizer, drumcomputer, groovebox, etc.) that you can daisy-chain with multiple devices using Midi thru, or a dedicated Midi host.
Please note that since this is software, only the Midi devices connected to the computer can be found. In most cases this will only be USB Midi (which is fine), but if you need DIN Midi, you'll need a dedicated USB Midi host.
In the first step of the configuration, type the number of your first playback device. Once you've done that, you'll be prompted for the second playback device:
Please enter the number for Midi Playback device #1:
0
Selected: IAC Driver Bus 1
Please enter the number for Midi Playback device #2, or press enter for None:
The second playback device is optional. If you don't have one, simply press enter:
Please enter the number for Midi Playback device #2, or press enter for None:
3
Selected: Roland SH-4d
-----------------------------------------------
Creating config.json...
Done!
Done! That's it! You're all set up! The next time you'll start nbn the configuration file of your project will be loaded and you're good to go. See configuration for more details on how to configure nbn to your needs.
These are the command-line arguments you can use for nbn:
--project-dir
Start nbn with this argument to load a different project. Please note that each project comes with it's own configuration file, so if you start a new project you need to run through the configuration wizard again for this specific project.
nbn --project-dir=example.proj
The configuration is stored in a config.json file in your project's directory (by default this will be default.proj). If it doesn't exist, the App will ask you some
questions and create a configuration file on boot. Please make sure that you have your Midi devices
connected when booting the App for the first time.
The config.json file can simply be edited to fit your needs:
{
"playback_output_name_1": "SH-4d", // Name of playback device #1 *
"playback_output_name_2": "None", // Name of playback device #2 *
"pc_config": [ // Program Change configuration (4 times)
{
"group": 0, // The group index (don't change this)
"channel": 0, // The channel used for the PC message
"mode": 0 // Program Change mode (see "Program Selector")
}
],
"track_config": [ // Per-track configuration block
{
"track_index": 0, // The index of this track in the step sequencer
"midi_channel": 14, // The midi channel for this track *
"color": "Red", // The color of this track (step editor)
"default_note": { // The default note (when adding a new step)
"note": 36, // Default note byte (60=middle C)
"velocity": 100, // Default velocity (0-127)
"length": 12, // Default length in pulses (24 pulses = 1 step)
"nudge": 0 // Default nudge (-23 - +23)
},
"is_poly": true, // Determines if the track is polyphonic or not
"pattern_change_group": 0, // The pattern change group (0-3)
"c1_cc": 1, // Control Change number 1
"c2_cc": 2, // Control Change number 2
"c3_cc": 3, // Control Change number 3
"c4_cc": 4 // Control Change number 4
},
// (31 times more, 1 for each track *)
]
}
*: See "Midi channels and multiple devices" for more details.
You can connect up to two midi devices for playback. This will be asked during the configuration process.
Please note that the midi_channel in config.json is 0-indexed. This means that midi_channel 0 will map to Midi Channel 1 on your device (assuming the first Midi Channel on the device is "1").
The midi channels for the second playback device will be set by adding 16 to it.
So to summarize:
midi_channel 0-15 will be mapped to playback device #1, Midi Channel 1-16
midi_channel 0 is Midi Channel 1 on playback device #1midi_channel 6 is Midi Channel 7 on playback device #1midi_channel 15 is Midi Channel 16 on playback device #1midi_channel 16-31 will be mapped to playback device #2, Midi Channel 1-16 (after subtracting 16)
midi_channel 16 is Midi Channel 1 on playback device #2midi_channel 25 is Midi Channel 10 on playback device #2midi_channel 31 is Midi Channel 16 on playback device #2Each track can be assigned to a pattern change group. The pattern change group is used to send the Program Change message (PC) to the correct device. Currently this only happens when switching a scene for all tracks, but in the future you might be able to mix-and-match Scenes in order to do Scene transitions.
The controller is a 8x8 grid, with a row of buttons on the top, and a column of buttons on the side. The grid itself represents step 1 - 64. It uses the following global layout:
[ up ] [ down ] [ left ] [ rght ] [ sseq ] [ mtrx ] [ song ] [ scen ] ( bpm )
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ shft ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ copy ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ pste ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ undo ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ keyb ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ fill ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ trns ]
[shft]-button allows for functionality depending on in which screen you are.In the Step Sequencer every step in the grid represents a step of the current track. (max 64 steps).
[up] and [down] buttons can be used to scroll throught the tracks.[left] and [right] buttons can be used to navigate through the patterns for this track. Note that this does not queue the pattern you're navigating to. If you want to navigate + queue, hold down the [shft]-button when pressing [left] or [right].[mtrx] button and pressing step 1-32 to select track 1-32.Tapping a step will add a new step, or remove an existing step. When a new step is added, the default note from the configuration is used.
[undo] button brings the track back in the state as it was when the track was opened. This state gets reset each time you switch tracks or go to a different screen. You can also hold down [undo] to overwrite the "undo"-buffer with the current state of the track.[copy] and [pste] buttons[copy] button performs a copy action. To perform a "cut" action, hold down the [copy] button. The 3 buttons will briefly blink red to indicate that the step has been cut. Please note that a "cut" action will overwrite the "undo" buffer. So after you've cut the entire track, pressing [undo] will bring the track back as right before the "cut" action. This does not apply when cutting a single step.[copy] and [pste] buttons (cut/copy in one track, paste in the other)[shft]-button and while holding it, select a start- and end step for your range. When the range is highlighted, you can use the [copy] button for this selection. To paste it, hold down the start step for your range and press [pste].When holding down a Step button, the step editor becomes visible for that step:
[ V ] [ L ] [ N ] [ T ] [ C1] [ C2] [ C3] [ C4] // Step/note property to edit
[ - ] [ ] [ ] [ ] [ ] [ ] [ ] [ + ] // Amount slider, or extra options (it depends...)
[ - ] [ C#] [ D#] [ ! ] [ F#] [ G#] [ A#] [ + ] // On-screen keyboard row #1 (for notes)
[ C ] [ D ] [ E ] [ F ] [ G ] [ A ] [ B ] [ C ] // On-screen keyboard row #2 (for notes)
You start by editing a step be selecting which property you want to edit:
[V] : Velocity (default). per note[L] : Length, per note
[N] : Nudge, per note[T] : Trigg condition, per step[-]/[+], or quickly setting a value by tapping any of the buttons between.[C1] - [C4] : Control Change values, per step. Please note that setting a CC value to 0 is not the same as removing it. Setting it to 0 will litterally send the value "0" for your control change. To remove the CC value, press the red button on the bottom left in the CC editor.Only 1 step can be edited at the time in the step editor.
The [up] and [down] keys can also be used to transpose the notes in the current step. Please note that all notes in the step will be transposed, not just the selected one.
Some properties are per note, some are per step. For the properties that are per note, the on-screen keyboard is shown:
[ - ] [ C#] [ D#] [ ! ] [ F#] [ G#] [ A#] [ + ] // On-screen keyboard row #1 (for notes)
[ C ] [ D ] [ E ] [ F ] [ G ] [ A ] [ B ] [ C ] // On-screen keyboard row #2 (for notes)
Keys:
[Notes (C,C#,D,etc)]: Add, select or remove a note: when no note is present, it adds the default note (with the default values from the configuration). If a note is present, it gets selected. To delete a note, hold the note. The keyboard will briefly blink red once the note is removed.
[-]/[+] : Lower / raise octave[!] : Set currently selected note as new default note (temporary, will not overwrite configuration)Other properties are per step, such as the trigg conditions or CC values. Those will not shown the on-screen keyboard.
Trigg conditions are cool. And the following layout is used when this option is selected:
[ V ] [ L ] [ N ] [ T ] [ C1] [ C2] [ C3] [ C4] // Step/note property to edit
[1st] [Pre] [Nei] [Fil] [Trn] [Pct] [Mod] [ ] // Amount slider, or extra options (it depends...)
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] // Only used for percent and Modulo
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] // Only used for Modulo
[1st] : This step will only be played the first time this track is played[Pre] : This step will only be played if a previous trigg condition has been met. See the example below[Nei] : This step will only be played if the step in the track above this track has a trigg condition that has been met. See the example below.[Fil] : This step will only be played if the [fill]-button is held down. If you hold down the [fill]-button, it latches. Tapping it again unlatches it.[Trn] : This step will only be played when we're transitioning to another pattern (e.g. queueing another pattern, see "track/pattern matrix")[Pct] : This step will only be played n% of the time, where n can be set using the amount slider.[Mod] : This step will only be played if the modulo of r and y is x, where r is the number of times the track has played. x and y can be set with the lower two rows (See the example below)Trigg conditions can be enabled by pressing the button. The button will then be white. Tapping the button twice will invert the trigg condition; so they we will do the opposite. For example: Pressing [1st] once, will only trigger that step the first time the track is played. But pressing it twice, it will have the inversed effect: it will not trigger the first time the track is played, but it will trigger every other time. The [Pct] trigg condition does not have an inverse option, because that would not make sense (just change the percentage if you want to have the inverted value of 75% bruh!)
Steps that have trigg conditions will be shown in the step editor by a pulsating color on the button, so you know there is a trigg condition active on that step.
[Pre] ExampleLet's say we have the following steps in the step sequencer:
[ ] [ % ] [ * ] [ P ]
[ % ] is a step with a change of 25% to trigg.[ * ] is a default step without a trigg condition, it will always play[ P ] is a step with the [Pre]-trigg conditionIn this setup, the [ P ]-step will only trigger if the previous trigg (the 25% trigg) is trigged. This way you can have some randomness, and still have other triggers act on it.
Please note, that this can chain:
[ ] [ %1 ] [ * ] [ P1 ] [ ] [ P2 ] [ %2 ] [ P3 ]
In this example, if %1 is trigged, P1 is trigged. But: because P1 is trigged, P2 will also be trigged (so P2 has nothing to do with the chance of %1). Then, if %2 is not trigged, P3 will also not be trigged.
You can also play with inverses:
[ ] [ % ] [ * ] [ P1 ] [ !P2 ]
If % is trigged, P1 will be trigged as well, but P2 will not be trigged (because P1 was trigged, and P2 will only be trigged if the previous trigg condition was not trigged). But: if % is not trigged, then P1 will not be trigged - and because of that P2 will be trigged (because the previous trigg condition (P1) did not cause a step to be trigged).
[Nei] ExampleLet's say we have the following steps in the step sequencer on track #1, track #2 and track #3:
Track #1: [ ] [ %1 ] [ %2 ] [ %3 ]
Track #2: [ ] [ N ] [ N ] [ ]
Track #3: [ ] [ !N ] [ N ] [ N ]
[ % ] is a step with a change of 25% to trigg.[ N ] is a step with the [Nei]-trigg condition[ !N] is a step with the inversed (not) [Nei]-trigg conditionIf %1 is triggered in track #1, the corresponding step in track #2 will play as well. Since the step in track 3 is inversed, it will not be triggered. However, if %1 is not triggered, then the corresponding step in track #2 will not play, but since that one is not triggered, the corresponding step in track #3 is triggered. So note that the !N in track #3 relates to the trigg condition in track #2; it is not acting on the trigg condition in track #1.
If %2 is triggered in track #1, the corresponding step in track #2 will play as well. And because that step is triggered, the corresponding step in track #3 will also play. It's a chain reaction of triggers.
If %3 is triggered in track #1, The step in track #3 will not be triggered, because a Nei trigg condition only listens to the track directly above it. Basically it doesn't make sense to have a Nei trigg condition with an empty step above it, but this example shows it clearly.
[Mod] ExampleWhen the modulo is setup like this:
[ * ] [ * ] [ ] [ ] [ ] [ ] [ ] [ ] // X=2
[ * ] [ * ] [ * ] [ * ] [ ] [ ] [ ] [ ] // Y=4
We see that x=2 and y=4. Which basically means: "every 4 times this track has played, I only want to trigger this step the 2nd time".
Holding down the [sseq] button will show the track length editor, where you can use step button 1-64 to set the desired length for the current track (max 64 steps).
Holding down [shft] and tapping the [sseq] button will show the track options, where you can change the following properties for the track:
This is the layout:
[ up ] [ down ] [ left ] [ rght ] [ sseq ] [ mtrx ] [ song ] [ scen ] ( bpm )
[ ** ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ shft ] // track repeat count
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ copy ] // playback speed
[ - ] [ ] [ ] [ ] [ ] [ ] [ ] [ + ] [ pste ] // shuffle amount
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ undo ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ keyb ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ fill ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ trns ] A track can be repeated up to 8 times. This is used when the next pattern, scene or arrangement is queued.
You can set the playback speed to one of 8 options: 1/8, 1/6, 1/4, 1/3, 1/2, 1/1, 2/1, 4/1.
When the playback speed is lowered, the resolution of the Midi pulses is lowered as well. This affects how fine-grained you can nudge notes. It also affects live recording. When the speed is increased, the resolution is spread out over multiple steps. You can set the playback speed to any of the following options, with the respective Midi pulses / resolution per step:
The sequencer is track/pattern independent. This means that you can mix and match tracks and patterns within a scene. For example: track 1 can play pattern 1, while track 2 can play pattern 2.
This can be controlled in the track/pattern matrix. Each row represents a track, and each column a pattern. The arrow keys can be used to navigate through the different pages (32 tracks and 16 patterns makes for a total 8 pages (4 on the Y-axis, 2 on the X-axis)).
When choosing a different pattern for a track, you're queueing it. This is indicated by a pulsating button. If you want to skip the queue, tap it again to immediately jump to that pattern. If you want to queue a pattern for ALL tracks (let's say you want to queue pattern 3 for all tracks), hold down the [shft]-button when tapping on a step.
To know how "far" a track is with playing, the background of each track also doubles as a dimmed indicator to show the progress of the track.
You can swap around patterns for an individual track by holding down the button of the track/pattern you want to swap, and pressing the [left] and [right] buttons to swap the track with the patterns next to it.
In the song editor, you can chain different arrangements after each other. An arrangement is a combination of patterns and tracks as they are setup in the Track/Pattern Matrix, together with some other conditions, like how many time the arrangement loops before it goes to the next arrangement. A scene can have only 1 song like this, but it can have multiple arrangements.
This is the layout:
[ up ] [ down ] [ left ] [ rght ] [ sseq ] [ mtrx ] [ song ] [ scen ] ( bpm )
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ shft ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ copy ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ pste ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ undo ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ keyb ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ fill ]
[ ** ] [ ** ] [ ** ] [ ** ] [ ** ] [ ** ] [ ** ] [ ** ] [ trns ]
[ ** ] is where the playhead currently is. This will move like a progress indicator to show how far the current arrangement is.[up] and [down] buttons can be used to set the track in a "playing" ([up]) or "looping" ([down]) state. The default for new arrangements is "looping".
[left] and [rght] button can be used to paginate through the different pages of arrangements. If one if these buttons is blinking, it means that the currently playing arrangement is before or after the current page.[shft] and press [left] or [rght] to swap the two arrangements. This can also be repeated to move an arrangement around (e.g. move from left to right)[copy] button on arrangement X, and use the [pste] button in arrangement Y.[copy] to delete the current arrangement.[undo] to restore your last cut/copy/paste action.The length of the arrangement is determined by 2 factors:
[song] button and pressing step 1-64 to set the repeat count to 1 or 64.The scene selector offers a very simple way to switch to another scene. Just press one of any of the 64 steps buttons to transition to that scene. The track length if the first track will be used as the length the finish the scene.
The colors of the buttons will indicate the scene status:
Holding down the [shft] button and pressing the scene selector button opens the Program Selector. Here you can set which Program Change (PC) message needs to be sent when this scene starts playing.
This is the layout:
[ up ] [ down ] [ left ] [ rght ] [ sseq ] [ mtrx ] [ song ] [ scen ] ( bpm )
[ G1 ] [ G2 ] [ G3 ] [ G4 ] [ ] [ ] [ ] [ none ] [ shft ]
[ B1 ] [ B2 ] [ B3 ] [ B4 ] [ B5 ] [ B6 ] [ B7 ] [ B8 ] [ copy ]
[ P1 ] [ P2 ] [ P3 ] [ P4 ] [ P5 ] [ P6 ] [ P7 ] [ P8 ] [ pste ]
[ P9 ] [ P10 ] [ P11 ] [ P12 ] [ P13 ] [ P14 ] [ P15 ] [ P16 ] [ undo ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ keyb ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ fill ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ trns ]
Since various devices handle PC messages differently, you can configure a mode in the config.json file to set the proper mode for your Midi Program Change message. The following modes are available:
(bank * 16) + pattern (e.g.: bank 1, pattern 1 = 0x00, bank 2, pattern 3 = 0x12, etc.)(bank * 8) + pattern (e.g.: bank 1, pattern 1 = 0x00, bank 2, pattern 3 = 0x0B, etc.)When tapping the [keyb]-button, an on-screen keyboard appears for live playing:
[ up ] [ down ] [ left ] [ rght ] [ sseq ] [ mtrx ] [ song ] [ scen ] ( bpm )
[ - ] [ V1 ] [ V2 ] [ V3 ] [ V4 ] [ V5 ] [ V6 ] [ + ] [ shft ] // velocity bar
[ ] [ ] [ ] [ ] [ ] [ ] [ sens ] [ quan ] [ copy ]
[ ] [ C#3 ] [ D#3 ] [ ] [ F#3 ] [ G#3 ] [ A#3 ] [ ] [ pste ]
[ C3 ] [ D3 ] [ E3 ] [ F3 ] [ G3 ] [ A3 ] [ B3 ] [ C4 ] [ undo ] // base octave + 1
[ ] [ C#2 ] [ D#2 ] [ ] [ F#2 ] [ G#2 ] [ A#2 ] [ ] [ ]
[ C2 ] [ D2 ] [ E2 ] [ F2 ] [ G2 ] [ A2 ] [ B2 ] [ C3 ] [ keyb ] // base octave
[ ] [ C#1 ] [ D#1 ] [ ] [ F#1 ] [ G#1 ] [ A#1 ] [ ] [ fill ]
[ C1 ] [ D1 ] [ E1 ] [ F1 ] [ G1 ] [ A1 ] [ B1 ] [ C2 ] [ trns ] // base octave - 1
There are 3 octaves simultaniously available; the middle one will be the base octave, decided by the default note configured for this track. The [up] and [down] button allow you to shift in octaves.
The [V1] to [V6] button can be used to set a different velocity. The default value will be the velocity set for the default note for this track.
If you're using a touch-sensitive Midi controller (like the LaunchPad X for example), you can enable / disable touch sensitivity with the [sens]-button. When enabled, the velocity bar acts like a sensitivity modifier: lowering it will make the buttons less touch-sensitive, so you need to press them harder; raising it decreases the sensitivity.
Tapping the [keyb]-button twice will enable recording mode. The [quan] button can be used to enable/disable quantization while recording.
The bottom row (base octave - 1) will also double as a progress bar to give an indication on how far the current pattern is with playing. This will help when you want to start recording on the beginning of a track.
Any time you put the keyboard in recording mode, the current steps of the track is stored in the "undo"-buffer. So if you're not happy with you recording, you can simply tap [undo] to restore the steps of the track.
Just as with the track editor, holding the [undo]-button will save the current steps of the track in the "undo"-buffer. So this mechanic will allow you to undo your previous recording, even if you don't switch between live and recording mode.
This is a screen that can be accessed from any view by holding the [trns] button down. When the button is released
the Transport Screen closes.
This is the layout for the Transport Screen:
[ up ] [ down ] [ left ] [ rght ] [ sseq ] [ mtrx ] [ song ] [ scen ] ( bpm )
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ shft ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ copy ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ pste ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ undo ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ keyb ]
[ pnc! ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ fill ]
[ strt ] [ stop ] [ ] [ ] [ ] [ ] [ quit ] [ ] [ trns ]
This display will the BPM. Since space is limited, color is used to determine the "hundreds":
100 to the number shown (e.g. "20" in yellow means 120 BPM)200 to the number shown (e.g. "10" in red means 210 BPM)The buttons have the following behaviour
[up] : Raise BPM with 1[down] : Lower BPM with 1[left] : Lower BPM with 0.1[right] : Raise BPM with 0.1[pnc!] : Panic button (sends note off to all channels)[strt] : Start playing[stop] : Stop playing[quit] : Save and Quit (please note that this is currently also the only way to save your project. If the sequencer crashes, you've lost your progress. Welcome to the wonderful world of beta software ;-)).A cool - and unique - feature of this sequencer is that it has a "multiplayer" mode. This means that you can play with others. To do so, simply connect a more supported Midi Controllers to the computer running this software. It will be auto-connected.
In multiplayer mode, both devices will act as a client for the same project. This means that each Midi Controller will render it's own session (e.g. the screen that you're on), but everyone is working on the same project. This means that editing tracks, determining which track/pattern combination is being played or even what the BPM is, can be controlled by all controllers. Note that there is no "master" controller; all controllers have the same rights to work on the project.
Currently, the following Midi Controllers are supported:
If your device is not listed, please contact me. I will be more than happy to support more devices! This also goes for non-LaunchPad devices; if you think: "Hey, this device is also a 9x9 grid", let it know!