A special editor for CVWidgetMS: As this widget allows connecting to an arbitrary number of control-slots at once this editor is designed to allow the user to make batch-connections as well as it provides the possibility to edit each slot individually. MIDI and OSC tabs within the interface are divided into an area that allows batch editing and an area that comprehends links to CVWidgetEditors for each slot. Each slot can be connected to an external OSC- or MIDI-controller individually.
Open a new editor for widget
widget |
the widget-object: must be a CVWidgetMS. |
tab |
an Integer, specifying which tab of the editor shall be focused upon opening the editor. Each editor contains 4 tabs ( see also TabbedView2): "Spec", "MIDI", "OSC" and "Actions", each addressed by an integer value from |
a CVWidgetMSEditor
Every editor provides the possibility to either batch-edit or edit MIDI-connections individually. For convenience these 2 possibilities are represented within 2 tabs:
A NumberBox in the batch-editing tab, allowing the user to define at which slider of the widget's multi-slider a batch-connection shall begin (indexing starts at 0
)
A List of CVMidiEditGroups in the tab representing the individual sliders. Each of the CVMidiEditGroups provides an interface to one of the widget's sliders within the multi-slider.
an List of CVMidiEditGroups
A TextField within the batch-editing tab that can be used to enter an Array of (external hardware) sliders.
The Button within the batch-editing tab that creates the MIDI-respopnders and hence finishes a batch-connection.
a Button
The Button within the batch-editing tab that removes all MIDI-responders connected to the parent widget.
a Button
CVWidgetMSEditor allows connecting more than one MIDI-controller in one go:
The numbered fields in the above screenshot provide the following:
(0..8)
) or even concetenated arrays (e.g. (0..3)++[5, 6, 8, 9]
).Behind the scenes a batch-connection is accomplished by an algorithm like the following:
The above code should guarantee that not only controllers get connected to successive sliders but also an offset is possible.
For further reference: CVWidget: -midiConnect
Like the MIDI-tab the OSC-tab is organized in 2 tabs:
A TextField within the batch-editing tab that allows the input of values that shall supplement the placeholders %
in the command-name field or message-slot field. (see explanation below in section "Batch-connecting external OSC-controllers")
A NumberBox within the batch-editing tab that allows the user to set the index at which batch-connecting the sliders within the widget's multi-slider should start (0
would be the first slider within the multi-slider).
A Button in the batch-editing tab that immediatly removes all OSC-responders within the widget.
a Button
A List of Buttons within the tab for editing individual OSC-connections. Each button displays the current state of the slider it belongs to, and clicking the button opens another editor, allowing to edit all MIDI- and OSC-properties of the parent slider.
A List of Buttons within the tab for editing individual OSC-connections. Each button (displayed in red or green in the bottom, right corner of the OSC edit-button) allows to quickly activate or deactivate OSC-calibration for the parent slider. (See also: CVWidget: -oscCalibrate).
Like MIDI CVWidgetMSEditor allows to connect more than one OSC-controller in one go:
The numbered fields in the above screenshot provide the following:
%
may be used which is going to be replaced by a number from the external OSC-controller numbers (6): e.g. /my/cmd/name/%
used on an array [1, 2, 3]
will create 3 OSC-responders for the following command-names: /my/cmd/name/1, /my/cmd/name/2, /my/cmd/name/3
. See the OSC batch-connection examples below for a better understanding what's happening behind the scenes.0
). Analog to MIDI batch-connections this field allows an offset in connecting sliders of the multislider.0
will contain the command-name and an arbitrary number of successive slots may contain arbitrary data. E.g. an OSC controller may transmit data from a multi-slider like the following:
A multi-dimensional OSC-message like this may be addessed in batch-connections by the placeholder %
. Opposite to the possibility of using a number of different OSC command-names - as described in (7) - the command-name here is fixed but successive slots are addresses. Hence, the values in external OSC-controller numbers (6) will represent the slots within the OSC-message (starting at 1
). See the OSC batch-connection examples below for a better understanding what's happening behind the scenes.
As already mentioned there are 2 different scenarios in which batch-connecting a CVWidgetMS may makes sense:
'/name/1', '/name/2', '/name/3',..., '/name/n'
- these may belong e.g. to a multi-slider on a mobile based controller and there's exactly one value sent in slot 1
of the OSC-message. The underlying connection mechanism would be the following:
'/name'
within its slots 1
to n
:
For further reference also have a look at CVWidget: -oscConnect
This is the place to edit the parent widget's ControlSpec (resp. the ControlSpec of the CV wrapped by the widget). In the textfield (AbstractCVWidgetEditor: -specField) you may either edit the current spec or enter a new one. This can be done by either entering a full ControlSpec-definition (e.g. ControlSpec(10, 100, \exp)
) or an Array that will automatically be expanded to a ControlSpec (e.g. #[10, 100, \exp]) or a Symbol symbolising an existing ControlSpec (e.g. \freq
).
will become
In the drop-down menu below the textfield you may select any of the listed ControlSpecs. If it's a one-dimensional ControlSpec the same mechanism as in the textfield will apply. Also expanded ControlSpecs will be listed under a name that reflects the specs size - e.g. \freq
expanded to size 7 will be listed as 'freq_7'
Even though a CVWidgetMS may have many sliders it has only one CV. As a consequence all actions apply to all sliders (unlike in a CVWidget2D which incorporates 2 CVs). However, a CVWidget2D may still have an arbitrary number of actions assigned to it. Remember that the value of the CV will be an Array of values rather than a single value. E.g. an action setting a control of a running synth will rather user a setn
than set
:
Close the editor.
this (a CVWidgetMSEditor
)