View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

Proposal for an XML Specification modeling Time, Positions and Parts of Audio Waveforms

Home   How To   Code Pool   Public Library   Theory   Events
A first draft of a subset of functionality for an open XML standard for musical instruments.

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.

Uploaded Image: sfsliceclassescompact.png

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

Link to this Page