A Native Instrument Maschine Template for the Haken Audio Continuum Fingerboard

© 2016 Harmony Systems, Inc. All rights reserved.

NOTE: Continuum firmware version 8.0 altered the MIDI commands used to select both user and factory presets. Sadly this means that Machine's buttons and pads can no longer be used to select presets with a single button/pad action.

Haken Audio's Continuum Fingerboard is much more than a multi-dimensional, polyphonic, expressive controller. It contains a powerful, somewhat unconventional, synthesizer that is optimized around the Continuum's expressive control surface. The synthesizer comes with an extensive library of presets, and the Continuum Editor application provides everything you need to edit these to your taste, or create entirely new presets from scratch. The Continuum is a powerful instrument in every sense of the word.

It does, however, lack hardware editing controls for its internal sound engine. Fortunately the engine does include a robust MIDI implementation that offers MIDI control over a useful subset of instrument and synthesizer controls. Haken Audio also takes this further by providing everything you need to transform a Kenton KillaMix Mini or an Arturia BeatStep MIDI controller into a Continuum control surface. However, you are on your own if you want to use a different MIDI controller.

Native Instrument's Maschine is a candidate for such duties. The Maschine hardware has a rich set of endless rotaries, buttons, and drum pads. It also has an LCD to display labels assigned to the bank of eight buttons and rotaries above and below it. The LCD can also show pad names for each of the drum pads.

First generation Maschine hardware is now pretty dated so there is opportunity to either repurpose a controller languishing in a closet, or pick one up second hand for an attractive price. Maschine may be too large for live performance use (it's hard to beat the Kenton if space is a concern) but in the studio this may be less an issue. Besides, the drum pads are useful from recording percussive parts, and you can easily switch between different programmed personalities (templates).

NI has always been good about making their hardware user adaptable, and Maschine is no exception. Programming is done using the NI Control Editor application. This is used to define a template, a special file that is easy to archive and share.


Planning the control surface


Before diving into the editor, it's a good idea to map out how the various Maschine controls would be employed. The most versatile controls are the eight endless rotaries and eight pushbuttons above and below the two LCD panels. Those controls are organized into pages, and a template can have as many pages as needed. Each page specifies the function of the eight rotaries, push buttons, and labels for the LCD. That way you don't have to remember what rotary number 3 on page 2 controls.

Eight rotaries is good but more would be better. Maschine has three additional endless rotaries whose functions are fixed for each template. These rotaries are further limited by the printed label on Maschine's panel. So unless this label somehow reflects their use you either have to memorize what the rotary does, or resort to masking tape and a marker pen.

Likewise there are many more push buttons spewed about Maschine's panel. All are programmable on a per-template basis, and all have printed panel labels that are unlikely to match your intended use. So keep all of that in mind while you decide what, if any, role they will play.

Finally, there are sixteen drum pads that dominate Maschine's panel. Each template can define up to eight banks of drum pads, and a bank can be rapidly selected from the buttons labeled A-H. These are a natural choice for selecting Continuum presets. Each pad in each bank can have a short label. An easy button sequence causes the right LCD to show the labels of the current bank's sixteen pads. Together this means that you can select Continuum presets by name from Maschine.

Synthesizer controls

The Continuum has six primary synthesis controls: i, ii, iii, iv, Gen1, and Gen2. These are high-level macro or meta controls that the preset designer can assign to control multiple synthesis parameters in varying degrees. Each preset can use these in whatever manner makes the most sense. Presets can provide a name for each control but regretfully it's not possible to configure Maschine to show those names. So the generic names are used instead.

There is one additional controller that has great influence over a preset, the NSEW. This is a two-dimensional control that is used to morph between up to four snapshots of i, ii, iii, and iv settings. The NSEW's ideal controller would be some type of two-dimensional pad or joystick. Lacking those two Maschine rotaries are used instead.

These eight controls are used to make up one Maschine page that was named Synth. Buttons at the top were assigned some useful Continuum functions like the Octave, MonoSW, and selecting current polyphony. Lots of room here to personalize this in a different direction.

Effects controls

The Continuum's built-in effects section is called the Recirculator. It has five parameters whose function depends on the Recirculator's current mode. All five have MIDI control. The first of these is Recirculator Mix; Mix for short. It determines the amount of the effect added to the synthesizer's output. Basically it is the effect's Dry/Wet control. The other four, R1, R2, R3, and R4 control various aspects of the current effect algorithm.

These are grouped on a Maschine page called Effects. Mix, however, deserves special treatment because the effect amount can have dramatic influence over the final sound. Having this control always available seems like a good idea so Mix is assigned to two different Maschine rotaries: one on the Effects page, the other one of the Maschine's TEMPO rotary, one of the three "global" rotaries.

Other controls

One final Maschine page, Other, holds controls related to overall Continuum operation. One control, Round Rate, is currently assigned but others can be added if needed.

Global controls

A preset's Gain setting is pretty important and deserves an always-available rotary. Maschine's VOLUME rotary is a perfect fit. Sometimes though EaganMatrix experiments can get a tad out of control so it was decided to create a kind of panic button that would immediately kill the output level. Maschine's NOTE REPEAT button is physically close to VOLUME. It was programmed with a MIDI command that sets Gain to zero, effectively muting the active preset. To restore volume you adjust the VOLUME rotary, or load a different preset.

The third global rotary is Tweak. This works with the Continuum Editor application to adjust the currently selected editor GUI control. It's a way of using a hardware control to adjust GUI values. Maschine's SWING rotary is the last unused of the three global rotaries so it drew this duty.

Preset Recall

The Continuum has three groups of presets, Special, EaganMatrix, and User. Special and EaganMatrix hold factory presets, and User holds your personal presets.

Special presets are nineteen purpose-built synthesis algorithms. These are not as glamorous as EaganMatrix presets yet offer good sounds and excellent expressive capabilities. These are not presets in the traditional sense but tweak-able synth engines that can each be further programmed to make new presets. Maschine has a column of eight buttons immediately to the left of the drum pads that looked like a good place to recall the eight most often used Special presets. The template graphic later in the article shows which ones were chosen. It's a personal choice that you can modify to your own taste.

The User preset group in some ways is the most important because it is sixteen slots you can use to store favorite factory presets, changes you have made to factory or Special presets, your from-scratch EaganMatrix creations, or presets you have downloaded from the communal library. Seems only right that this group have a place of pride, so they are assigned to the A bank's sixteen drum pads.

Which leaves the EaganMatrix group. These are by far the largest number of factory presets, and each major firmware revision seems to bring more. Already there are more than can fit in the remaining unused seven banks of drum pads (112 total presets). So some kind of strategy is needed to decide which of these has instant recall status from Maschine. The included template you can download at the end of this article assigns the first 112 EaganMatrix factory presets in numeric order. Not especially imaginative but workable for someone just getting acquainted with all the factory presets on offer.

How you assign the EaganMatrix group in the end is a very personal choice, and what is offered with this template is only one of many possibilities. Here are some other ideas:

  • Start collecting favorites and add them as you encounter them. So your drum pad banks would largely be empty initially and fill over time.
  • Organize by sound classification. One bank for basses, another for solo instruments, a third for pads, and so on. Not all of the available presets will fit so you still have to select the ones you want.

One word of caution. Continuum factory presets are assigned a number, and this number is used to select them. Future changes to the factory library may change the numbering. When this happens you will have to reprogram the template to reflect changes.


Nuts and bolts


Section 8 in the Continuum user guide spells out the MIDI commands used to control the Continuum. All of the commands use MIDI Continuous Control (CC) messages. A number of the commands, including those for the synthesis and effects parameters, can use any of three MIDI channels, 14-16. The choice is not arbitrary as the channel determines the expected format for the message, and how the Continuum reacts.

Channel 14 is used to send relative change messages. These are appropriate when the controller is an endless rotary, or even perhaps a button you wish to increment or decrement a value. When the Continuum receives one of these channel 14 messages it updates the value, then it transmits the new value to its MIDI output as the same MIDI CC message, but on channel 16. The intent is that interested parties, such as the Continuum Editor application, can monitor these commands and update appropriately.

Channel 15 works in a similar manner except the message format is an absolute change. Whatever number is in the MIDI CC's value field becomes the value of the parameter. The Continuum also echoes this MIDI command on channel 16.

Channel 16 works different. It uses the same absolute change format as channel 15 but the Continuum does not echo the command. This is useful to prevent unnecessary MIDI traffic (some hardware controllers ignore the messages anyway), or prevent a type of tug-of-war between a control and it receiving the same value back a fraction of a second later.

So which format should a Maschine template use? Machine's rotary controls can operate in absolute mode, or one of two relative modes. The mode "Relative (Offset)" is compatible with the Continuum.

The choice depends on how you intend to connect Maschine to the Continuum, and how you want to the control surface to interact with the Continuum Editor. Most users will connect through the editor by assigning Maschine to the editor's Ext. Control MIDI port. The control surface will only be used while the editor is running so it make sense to keep the two in sync. This is how the included template is set up, but there are alternatives. See the section Connection Strategies for more discussion, and a bit more in-depth about how a control surface and the editor interact.

The channel 14 method was selected as it is the best compromise for connecting Maschine through the editor. There is one unfortunate consequence: Maschine's LCDs will not show the current value. This is due to a limitation of Maschine, and how the Continuum handles messages on channel 14-16. This is discussed more at length in Connection Strategies.

One other detail regarding Maschine's rotaries when they are used in the relative change mode. There are two settings, step, and resolution. Step determines the amount of change for each incremental rotary change. Its value must be 1 unless you wish to skip values. Resolution sets how much the value changes for each complete rotation. A smaller value provides finer control but takes more complete turns to span the entire control range. The included template uses the maximum value of 100 as that was found to be the best compromise between sensitivity and being able to quickly change a value. If you prefer more of a fine adjust feel use a lower value, but know that it comes at a cost of having to turn the rotary more to cover the same value range.

Machine's buttons and pads deserve some comments. They can be set up as triggers or toggles. Triggers match what the Continuum expects and should be used. The value sent as part of the MIDI CC message depends on what is being controlled. As an example, let's look at preset recall.

Continuum presets are selected by sending MIDI CC34 or CC32 on channel 16. The value of the message corresponds to the desired preset. For example, if you want to recall User preset #1 you send MIDI CC34 with a value of 101. This value should only be sent once, when the button is first pressed, and no value should be sent when the button is released as that would select a different preset. So the trigger mode is the correct way to program buttons.

Where are the blinky lights?

Machine's buttons and pads each have LEDs that can be used for visual feedback. Indeed more recent models of the hardware can select the color shown. Why not use this to good effect with the Continuum?

Unfortunately they cannot be used due to some limitations in how Maschine controls the LEDs and how the Continuum handles things like preset changes. It's possible, but only with some type of software application handling the message traffic. The Continuum Editor includes something similar for the Kenton controller. A Max patch could do something similar for Maschine.


Connection Strategies


One of the biggest decisions when deploying a Continuum control surface is deciding how it connects to the Continuum. One of the influences is whether the Continuum Editor is running whenever the control surface is in use. This is by far the most common situation but it is not the only option. Sometimes it's useful, or even mandatory, that the control surface work with the Continuum when the editor is not running.

If the editor is always in use then the least complicated way to connect the control surface is through the editor's assignable External Controller input port. You just select Maschine's virtual input and you are done. The editor monitor's MIDI on this input and forwards MIDI CC messages to the Continuum. It does not, however, interpret these messages. So to keep the editor's GUI in sync with the Continuum, it's imperative that you send MIDI CCs on channel 14 (relative) or 15 (absolute). Otherwise the Continuum will not inform the editor when you adjust certain parameters. If you use a relative change message then the control surface does not require any feedback from the Continuum so there is no need to connect the control surface's to output from the Continuum or editor. This of course eliminates any possibility of displaying current values on the control surface.

If you want to connect through the editor and display current values then that is unlikely at this time without injecting some type of software trickery. Many control surfaces, including Maschine, display values that match the same MIDI message, including channel, assigned to the control. This is problematic with the Continuum because it only outputs values if the change message is sent on MIDI channels 14 or 15, yet value updates always come from the Continuum on channel 16. So at a minimum some type of MIDI channel mapping must be employed to translate from channel 16 to either 14 or 15. Alternatively the channel re-mapping can happen to the message sent to the Continuum.

Maschine presents a further restriction. Its LCD does not display received values when the corresponding rotary is operating in relative mode. Thus channel 15 absolute must be used if updates from the Continuum are to be handled.

Note that this not just a question of receiving changes when Continuum parameters are adjusted. The Continuum also uses MIDI channel 16 CC messages to send the current state when a new preset is loaded. So any control surface that needs the current Continuum parameter values must be able to receive, and interpret, the channel 16 CC messages.

One further piece of this puzzle is how the Continuum Editor itself communicates with the Continuum. When it sends a new value for one of the parameters, it uses channel 16. Those messages are only sent to the port assigned to the Continuum. Any control surface that wishes to remain in sync with the editor must do so by somehow receiving those same messages. This implies some type of external MIDI routing, either through a companion software application or a hardware MIDI router. Without this the editor and control surface will be out of sync.

There is currently no easy way around these limitations. The best advice as of this writing is if you wish to use the editor and control surface together, then use relative mode messages. Also do not try to display current values as the editor and control surface will often be out of sync.

However, it is possible to connect the control surface directly to and from the Continuum, and display the values. The output of the control surface, like Maschine, must be sent to the Continuum, and the output of the Continuum to the control surface. This route can be accomplished with some type of software or hardware MIDI patch bay; the Continuum Editor is not involved in the routing. In fact the Continuum Editor is not even aware that there is a control surface. Connected in this fashion the control surface sends changes using MIDI channel 16 CC messages. The Continuum does not respond so the control surface itself must update any displays; this is how Maschine and many other control surfaces work. The Continuum does, however, send parameter messages whenever a preset changes, or some other agent changes a value using channel 14 or 15 messages. So the control surface and Continuum remain in sync. The Continuum Editor and the control surface will not be in sync.

This last option works well in situations where the control surface is the primary means for interacting with the Continuum. One example of this is Live performance.


Putting it all together


The Maschine template describe here can be download via this ZIP archive file Continuum.zip. This NI Control Editor screen shot shows the Synth page, plus the first group of presets assigned to bank B's drum pads.

Here is how Maschine is connected through the Continuum Editor's Ext Control MIDI port.

The Maschine hardware controller turns out to be a good choice for a Continuum control surface. Its rotary controls enhance the experience of programming Continuum sounds, and can be employed as additional performance controls. Selecting presets by names is a nice convenience, even when the Continuum Editor is available. Sometimes it's just nice to tap a button instead of shoving around a mouse.