Extent — Extending the Active Region

By default an audio-family cue's active region is its element's bounding box: the playhead entering the box triggers it, and leaving the box stops or re-arms it. The extent parameter widens that region beyond the visible element, with a draggable, score-visible line marking where the region ends.

This mirrors the extent handle on session-layer audio objects, but lives entirely in the score's DSL — nothing outside score.svg is needed.

Applies to: audio, audioPool, audioImpulse, synth.


Syntax

audio(src:drone.wav, loop:0, extent:1200)
audioImpulse(path:"sfx/rain", rate:30, lifetime:region, extent:800)
synth(freq:~A3, lifetime:region, extent:600)
Key Value Description
extent number Active-region width in score units, measured from the element's left edge. Omit it for plain bounding-box behaviour

Units are the score's authored coordinates — the same units you see in Inkscape. An element 300 units wide with extent:900 sounds for a region three times its visible width.

The boundary is computed live from the element's current position, so it stays correct when the score scrolls or zooms and when the element is dragged.


The Extent Line

A cue with extent:N draws a line in the score so performers can read the active region:

The dash pattern identifies the cue type:

Cue Pattern
audio dots 2 6
audioPool 4 4
synth 3 3
audioImpulse dashes 6 4

Dragging the Handle

With DSL inspector mode enabled (the inspector toggle in the top bar), the end bar becomes a drag handle:

When the DSL editor panel is open on the element, a grip above the element does the same job, and the extent (score units) field in the form can be typed directly; Save to SVG persists either.


Saved Into the Score

The extent line is not just a runtime overlay — on save it is written into score.svg as a real element:

<g class="dsl-extent-line" id="dsl-extent-<elementId>" data-extent-for="<elementId>">
  <line … stroke-dasharray="2 6"/>   <!-- dashed region line -->
  <line …/>                          <!-- end bar -->
</g>

That makes the extent part of the score document itself: visible in Inkscape, in SVG exports, and in print, with no application running.

At load time the runtime adopts the saved group rather than drawing a duplicate, and re-normalizes its geometry from the extent:N parameter — the parameter is always the source of truth. Clearing the extent also removes the saved group from the file.


Relation to pin

extent and pin solve different problems:

They combine freely: audio(src:long.wav, extent:2000, pin:30).


Examples

// Drone that keeps sounding for 1500 units after its element
audio(src:drone.wav, loop:0, fadeOut:2, extent:1500)

// Rain texture active across a whole page-width region
audioImpulse(path:"sfx/rain", rate:40, lifetime:region, extent:3000)

// Synth pad gated by an extended region
synth(freq:[220, 330], lifetime:region, extent:900)

Tip: use ← → or ↑ ↓ to navigate the docs