====== Chapter 8: Supercontrols, More ======
[{{ http://mididesigner.com/automatic-images/stepper-example.png|Stepper Example from [[http://www.casiomusicgear.com/products/menu_xw|MDXW]]}}]
===== Steppers =====
Increment and Decrement buttons, or "steppers," are easy to create in MD.
==== Increment Stepper ====
- Create a button
- Set its subtype to Momentary
- Make it a supercontrol
- Make it a supercontrol of the knob/slider etc. that you wish to increment
==== Decrement Stepper ====
- Create a button
- Set its subtype to Momentary
- Make it a supercontrol
- Make it a supercontrol of the knob/slider etc. that you wish to increment
- Invert this supercontrol: Set Control Properties Pane -> Relationships -> Supercontrol Options -> Inverted to ON
**Force Not Stepper** \\
If you wish to use a momentary button that is not a stepper, set this toggle to ON: \\
Control Properties Pane -> Relationships -> Supercontrol Options -> Not Steppers (Toggle)
===== Sequential Subcontrols =====
Normally, a supercontrol affects all of its subcontrols at once. With sequential subcontrols, the supercontrol moves the first subcontrol, and then each subsequent one.
The range of the supercontrol is divided by the number of subcontrols. Each part moves a subcontrol through its full range.
{{ youtube>bXTF-0az6ws?large|Sequential Subcontrols MD }}\\
**This is useful:**
* To spin up disparate parameters in sequence. For instance, BASS BOOST -> TREBLE BOOST -> MID-RANGE BOOST
* To accommodate MIDI targets that use different MIDI messages for different parts of a parameter. For example: a MIDI target that use CC 87 for the -127->0 part of a range, and CC 88 for the 0->127 part of the range.
Getting ticks to line up for sequential subcontrol can be tricky. See this [[http://mididesigner.com/qa/1786/sequential-subcontrols-ticks-dont-line-up|Q&A article]] if you need help.
===== Channel Changers =====
Make a multifunction control by using more than one MIDI channel. One knob/slider etc. controls the channel for its subcontrols.
{{ youtube>LtGcsR5yFok?large|Channel Changers in MIDI Designer }}\\
==== Example ====
//Knob Q// controls //Wah Filter// on Channel 1, CC 42 and //Delay Feedback// on Channel 2, CC 42. //ChChger// is the supercontrol that makes Knob Q switch between functions. Knob Q will snap to its last value for //Wah Filter// and //Delay Feedback// when you switch the channel.
==== Set It Up ====
* Create a knob, slider, or crossfader
* Change the subtype of the control to Channel Changer + Presets
* Note that the control is automatically a supercontrol
* Add one or more subcontrols
**+ Presets?** \\
**//Channel Changer + Presets//** --- Subcontrols will snap to their last value for the channel selected. This behavior is exactly the same as that of [[manual:10_presets#presets_for_groups|Presets for Groups of Controls]] and you may add a store and recall button as well. \\
**//Channel Changer//** --- Subcontrols change channels.
Channel Changers can work with sysex subcontrols, too. They can even go up to 127!
===== Snap to value =====
Snap to value gives you the ability to snap a control to a particular value over time.
==== Button Supercontrols WITHOUT Snap to Value ====
A button supercontrol for a
[[manual:05_controls?types_of_controls|variable control]] (e.g., knob) works as follows:
* **Button is Toggle** --- When the button is pressed (to ON), the subcontrol hits its scaled MAX value. When the button is pressed again (to OFF), the subcontrol hits its scale MIN value.
* **Button is Momentary** --- When the button is pressed, the subcontrol hits its scaled MAX value. When the button is released, the subcontrol hits its scale MIN value.
To understand how a supercontrol's values affect a subcontrol, see [[manual:07_relationships?midi_ranges_supercontrols_and_subcontrols|MIDI Ranges with Supercontrols]]
==== Button Supercontrols with Snap to Value ====
With Snap to Value, you specify an amount of time for the value change to happen.
The slider is located at Control Properties Pane -> Relationships -> Options as Super.
[{{ http://mididesigner.com/automatic-images/snapToValue.png |Snap to Value}}]
=== Values for Snap Sub to Value Slider ===
Off, 0ms, 10ms, 25ms, 50ms, 75ms, 100ms, 500ms, 2s, 4s, 8s, 16s
**ms** --- stands for milliseconds, of which there are one thousand in every second. So 100ms is one tenth of a second.
**s** --- stands for seconds.
A button supercontrol for a
[[manual:05_controls?types_of_controls|variable control]] (e.g., knob) works as follows:
* **Button is Toggle** --- When the button is pressed (to ON), the subcontrol move to its scaled MAX value over the amount of time specified for snap to value. When the button is pressed again (to OFF), the subcontrol moved to its scaled MIN value over the amount of time specified.
* **Button is Momentary** --- When the button is pressed, the subcontrol hits its scaled MAX value over the time specified. When the button is released, the subcontrol hits its scale MIN value over the time specified.
=== Snap at Fixed Speed ===
With the Snap to Value slider set to 4 seconds:
* With Snap at Fixed Speed OFF, the subcontrol would take 4 seconds to reach the value it's snapped to. If the starting value is very close, the movement will be very slow. If the starting value is very far, the movement will be quicker.
* With Snap at Fixed Speed ON, the subcontrol would take 4 seconds to run through its MIDI range. Smaller distances take less time, since the movement is always at the same speed.
{{ youtube>SmVidtasj0U?large|Snap to Value }}
===== Button Groups =====
Button Groups are often referred to as "radio buttons" or "exclusive buttons." You want a button to belong to a group of buttons. When one turns on, the others turn off.
**MD takes the radio-button concept to the next level:** Momentary AND toggle buttons can participate in button groups.
A dynamic control (knob, slider, etc.) groups the buttons, but also lets you step through the buttons by changing the value of the knob.
Also, the buttons change the value of the grouping dynamic control.
==== Set It Up ====
Make any variable control (knob, slider, etc.) the supercontrol of two more buttons. Automatic and easy.
==== Use It ====
Press any of the buttons and the other ones in the group shut off. If they are momentary, they stay off.
==== Technical Details ====
The button that is pressed is sent LAST. Any of the buttons that does not send an off will only send when selected. This includes:
* Sysex with no "V"
* Buttons that are marked as "Send on Only"
{{ youtube>hZYjNEALx3w?large|Button Groups }}
==== Buttons Are Send On Only (Toggle) ====
This option is accessible from the Control Properties Pane for the Supercontrol (knob, slider, etc.) -> Relationships Tab -> Options as Supercontrol.
When set to ON, the buttons in the button group only transmit their ON value.
When set to OFF, the buttons in the button group transmit both their ON value and their OFF value.
**Buttons Are Send On Only** is particularly useful for Program Changes, or any type of message where the buttons share one type of MIDI message and also the Channel-CC or equivalent.
===== Bounce Back for Button Groups =====
Bounce Back --- 2nd Press Action for Button Groups --- allows you to determine what happens
when you press a button that is already ON in a button group. By default, when you press a button that
is already ON and is part of button group, that button will turn OFF. This will leave the button group
with no buttons selected. Sometimes, this is not the desired behavior. Bounce Back lets you choose.
==== Set It Up ====
With a button group set up, go to the Control Properties Pane for the supercontrol. Access Bounce Back
at Relationships Tab -> Options as Super -> Button Group 2nd Press. Options are:
- Button Shuts Off --- This is the default option. Second tap turns the selected button off.
- No Action (Exclusive) --- second tap does nothing.
- Resend (Exclusive 2) ---- second tap resends on value.
- Bounce Back to Previous Button --- second tap selects previously selected button.
- Bounce Back to First Button --- second tap selects first button in button group.
- Bounce Back to Last Button --- second tap selects last button in button group.
**Note**: Only //Button Shut Off// allows you to shut off all buttons in the Button Group. All other
options will result in one of the buttons always being on.
{{ youtube>6VgAWsDLaSA?large|Design Locks MD }}
===== Crossfader Overlap =====
Crossfader overlaps captures a basic, equal-power linear crossfade. This type of crossfade is very useful two
manipulate two parameters on any MIDI target. Consider the following situations:
* Lighting: Crossfade between red and blue lights.
* At zero: only red shows.
* At max value: only blue shows.
* In the middle of the range, both lights show, resulting in a purple.
* Music: Crossfade between two different tracks.
* At zero: only the A track plays.
* At max value: only the B track plays.
* In the middle of the range, both tracks play at full volume.
The idea, put more concretely with two knobs, Arp and Bass: Bass starts at max value. Arp starts at zero and reaches
full power at the midpoint. Bass starts dropping at the midpoint, hitting zero at the top of the range for the supercontrol.
==== Set It Up ====
First we set this up without using crossfader overlap, so see how it works:
* 1 Knob called "Crossfader": it's a supercontrol with two subcontrols
* knob called "Volume A"
* knob called "Volume B"
* Change Volume A to be inverted (Control Properties Pane -> Relationships -> Options as Sub -> Inverted)
Now switch to Play Mode and try this out. As you can see, Volume A and Volume B cross in the middle at 50% of their MIDI range.
**Now set up Crossfader Overlap**
For both Volume A and Volume B:
* Find Control Properties Pane -> Relationships -> Options as Sub -> Crossfader Overlap
* Set the value to .5
Now switch to Play Mode and try it out. An overlap of .5 is the most common, but you can also experiment
with other settings:
[{{ manual:crossfader-overlap.png?600 | Crossfader Overlap Variations }}]
[[http://mididesigner.com/qa/314/xy-pad-to-control-4-mics| Crossfader Overlap with 4 mics and an XY pad]] \\
This is an advanced use-case that might give you some new ideas about how to use crossfader overlap.