Programmer’s Guide
10
C4 Commander
Layout files (.c4l)
A layout is defined as a mapping of all C4 vir-
tual controls to a set of instrument parameters,
i.e., a layout tells the C4 which knob controls
what instrument functions. A layout may span
across multiple pages. Several instruments can
be mapped to from one layout and there is no
restriction to duplicating the same instrument
parameter on two different V-Pots. A user must
create a layout before using the C4 Commander.
The <CustomLayout> element is used in two
ways. First, it is used in each saved layout file
for the purpose of remembering state. Second,
there is a copy of the element in memory that
represents the layout as the user makes chang-
es in real time. When the layout is closed, the
user is prompted to save the current state to a
layout file mentioned earlier.
Layout files are created automatically
when controls are positioned on a C4
Commander screen. As such, there is no
need to manually edit these files. We are provid-
ing the following detail as a point of reference
only, not as an invitation to modify layout files
in a text editor. You could, but really, don’t do it.
Use the C4 commander app to generate layout
files instead.
<CustomLayout>
This element contains all data
necessary for mapping instrument parameters
to the C4.
<LayoutID>
An ID used as a key to uniquely
identify a particular layout. Most likely will be a
generated GUI ID.
<LayoutName>
A name specified by the user for
the layout. This name appears in the top LED
bar of the C4 Commander.
<PageList>
Holds all names of the current
layout’s pages. The order of the child <Page>
elements determines the corresponding page
numbers.
<Page>
A single page name.
<DisplayGroups>
Holds data on all display
groups.
<DisplayGroup>
A single display group. There
are two attributes associated with this element:
bars — setting to true will add horizontal
dashes to the group name
pickets — setting to true will add vertical
separators at the ends of the group name
<StartControl>
The ID of the first control in
the group.
<GroupLength>
The number of V-Pots the dis-
play group spans.
<Control>
This element represents an indi-
vidual mapping from one instrument parameter
to a C4 V-Pot.
<ControlID>
The position of the V-Pot being
mapped to. There are 32 V-Pots per page (if
there is no split), so the 33rd V-Pot would be
the upper leftmost V-Pot on page 2. If a map-
ping is not present for a given V-Pot, it will not
be functional.
<ManufacturerID>
Unique ID assigned to each
manufacturer. Stored in HEX.
<DeviceName>
Name of the given instrument
(e.g., DX100).
<Channel>
The MIDI channel on which the pa-
rameter message will be sent.
<ParamID>
The parameter being mapped.
<Display1>
A short name that will appear in
the LED area above the V-Pot being mapped.
The user can customize this name in the
software. Default value will be the <Instrument-
Name> of the parameter being mapped.
<Display2>
A short name that will appear in
the LED area above the V-Pot being mapped.
The user can customize this name in the soft-
ware. Default value will be the <ParamName>
of the parameter being mapped.
<ValueRangeMin>
Minimum value for given pa-
rameter.
<ValueRangeMax>
Maximum value for given
parameter.