Unify Manual

Your complete reference to PlugInGuru's creative playground!

User Tools

Site Tools


midi-details

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-details [2020/01/06 02:16] – [MIDI processing built into MIDI and Instrument layers] shanemidi-details [2023/05/08 18:59] (current) – external edit 127.0.0.1
Line 48: Line 48:
  
 {{::midi-proc-3.png|}} {{::midi-proc-3.png|}}
 +
 +==== Stage 1: MIDI channel filtering ====
  
 At the first stage, the //MIDI channel number// (1--16) of each incoming MIDI event is compared against the setting of the //Input Channel control//, and the event is only passed on to the next stage if it matches: At the first stage, the //MIDI channel number// (1--16) of each incoming MIDI event is compared against the setting of the //Input Channel control//, and the event is only passed on to the next stage if it matches:
Line 56: Line 58:
   * **1** through **16** filter out events whose MIDI channel (1--16) does not match   * **1** through **16** filter out events whose MIDI channel (1--16) does not match
  
 +==== Stage 2: MIDI channel conversion ====
 The second stage allows the option to change the event's MIDI channel number. This could be useful if you have multiple MIDI keyboards assigned to, say, MIDI channels 4, 5, and 6, and you have set up MIDI channel-based filtering to route these to different layers, but you would like to change the channel numbers back to 1 before processing them, either because you're working with a plug-in which //only// works on MIDI channel 1, or you simply prefer not to set your individual plug-ins to specific MIDI channels. (You might have loaded the layer from a layer preset, which you have defined with all plug-ins set on MIDI channel 1 for simplicity.) Stage 2 is controlled by the //MIDI output channel// control: The second stage allows the option to change the event's MIDI channel number. This could be useful if you have multiple MIDI keyboards assigned to, say, MIDI channels 4, 5, and 6, and you have set up MIDI channel-based filtering to route these to different layers, but you would like to change the channel numbers back to 1 before processing them, either because you're working with a plug-in which //only// works on MIDI channel 1, or you simply prefer not to set your individual plug-ins to specific MIDI channels. (You might have loaded the layer from a layer preset, which you have defined with all plug-ins set on MIDI channel 1 for simplicity.) Stage 2 is controlled by the //MIDI output channel// control:
  
Line 63: Line 66:
   * **1** through **16** cause all incoming MIDI events to be reassigned to that channel number   * **1** through **16** cause all incoming MIDI events to be reassigned to that channel number
  
 +==== Stage 3: MIDI pitch- and velocity-based filtering ====
 +The third filtering stage is the basis for key- and velocity-splitting. By setting multiple layers to respond to non-overlapping //pitch// ranges, you can define //key-splits//. By setting two or more layers to respond to the same pitch range, but non-overlapping ranges of the MIDI note-velocity (1--127), you can define a //velocity split//, where the layer which plays depends on how hard you strike notes on the keyboard. Stage 3 is controlled by the four control boxes at the right-hand side of the MIDI-controls cluster:
 +
 +{{::midi-proc-7.png?200|}}
 +
 +The control box marked **G8** in the image indicates the upper limit of pitch; the box below it marked **C-2** is the lower limit. You can adjust these values in four ways:
 +  * Click and drag up/down with the mouse
 +  * Right-click (or Ctrl+clicking) to pop up a small edit box, and either:
 +    * Type a note name (e.g. "C3") or a MIDI note-number (e.g. 60) and hit Enter, OR
 +    * Press the appropriate key on your MIDI keyboard, and the displayed note-name will change to match
 +  * Right-mouse operations in the layer title bar (advanced---see [[layer-stack-view#layer_midi_range_and_velocity_based_fading|MIDI range and velocity based fading]])
 +
 +The two control boxes on the right are similar, but define the upper (top-right) and lower (bottom-right) //velocity// limits. These can only be adjusted using the mouse (either click/drag or use mouse-wheel).
 +
 +==== Stage 4: Pitch transpose ====
 +MIDI pitch values for key-splits are defined //prior to transposing//, so you can specify splits based on //physical// keys on your keyboard. (Technically, the key-split ranges are defined based on the //MIDI note-numbers  output by your keyboard//, which might themselves be transposed if you have activated any transpose capability built into the keyboard controller itself.)
 +
 +The fourth processing stage allows you to transpose the pitch at which the layer sounds by adding an offset (in semitones, which may be negative) to the note-numbers for each MIDI note-on or note-off event. The offset is the sum of the **layer transpose offset** and the **global transpose offset**.
 +
 +The **layer transpose offset** affects only the given layer, and is is set by the //layer transpose control// at the bottom-left corner of the MIDI-controls cluster:
 +
 +{{::midi-proc-8.png?200|}}
 +
 +The **global transpose offset** affects ALL instrument and MIDI layers, and hence allows you to transpose the entire composite Unify "instrument" up and down. The global transpose offset is set by the //global transpose box// at the bottom-right corner of the [[showmidi|Show MIDI view]] which appears in the Footer of the Unify GUI window when you click on the MIDI icon in the Icon Strip below:
 +
 +{{::midi-proc-9.png|}}
 +
 +Both the global and layer-transpose boxes can be adjusted in the same three ways:
 +  * Click and drag up/down with the mouse
 +    * If you hold down the Alt key (on a PC) or the Option key (on a Mac), the value will change by octaves
 +  * Right-click (or Ctrl+clicking) to pop up a small edit box, enter a value in semitones (may be negative) and hit the Enter key.
 +
 +===== Stage 5: Note-velocity modification =====
 +Finally, the fifth stage of layer MIDI processing allows you to apply an arbitrary //response curve// to the velocity values associated with each note-on event. Clicking on the **MIDI Velocity Graph control** at the right-hand side of the MIDI-controls cluster pops up a //curve editor window// like this:
 +
 +{{::velocity-curve-editor.png|}}
 +
 +The graph itself represents //incoming// MIDI note-velocity values along the horizontal axis, with lowest (quietest) velocities on the left and highest (loudest) velocities on the right. The vertical axis represents //outgoing// (processed) velocity values, lowest at the bottom and highest at the top. The default velocity curve is a straight line--the so-called "identity mapping" where each incoming velocity value is mapped to the identical value (no change at all).
 +
 +  * The **Reset button** reverts the curve shape back to the straight-line "identity" curve, as shown
 +  * The **Load... button** lets you load a previously-saved curve-shape preset (XML file)
 +  * The **Save... button** lets you save the current shape as a new curve-shape preset
 +
 +In the graph control itself, you can:
 +  * Click and drag the //endpoints// (circles) up and down
 +  * Click anywhere //between// endpoints and drag up/down to change the curvature of that segment of the curve
 +  * Double-click anywhere //between// endpoints to //create a new split point//, splitting the segment into two
 +  * Single-click directly //on a split point// and drag to move it up, down, left, or right.
 +  * Double-click directly //on a split point// to //delete it//, joining two segments back into one
 +
 +For velocity curves, you will rarely need to create split points. You will usually only need to adjust the curvature (//slightly// -- a little change goes a long way). Dragging upward to create a //convex// curve will make the layer //more responsive to velocity//, and can be useful when you are working with a weighted-key MIDI controller. Dragging downward to create a //concave// curve will make the layer //less responsive to velocity//, and can be useful when playing a very lightweight synth-action keyboard.
  
midi-details.1578276963.txt.gz · Last modified: 2023/05/08 18:59 (external edit)