Unify Manual

Your complete reference to PlugInGuru's creative playground!

User Tools

Site Tools


midi-controller-files

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
midi-controller-files [2021/03/18 15:11] – [MIDI Controller Files] shanemidi-controller-files [2023/05/08 18:59] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== MIDI Controller Files ====== ====== MIDI Controller Files ======
 **This page describes a Unify feature which is both ADVANCED and EXPERIMENTAL. Limited support will be provided. Please do not attempt to follow these instructions unless you are sure you understand them.** **This page describes a Unify feature which is both ADVANCED and EXPERIMENTAL. Limited support will be provided. Please do not attempt to follow these instructions unless you are sure you understand them.**
- 
-**This version of the page is valid for Unify v1.4.x only.** 
  
 The stand-alone Unify app can make use of //plain-text files// containing instructions for how to interpret MIDI data coming from a specific MIDI controller device. These "MIDI controller files" must be placed in a folder called //MIDI Controller Files// located in the Unify Content Folder (beside //Libraries//, //Presets//, etc.; see [[files-folders|Unify's files and folders]]). You can easily open your Unify Content Folder from within Unify, by clicking the gear icon to open the [[settings|Settings View]], and clicking the "Open..." button. The stand-alone Unify app can make use of //plain-text files// containing instructions for how to interpret MIDI data coming from a specific MIDI controller device. These "MIDI controller files" must be placed in a folder called //MIDI Controller Files// located in the Unify Content Folder (beside //Libraries//, //Presets//, etc.; see [[files-folders|Unify's files and folders]]). You can easily open your Unify Content Folder from within Unify, by clicking the gear icon to open the [[settings|Settings View]], and clicking the "Open..." button.
Line 126: Line 124:
     * It is necessary to use the //Korg Kontrol Editor// app to CHANGE the controller configuration, setting all the "R" buttons to //Button Behavior = Toggle//. A setup file for this purpose is provided below.     * It is necessary to use the //Korg Kontrol Editor// app to CHANGE the controller configuration, setting all the "R" buttons to //Button Behavior = Toggle//. A setup file for this purpose is provided below.
  
-**These new parameters are highly experimental** and should not be considered "ideal" in any way, nor should they be treated as //final//. We expect to refine the list of MIDI-related OSC parameters over time, and user comments/suggestions are welcome.+**These new parameters are still experimental** and should not be considered "ideal" in any way, nor should they be treated as //final//. We expect to refine the list of MIDI-related OSC parameters over time, and user comments/suggestions are welcome. 
 + 
 +==== Setting up the Korg nanoKontrol 2 ==== 
 + 
 +To set up a //Korg nanoKontrol 2// controller for controlling the MIDI enable/disable state of layers using the "R" buttons, you will need to use the [[https://www.korg.com/us/support/download/software/0/159/1354/|Korg Kontrol Editor]] app. **USE AT YOUR OWN RISK. PlugInGuru, Inc. is not responsible for any mistakes you make.** 
 + 
 +Note that you can always reset your //nanoKontrol 2// to its original factory settings as follows: 
 +  - Close //Korg Kontrol Editor// (or any other program using the //nanoKontrol//), if necessary. 
 +  - Disconnect the USB cable from the //nanoKontrol 2//. 
 +  - Hold down the PREV TRACK, NEXT TRACK, and CYCLE buttons while re-connecting the USB cable from the computer. The transport buttons (except CYCLE) will blink when the factory-set default state has been restored. 
 + 
 +To set up your //nanoKontrol 2// for use with the MIDI Controller File shown above: 
 +  - Quit Unify (or any other program using the //nanoKontrol 2//) if already running. 
 +  - Download and unzip this file: {{ ::nk2_unifymixenable.zip |}}. It unzips to a "scene data" file called //NK2_UnifyMixEnable.nktrl2_data//
 +  - Double-click the //NK2_UnifyMixEnable.nktrl2_data//; the //Korg Kontrol Editor// should run automatically. If it does not, run //Korg Kontrol Editor// manually, and use the **File > Open** menu item to load the scene-data file. 
 +  - Use the **Communication > Write scene data** function to upload the scene data to your //nanoKontrol 2//. This may take a moment; wait until the program indicates that it is done. 
 +  - Quit the //Korg Kontrol Editor// program. 
 +  - Make sure the //nanoKontrol mix and enable.txt// file (shown above) is saved into a folder called //MIDI Controller Files// under the main Unify data folder. 
 +  - Run the Unify stand-alone app, load any patch with several INST layers, and test the "R" buttons to check that they enable/disable layers. 
 + 
 +**NOTE** When Unify loads a patch, all INST layers will normally be enabled (not darkened and responsive to MIDI), but some of the "R" buttons on your //nanoKontrol 2// may not be toggled "on" (lit red). Press any that are off, to toggle them on. 
 + 
 +At this time, Unify does not do two-way communication with MIDI controllers, so it has no way of knowing that the state of INST layers may not match the on/off state of your //nanoKontrol 2//'s "R" buttons. You may simply need to press the buttons one or more times, to bring their states into sync with Unify's layers. 
 + 
  
 ===== Example 2: KOMPLETE KONTROL keyboard ==== ===== Example 2: KOMPLETE KONTROL keyboard ====
Line 169: Line 191:
  
 ==== "no" line ==== ==== "no" line ====
-You may have noticed that the comments in the first example mentioned "no" lines. Lines beginning with "no" (Note On) can be used to specify that certain MIDI note-on messages be used to activate binary OSC parameters. In this example, we specify that pressing the A1 key (MIDI note 21, lowest note on a standard 88-key keyboard) should trigger the "MIDI Panic" or "stop all notes" function, //instead of triggering a note//. This can be quite useful for pianists, who rarely actually play the A1 key, and may be using a simple digital piano which has no extra controls which could be used to generate MIDI CC messages.+You may have noticed that the comments in the first example mentioned "no" lines. Lines beginning with "no" (Note On) and //not ending with a number// can be used to specify that certain MIDI note-on messages be used to activate binary OSC parameters. In this example, we specify that pressing the A1 key (MIDI note 21, lowest note on a standard 88-key keyboard) should trigger the "MIDI Panic" or "stop all notes" function, //instead of triggering a note//. This can be quite useful for pianists, who rarely actually play the A1 key, and may be using a simple digital piano which has no extra controls which could be used to generate MIDI CC messages. 
 + 
 +The next example illustrates "no" lines with a numeric value at the end, support for which was added in Unify v1.6.2. 
 + 
 +===== Example 3 (partial): Akai MPD218 ===== 
 +The [[https://www.akaipro.com/mpd218|Akai MPD218]] is a USB MIDI controller featuring sixteen drum-pads (each of which sends a MIDI note-on with a distinct note-number) and six knobs (each of which sends MIDI CC data with a distinct CC number). The following MIDI Controller file illustrates some possible techniques for using this device and other controllers like it. 
 + 
 +<file text Akai MPD218.txt> 
 +# First non-blank, non-comment line is the MIDI controller name (or a prefix thereof) 
 +  MPD218 
 + 
 +# Knobs bank A 
 +cc 3   macro/
 +cc 9   macro/
 +cc 12   macro/
 +cc 13   macro/
 +cc 14   macro/
 +cc 15   macro/
 + 
 +# Knobs bank B 
 +cc 16   macro/
 +cc 17   macro/
 +cc 18   macro/
 +cc 19   macro/10 
 +cc 20   macro/11 
 +cc 21   macro/12 
 + 
 +# Knobs bank C 
 +cc 22   macro/13 
 +cc 23   macro/14 
 +cc 24   macro/15 
 +cc 25   macro/16 
 +cc 26   macro/17 
 +cc 27   macro/18 
 + 
 +# Pads bank A: first three pads on top row 
 +no 48   macro/8 0.0 
 +no 49   macro/8 0.35 
 +no 50   macro/8 0.7 
 + 
 +# Pads bank A: first three pads on second-from-top row 
 +no 44   inst/1/midiToggle 
 +no 45   inst/2/midiToggle 
 +no 46   inst/3/midiToggle 
 +</file> 
 + 
 +==== Knobs sections ==== 
 +The MPD218 has six //physical// knobs, but also has a button allowing you to select any of three different sets of CC-number assignments for them (called "banks"), so there are actually eighteen "logical" knobs. Akai provides an editor program which allows you to see all these assignments, and edit them if you wish. The file above was made by simply using the editor to check the default CC-number assignments for each of banks A, B, and C. 
 + 
 +The knobs are set up to control the first eighteen of Unify's [[realtime-params|Macro Knobs]]. Note that the special parameter-paths starting with "macro" will always work to refer to Unify's macro-knobs, even if these have been given custom names in Unify v1.6.0 and later. 
 + 
 +==== Pads bank A section ==== 
 +The MPD2018 also supports three banks of MIDI-command assignments for the sixteen physical pads, yielding a total of 48 logical pads, but as this is only a partial tutorial example, there are only six "no" lines, all for pad bank A. These are divided into two groups of three lines. 
 + 
 +The first three "no" lines are for the first three pads along the top row of the MPD218 (designated 13, 14, and 15) on the front panel). All three pads are set up to send a specific fractional value (range 0.0 to 1.0) to Unify's Macro8 knob, setting it to a specific position. 
 +  * Tapping pad 13 sets the knob value to 0.0 (all the way to the left) 
 +  * Pad 14 sets it to 0.35, about the ten o'clock position, and 
 +  * Pad 15 sets it to 0.67, about two o'clock. 
 + 
 +These values were experimentally chosen, to correspond to three different [[patch-variations|Patch Variations]] defined using new features added in Unify 1.6.0 and refined in later versions. See the [[patch-variations|Patch Variations]] page for more details. The upshot of all this is that tapping pad 13 activates the INST1 layer of the patch, pad 14 switches to the INST2 layer only, and pad 15 to the INST3 layer. 
 + 
 +The next three "no" lines are for pads 9, 10, and 11, on the second row of the MPD218's pads array. These allow toggling (switching on and off) the [[layer-stack-view#inst_midi_layer_enable_disable|MIDI-enable state]] of the INST1, INST2, and INST3 layers individually. Tapping these buttons thus allows you to switch each of these layers on and off in any combination, separately from the three specific combinations set up by the Macro8 knob. 
 + 
 +These last three "no" lines don't have a numeric value at the end, so Unify internally uses the default value 1.0, which is ideal for triggering binary and toggle-type parameters. This matches the behavior of "no" lines in Unify versions prior to v1.6.2, when support for numeric values was added. 
 + 
 +===== MIDI keys can do more than play notes! ===== 
 +The six "no" lines at the bottom of the MPD218 example file illustrate how **Unify v1.6.2 and later** allow you to use MIDI note-on events to control things like [[layer-stack-view#inst_midi_layer_enable_disable|layer MIDI-enable]] and [[[[patch-variations|Patch Variations]]. 
 + 
 +The example refers to a drum-pad controller, but **you can do the same thing using any MIDI keyboard** in a live-performance setup. 
 +  * Maybe you don't have a pad controller, but you do have a small secondary MIDI keyboard. You could set up a MIDI controller file to allow you to switch layers on and off (or mute/solo layers, etc.) using keys on that little keyboard. 
 +  * If you have just one 88-key master keyboard, you might want to set up a handful of notes at the very bottom or top end (which you don't expect to actually use to play notes) to trigger other functions in Unify. 
  
 ===== How Unify works with MIDI controller files ===== ===== How Unify works with MIDI controller files =====
Line 187: Line 280:
   - Some devices (the KORG nanoKONTROL2 is a major example) generate MIDI CC messages which are normally reserved for special purposes, e.g. CC#0 (default assignment for the first slider) would normally be interpreted by Unify and most other MIDI instruments as //MIDI Bank Select//. With MIDI controller files, you can effectively intercept such messages, and specify exactly how they are to be interpreted, knowing they will be suppressed at the early stages of Unify's MIDI processing, and won't go on to trigger their more conventional functions.   - Some devices (the KORG nanoKONTROL2 is a major example) generate MIDI CC messages which are normally reserved for special purposes, e.g. CC#0 (default assignment for the first slider) would normally be interpreted by Unify and most other MIDI instruments as //MIDI Bank Select//. With MIDI controller files, you can effectively intercept such messages, and specify exactly how they are to be interpreted, knowing they will be suppressed at the early stages of Unify's MIDI processing, and won't go on to trigger their more conventional functions.
  
 +===== Suppressing specific MIDI messages =====
 +**As of Unify v1.9**, you can put the word //suppress// in place of a normal command-path, to entirely suppress (filter out) a specific CC message.
 +
 +This was added in response to feedback from a user who found that a Roland D-50, used as a MIDI controller, sends a MIDI CC#123 (all notes off) message when the last key is released, and this can cause problems with some plug-ins. Adding the line
 +
 +  cc 123 suppress
  
 +to the active MIDI Controller file will cause this message to be suppressed (filtered out).
  
midi-controller-files.1616080302.txt.gz · Last modified: 2023/05/08 18:59 (external edit)