/ VST Home / Technical Documentation
On this page:
The Clipboard VST-XML format is a simple text-based XML definition used to exchange media-related data through drag and drop (text-based) or copy and paste (using the operating system clipboard).
It was originally designed to support audio file exchange between Cubase and HALion . Over time, the same mechanism was extended to transfer additional musical elements and their context.
Clipboard VST-XML allows applications to transfer more than a plain file reference.
Typical transferred elements include:
Audio files/clips (since version 1.0)
Tempo (since version 1.1)
Chords (since version 1.2)
Scales (since version 1.3)
The XML payload can include extra information that helps preserve editing context across applications and plug-ins, for example:
Color
Project time position
Other element-specific metadata
This makes drag-and-drop and copy-paste workflows more useful than simple file transfer, because the receiving application and plug-ins can reconstruct musical and visual context.
A source plug-in like HALion serializes the selected element as Clipboard VST-XML text.
The user performs drag and drop or copy and paste.
The target application like Cubase parses the XML and imports the element with its metadata.
Cubase
Dorico
Nuendo
HALion
Padshop
Studio One
Soundly
Wavelab
This section describes the Clipboard VST-XML structure according to its current Document Type Definition (VST-XML-1.4.dtd ).
Item Definition
Attributes version (required)
Required children sourceApp
Optional children region, chord, scale, signature
Item Definition
Content Text value with sender application name
Item Definition
Attributes id (required), type (optional: join or silence), channelID (optional)
Required children filename, start, end
Optional children name, tempo, rootkey, projectTime, color, loop, segment, signature
Item Definition
Required children filename, start, length
Optional children fileOffset
Item Definition
Attributes type (optional: release)
Required children start, end
Item Definition
Attributes id (required)
Required children keyNote, pitches, mask
Optional children name, projectTime, bassNote, color
Item Definition
Attributes id (required)
Required children mask, keyNote
Optional children name, projectTime, displayName, color
Item Definition
Required children numerator, denominator
Optional children projectTime
Tag Meaning
nameHuman-readable label
displayNameAlternate/display label for scale
filenameAudio file path
startStart position or offset (context dependent)
endEnd position (context dependent)
lengthSegment length
fileOffsetFile offset used by segment-based payloads
projectTimeTimeline position; requires domain attribute
tempoTempo value
rootkeyRoot key value
pitchesChord pitch set as text
keyNoteChord/scale key note value
bassNoteChord bass note value
maskBitmask-like harmonic/scale encoding
colorColor value (for UI/context)
numeratorTime signature numerator
denominatorTime signature denominator
Attribute Used on Values
idregion, chord, scaleAny text (like integer counter), required
typeregionjoin, silence
typelooprelease
channelIDregionAny text (typically GUID)
domainprojectTimequarterNotes or seconds (required)
<?xml version="1.0"?>
<vst-xml version="1.3">
<sourceApp>MyApp</sourceApp>
<region id="1" channelID="{B48CE04A-8FE5-4192-BBEE-D178F7B55C26}">
<name>Region 1</name>
<filename>c:\toto.wav</filename>
<start>100</start>
<end>44200</end>
<projectTime domain="quarterNotes">16</projectTime>
</region>
</vst-xml>
<?xml version="1.0"?>
<vst-xml version="1.3">
<sourceApp>MyApp</sourceApp>
<region id="1" channelID="{B48CE04A-8FE5-4192-BBEE-D178F7B55C26}">
<name>Region 1</name>
<filename>E:\Temp\Audio\Drum1.wav</filename>
<start>100</start>
<end>44200</end>
<projectTime domain="seconds">4.0</projectTime>
<color>#91959bff</color>
</region>
<region id="2" channelID="{09FCC4AB-1752-4A8B-A039-380B6EE74256}">
<name>Region 2</name>
<filename>E:\Temp\Audio\Drum2.wav</filename>
<start>0</start>
<end>44100</end>
<projectTime domain="quarterNotes">8</projectTime>
<color>#91959bff</color>
</region>
</vst-xml>
<?xml version="1.0"?>
<vst-xml version="1.3">
<sourceApp>MyApp</sourceApp>
<region id="1" channelID="{B48CE04A-8FE5-4192-BBEE-D178F7B55C26}">
<name>Region 1</name>
<filename>E:\Temp\Audio\Drum1.wav</filename>
<start>100</start>
<end>44200</end>
<projectTime domain="seconds">4.0</projectTime>
</region>
<region id="2" channelID="{B48CE04A-8FE5-4192-BBEE-D178F7B55C26}">
<name>Region 2</name>
<filename>E:\Temp\Audio\Drum2.wav</filename>
<start>0</start>
<end>44100</end>
<projectTime domain="quarterNotes">8</projectTime>
</region>
</vst-xml>
<?xml version="1.0"?>
<vst-xml version="1.3">
<chord id="818292160">
<name>C7</name>
<color>#91959bff</color>
<projectTime domain="quarterNotes">0</projectTime>
<pitches>C1;E2;G2;A#2;</pitches>
<keyNote>60</keyNote>
<bassNote>24</bassNote>
<mask>0x248</mask>
</chord>
<chord id="1485759856">
<name>Fmin7</name>
<color>#91959bff</color>
<projectTime domain="quarterNotes">32</projectTime>
<pitches>F1;G#2;C3;D#3;</pitches>
<keyNote>65</keyNote>
<bassNote>29</bassNote>
<mask>0x244</mask>
</chord>
<chord id="1485760336">
<name>Esus4</name>
<color>#91959bff</color>
<projectTime domain="quarterNotes">56</projectTime>
<pitches>E1;A2;B2;E3;</pitches>
<keyNote>64</keyNote>
<bassNote>28</bassNote>
<mask>0x50</mask>
</chord>
<chord id="1485759376">
<name>Gsus2</name>
<color>#91959bff</color>
<projectTime domain="quarterNotes">72</projectTime>
<pitches>G1;G2;A2;D3;</pitches>
<keyNote>67</keyNote>
<bassNote>31</bassNote>
<mask>0x42</mask>
</chord>
<sourceApp>Nuendo</sourceApp>
</vst-xml>
<?xml version="1.0"?>
<vst-xml version="1.3">
<scale id="492403952">
<name>Blues 1</name>
<displayName>A# Blues 1</displayName>
<color>#91959bff</color>
<projectTime domain="quarterNotes">0</projectTime>
<keyNote>10</keyNote>
<mask>0x6ed</mask>
</scale>
<scale id="492405312">
<name>Major</name>
<displayName>G Major</displayName>
<color>#91959bff</color>
<projectTime domain="quarterNotes">56</projectTime>
<keyNote>7</keyNote>
<mask>0xab5</mask>
</scale>
<sourceApp>Nuendo</sourceApp>
</vst-xml>
<?xml version="1.0"?>
<vst-xml version="1.3">
<sourceApp>MyApp</sourceApp>
<signature>
<numerator>3</numerator>
<denominator>4</denominator>
<projectTime domain="quarterNotes">0</projectTime>
</signature>
</vst-xml>
<?xml version="1.0"?>
<vst-xml version="1.3">
<sourceApp>WaveLab</sourceApp>
<region type="join" id="4" channelID="{B48CE04A-8FE5-4192-BBEE-D178F7B55C26}">
<name>my Region</name>
<projectTime domain="seconds">33.5</projectTime>
<segment>
<filename>E:\Temp\Audio\Drum2.wav</filename>
<start>0</start>
<length>1234</length>
</segment>
<segment>
<filename>c:\toto.wav</filename>
<start>1227</start>
<length>44</length>
</segment>
<color>#12345678</color>
</region>
<region id="1234" channelID="{B48CE04A-8FE5-4192-BBEE-D178F7B55C26}">
<name>Region 1</name>
<filename>E:\Temp\Audio\Drum2.wav</filename>
<start>0</start>
<end>1234</end>
<projectTime domain="quarterNotes">16</projectTime>
<loop>
<start>0</start>
<end>1002</end>
</loop>
<loop type="release">
<start>0</start>
<end>1002</end>
</loop>
<tempo>120.0</tempo>
<rootkey>36</rootkey>
<signature>
<numerator>3</numerator>
<denominator>4</denominator>
</signature>
</region>
</vst-xml>