]> git.sesse.net Git - nageru-docs/commitdiff
Much more about MIDI mappings.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 13 Nov 2016 21:35:50 +0000 (22:35 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 13 Nov 2016 21:35:50 +0000 (22:35 +0100)
audio.rst
images/audio-bus-controls.png [new file with mode: 0644]

index 8023a5f705c4eb3b2f3a545bcdd3632f2e6180e9..94b31b63e689e388e96938ce51d9afd36626207f 100644 (file)
--- a/audio.rst
+++ b/audio.rst
@@ -269,8 +269,6 @@ keys on the keyboard) allow you to select between two views:
 
 .. image:: images/audio-bus-controls.png
 
-(TODO: fix image)
-
 There's one set each of these controls for every bus. The most
 important parts of the mix are given the most screen estate,
 so even though the way through the signal chain is left-to-right
@@ -356,4 +354,96 @@ preset for the Akai MIDImix, looks like this:
 
 .. image:: images/midi-controller-setup.png
 
-(TODO: Write more.)
+There are three types of controls, which correspond to different types
+of MIDI events:
+
+  * **Controllers** map directly to MIDI controllers (the value in the
+    dialog is the controller number), which are continuous
+    values that can take on values from 0 to 127. (Unfortunately, MIDI
+    was made in the 80s, where 7-bit precision was seen as enough.)
+    They are typically used for faders and knobs.
+
+  * **Buttons** are one-shot events that map to MIDI note-on events,
+    and the value in the dialog is the MIDI note number (also from
+    0 to 127). They are similar to mouse buttons in that they don't
+    have an on or off state (the MIDI note-off events are ignored).
+    A typical example would be a mute button that can be pressed to
+    either mute or unmute a channel.
+
+  * **Lights** are *output* events where Nageru can send feedback
+    to the controller (and by extension, the user), represented by
+    MIDI note-on and note-off events (to turn the light on or off).
+    A typical example would be a mute light, that is on when a
+    channel is muted.
+
+In addition, each event can be *per-bus* or *global*. It can be a bit
+confusing that even the global events can be set once per-bus,
+but this is merely a convenience, allowing you to bind multiple
+physical controls to the same global controller; for global controllers,
+the bus number(s) you use for your mapping do not matter.
+
+The combination of controller type and per-bus/global constitutes
+a **mapping group**, clearly marked and collapsible in the UI.
+
+
+Creating and updating mappings
+''''''''''''''''''''''''''''''
+
+Unless you have a reference sheet for your MIDI controller, specifying which
+controller and number numbers the different physical knobs and faders
+emit, inputting these numbers by hand can be a frustating procedure.
+(Actually, even with a reference sheet, it probably is.) Thus, the preferred
+way is by autosensing; simply select the given mapping with the mouse
+and use the control you want to bind it to, and Nageru automatically
+fills it in.
+
+Also, most devices support many channels, with very similar structure
+in their controller and/or note numbers. Once you've filled out one
+and then started filling out another one, Nageru can guess for you;
+if it thinks it can make a reasonable guess (ie., find a consistent
+offset from its left or right neighbor), the “Guess bus” and/or
+“Guess group” buttons will be clickable. This can save considerable
+amounts of time, although it is advisable to check Nageru's guess for
+at least the first guessed channel. In particular, some controllers
+do not have a consistent offset between channels on all the controllers
+(making “Guess bus” give the wrong answer), just on the controller groups,
+so there, you must limit yourself to guessing only a single controller
+group (using “Guess group”).
+
+Lights currently cannot be learned, so some trial and error is needed.
+(However, if there are buttons associated with the light, a good place
+to start is using the same note number.) However, just like the input
+controllers, they can be guessed once you have all the mapping you want
+for a neighboring bus and partial information about the current one.
+
+
+Controller banks, and UI visibility
+'''''''''''''''''''''''''''''''''''
+
+Many MIDI controllers do not have enough faders and knobs for every
+Nageru function you might want to control; some even contain only
+one fader or one knob. Thus, Nageru supports assigning a physical
+control to multiple functions, through **controller banks**.
+If a mapping is assigned to a controller bank, it is only active
+when that bank is active. The act of switching banks is in itself
+an action that can be initiated from the MIDI controller; in fact,
+that is currently the only way to switch them.
+
+A typical example would be having a knob that in bank 1 is assigned
+to gain, and in bank 2 to cutoff (which happens to be a global control,
+as described in the previous section). This way, one can switch between
+the two banks and have both functions accessible from the MIDI controller.
+Similarly, buttons can be reused by assigning them to multiple banks.
+
+Note that when switching banks, the associated controller(s) is
+*not* immediately updated; this happens only when you move the control.
+Otherwise, a bank switch would cause a host of unwanted changes,
+as it is unlikely that you would want the control in the exact
+same position for the two controllers. (There is a similar problem
+when starting up Nageru for the first time, where the controllers
+are not necessarily in the place matching Nageru's startup settings.)
+Some more expensive controllers support *motorized faders*, where
+the host can simply tell the control to move to the right place
+and thus solve the problem, but Nageru does not currently support them.
+
+(TODO: write about highlighting)
diff --git a/images/audio-bus-controls.png b/images/audio-bus-controls.png
new file mode 100644 (file)
index 0000000..b4fe114
Binary files /dev/null and b/images/audio-bus-controls.png differ