Download: spec-slices-0_1.zip
This proposal describes a model for handling time, positions and parts of audio waveforms. The model is intended to derive a partial XML specification for musical instruments from it. In practice, an implementation of the model would provide functionality to cut an audio waveform into pieces and recombine them in a different order, or repeat some pieces.
The specification can possibly become part of an overall XML standard for musical instruments, as discussed by the open-instruments mailing list (http://resonance.org/mailman/listinfo/open-instruments). The proposal given here is not in the first place meant to be used independently from further specification work, however, a prototype implementation written in the SuperCollider3 language that realizes a functional subset is included.

This is an example of how a waveform is sliced into parts and re-joined as a cuelist in which the original parts are played in a different order and with repetitions:
<instrument> <!-- just a placeholder for possibly more flexible "instruments" --> <wave src="examples/audio/NosNodOrr.wav"> <!-- wavefile implicitly used as master-slice --> <slice name="start" to="20.55839s"/> <slice name="leer" to="27.69878s"/> <slice name="zwischen" to="34.83637s"/> <slice name="wummer" from="33.06s" to="34.82s"/> <slice name="basis" from="34.9s" to="49.16338s"/> <slice name="funny" from="49.19s" to="56.33s"/> <slice name="melody1" from="56.35s" to="63.46s"/> <slice name="melody2" from="63.5s" to="70.65s"/> <slice name="melody3" from="70.7s" to="77.8371s"/> <slice name="end" to="1.0"/> </wave> <cuelist name="song" loop="false"> <cue slice-ref="start"/> <cue slice-ref="zwischen"/> <cue slice-ref="wummer" repeat="4"/> <cue slice-ref="basis"/> <cue slice-ref="funny"/> <cue slice-ref="melody1" repeat="2"/> <cue slice-ref="melody2"/> <cue slice-ref="basis"/> <cue slice-ref="melody1" repeat="2"/> <cue slice-ref="melody3"/> <cue slice-ref="wummer" repeat="8"/> <cue slice-ref="funny"/> <cue slice-ref="melody1"/> <cue slice-ref="melody2"/> <cue slice-ref="melody3"/> <cue slice-ref="end"/> <cue slice-ref="melody2"/> <cue slice-ref="melody1"/> <cue slice-ref="melody2"/> <cue slice-ref="melody3"/> <!--<cue slice-ref="melody1" repeat="2"/> <cue slice-ref="melody2"/>--> <cue slice-ref="end"/> </cuelist>
jg