View Single Post
Old 03-03-2017, 04:04 PM
jim jim is offline
Join Date: Nov 2008
Location: Albuquerque, NM
Posts: 4,542

Here's the initial writeup for the Performance Controller setup. I'm making some last minute tweaks to the Numerology UI -- adding an "input mode" menu for the Mono and Poly Note seqs, hopefully I'll have the new build up shortly...



The Performance Controller:

This is a new controller type that combines sequence programming from a MIDI keyboard, and general purpose remote control, from a "Knobs & Buttons" MIDI controller. This combination allows you to configure a flexible, performance-friendly controller setup whereby you use the keyboard for entering and modifying sequences, and the knobs-n-buttons controller for navigation, setting record modes, and adjusting other parameters. You can use two separate MIDI controllers -- say a Launch Control and a MIDI keyboard, or a single keyboard controller provided that it has some assignable knobs and buttons. The controller config also allows you to setup MIDI Messages to turn controller LEDs on and off for additional feeedback when using controllers with illuminated buttons.

Mappable controls correspond to these functional areas:

- Navigation between stacks (which the UI follows)
- Sequence Recording / MIDI Input modes (realtime rec, step rec, transpose, etc)
- Keyboard Input to the currently active NoteSequencer.
- Sequence Ops (Clear, Invert, Shift, Generate, Evolve)
- Generic remote control, a.k.a. "midi learn".


The Performance Controller setup uses a "stack at a time" editing style, unlike, say, the Mixer Ctlr which uses a "bank of stacks at a time" approach. Navigation from the controller is by simple next and previous stack buttons. The Numerology UI will follow as you navigate between stacks, and the controller will follow as you bring up different stacks in the UI. Controller actions related to sequencer recording and ops are automatically directed to the first NoteSequencer in each stack that you navigate to.

[NOTE: This is an intentional limitation in the initial implementation: Only the first NoteSequencer in each
stack can be edited.]


Up to 5 buttons can be mapped to control how MIDI from the attached MIDI keyboard is handled:
- Off : No activity
- Step Record : The sequencer runs while you program notes in step record mode.
- Realtime Record : The sequencer runs in realtime record mode.
- Transpose : The sequence is transposed as you play the keyboard.
- Thru : Notes you play on the keyboard are added to the MIDI output of the sequencer.

These modes are mutually exclusive (a.k.a. 'radio buttons'), so as you select one, any other mode is deactivated. If you select one of these modes a 2nd time, it self-deactivates. This means that when using a controller that has illuminated buttons, you can reliably not map the "Off" mode and just map and of the 4 other modes that you need.


You can map buttons on the controller to any of the following operations:

Clear Sequence : zeroes out the entire sequence at once
Erase : erases parts of a sequence as it plays
Invert : invert the current sequence
Mute : mute the current sequence

[more are coming...]


You can setup up to 16 Stack-level knobs and buttons that you can assign to parameters on a per-stack basis. These mappings are made using the usual "MIDI learn" approach: control-click on a param, pick "Learn MIDI CC", then twist the knob or press the button you want to map. A big difference from traditional MIDI learn in Numerology is that these "stack level" mappings can change as you navigate through the stacks your project.

For instance, you can assign Knob 1 to sequencer rate for a MonoNote in Stack 1, sequencer rate (or length, or direction etc) for a PolyNote in Stack 2, and so on.

You can also setup another 16 knobs and buttons as "Global". These controls work just like the traditional method: Their mapping stays the same regardless of which stack you are looking. at.


- First bring up the Controller Setup dialog (in the Numerology app menu), and use the action menu (lower-left corner) to create a new Performance Controller.

- If you are using separate keyboard and "knobs-&-buttons" controllers, pick the knobs-&-buttons MIDI ports for input and output for "Ctls", and pick the Keyboard MIDI input and Output for "Keys". You only need to select the MIDI Output ports for these controllers if it has some sort of MIDI feedback dispay -- like the button LEDs on the Launch Control.

- If you are using a controller that has both a keyboard and some knobs and buttons, pick that controller for both Ctls and Keys.

You can can also just setup a knobs-n-buttons controller without a keyboard, but then you will not have access to sequence programming.

Now setup the mappings for your knobs-n-buttons controller. They fall into 7 groups, as listed below. Other than the Stack and Global Knob groups, all of these should map to buttons that are setup to transmit either MIDI CCs or Notes. Unless you have a really big controller, you will probably map only a subset of these controls -- perhaps just navigation, some input modes, and a few stack knobs and buttons.

- Keyboard modes: Off, RT Rec, Step Rec, Transpose and Thru. These modes are exclusive, like old-school radio buttons.

- Navigation: Prev Stack, Next Stack. There is always a 'current stack' for the Perf Ctlr. These buttons allow you to change stacks, and will wrap around when you read the last (or first) stack in your project.

- Ops: Clear, Erase, Invert and Mute. Each will trigger the matching operation.

- Stack Knobs 1-16 : map to knobs where you will want the mapping to change as you navigate from one stack to another.

- Stack Buttons 1-16 : as above, but for buttons.

- Global Knobs 1-16 : map to knobs where you do *not* want the mapping to change per-stack.

- Global Buttons 1-16 : as above, but for buttons.

Controller Feedback

All of the 'button-y' controls you can map have a pair of text fields where you can enter short MIDI messages that are sent to the controller when that button is triggered 'on' or 'off'. For instance, with Novation's Launch Control, you can set up these fields to light up the LEDs for each button
on the controller.

To use this feature, you will need to know a bit about MIDI, as well as how your controller responds to MIDI messages. The format for the fields is two-digit hexadecimal with spaces inbetween, like this: 80 33 7F
Reply With Quote