Extended plug-in interface IEditController for a component: Vst::IXmlRepresentationController
A representation based on XML is a way to export, structure, and group plug-ins parameters for a specific remote (hardware or software rack (such as quick controls)).
It allows to describe each parameter more precisely (what is the best matching to a knob, different title lengths matching limited remote display,...).
See an Example.
- A representation is composed of pages (this means that to see all exported parameters, the user has to navigate through the pages).
- A page is composed of cells (for example 8 cells per page).
- A cell is composed of layers (for example a cell could have a knob, a display, and a button, which means 3 layers).
- A layer is associated to a plug-in parameter using the ParameterID as identifier:
- it could be a knob with a display for title and/or value, this display uses the same parameterId, but it could an another one.
- switch
- link which allows to jump directly to a subpage (another page)
- more... See Vst::LayerType
This representation is implemented as XML text following the Document Type Definition (DTD): http://dtd.steinberg.net/VST-Remote-1.1.dtd
Example
Here an example of what should be passed in the stream of getXmlRepresentationStream:
<?xml
version=
"1.0" encoding=
"utf-8"?>
<!DOCTYPE vstXML PUBLIC "-//Steinberg//DTD VST Remote 1.1//EN" "http://dtd.steinberg.net/VST-Remote-1.1.dtd">
<plugin classID=
"341FC5898AAA46A7A506BC0799E882AE" name=
"Chorus" vendor=
"Steinberg Media Technologies" />
<originator>My
name</originator>
<date>2010-12-31</date>
<comment>This is an example for 4 Cells per Page for the Remote named ProductRemote
from company HardwareCompany.</comment>
<!-- ===================================== -->
<representation
name=
"ProductRemote" vendor=
"HardwareCompany" version=
"1.0">
<layer
type=
"knob" parameterID=
"0">
<titleDisplay>
</titleDisplay>
</layer>
<layer
type=
"display"></layer>
<layer
type=
"knob" parameterID=
"3">
<titleDisplay>
</titleDisplay>
</layer>
<layer
type=
"knob" parameterID=
"15">
<titleDisplay>
</titleDisplay>
</layer>
<layer
type=
"LED" ledStyle=
"spread" parameterID=
"2">
<titleDisplay>
</titleDisplay>
</layer>
<!--
this is the
switch for shape
A/B-->
<layer
type=
"switch" switchStyle=
"pushIncLooped" parameterID=
"4"></layer>
<layer
type=
"display"></layer>
<layer
type=
"LED" ledStyle=
"singleDot" parameterID=
"17">
<titleDisplay>
</titleDisplay>
</layer>
<!--this is the switch for sync to tempo on /off-->
<layer
type=
"switch" switchStyle=
"pushIncLooped" parameterID=
"16"></layer>
<layer
type=
"knob" parameterID=
"1">
<titleDisplay>
</titleDisplay>
</layer>
</representation>
</vstXML>
static celltype cell[MAXCELLS]
Definition adlibemu.c:89
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
static const char * name
Definition pugl.h:1582
int version
Definition jpeglib.h:901
#define A(x)
Definition lice_arc.cpp:13
static SerdStatus page(SerdReader *reader)
Definition reader.c:112