HytaleDocs
Audio

MusicContainers

Asset path: Server/Audio/MusicContainers/*.json

This object has different properties depending on the value of the Type property.

All possible options are listed below:

Horizontal

A music container designed for horizontal dynamic music, where transitions go from segment to segment.

HorizontalMusicContainer with the following properties:

KeyTypeDescription
TypeConstant value: Horizontal

This field controls the type, it must be set to the constant value "Horizontal" to function as this type.

ParentString

When set this asset will inherit properties from the named asset.

When inheriting from another HorizontalMusicContainer most properties will simply be copied from the parent asset to this asset. In the case where both child and parent provide a field the child field will simply replace the value provided by the parent, in the case of nested structures this will apply to the fields within the structure. In some cases the field may decide to act differently, for example: by merging the parent and child fields together.

Volume(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
LoopCountInteger defaults to: 1

Number of times to loop. 0 = infinite.

Weight(Nullable) Either Number defaults to: 1.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Relative weight for random selection when parent is a Random container.

SilenceAfter(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) after this container completes as a child.

ExitSilence(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) when this top-level container is replaced by another. Only valid in top-level containers.

FadeInDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-in duration in seconds.

FadeOutDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-out duration in seconds.

TransitionType(Nullable) Any one of the following String (defaults to FadeOutFadeIn):
MusicTransitionType
NameDescription
"Crossfade"
"FadeOutFadeIn"
"Immediate"

How a switch into this container behaves when no MusicTransition rule matches, and how a Horizontal parent moves into it.

TransitionDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Per-child override for transition duration. 0 = use parent's default.

ExitAt(Nullable)
MusicSyncConfig

MusicSyncConfig with the following properties:

KeyTypeDescription
Point(Nullable) SyncPoint

Which boundary to wait for: Immediate, NextBeat, NextBar, ExitMarker, or NextMarker.

Marker(Nullable) String

Marker name to sync to. Only used with Point: NextMarker. Omit to take the next marker of any name.

Offset(Nullable) BarBeatDuration

Signed offset from the boundary, as bars + beats + ms. Negative fires early, for lead-in material or to land on the last bar of a phrase.

BarMultipleInteger defaults to: 0

Only used with Point: NextBar. Waits for every Nth bar counted from the grid origin, so 4 hands over on four-bar phrase boundaries. Omit, 0 or 1 all mean every bar.

When the container playing hands over to this one, on that container's grid. Omit to let TransitionType decide: Immediate hands over at once, Crossfade at the outgoing container's exit marker, FadeOutFadeIn on the next bar. A matched MusicTransition overrides this.

Align(Nullable) Any one of the following String:
DestinationAlign
NameDescription
"EntryMarker"
"NamedMarker"
"SamePosition"

Where this container starts when a transition places it, on its own timeline. Omit to land its entry marker on the handoff. SamePosition carries the outgoing playhead across, which lines up only between arrangements sharing a grid and a loop length, so it suits a Horizontal phase and is rarely right between unrelated containers. Nothing checks that the lengths agree unless a MusicTransition spans the pair. A container seeked mid-file keeps a few milliseconds of fade even under a transition type that asks for none, since cutting into a waveform clicks. A matched MusicTransition overrides this. A phase reached by the previous one ending has no handoff to land against, so it starts at its own beginning.

AlignMarker(Nullable) String

Marker of this container to align to. Only used with Align: NamedMarker.

PlayToCompletionBoolean defaults to: false

If true, this container plays to completion before yielding to higher-priority music.

ResumeMemoryDuration(Nullable) Either Number defaults to: 30.0 or String that matches the pattern: ^(-?Infinity|NaN)$

How long to retain this container's playback state after leaving so a return resumes mid-track instead of restarting.

NameTranslationKey(Nullable) String

Translation key for the display name of this music container.

AudioCategory(Nullable) String

Reference to a AudioCategory asset

Audio category for volume routing. Honoured on any container, and the nearest one up the hierarchy from a playing leaf wins.

Tempo(Nullable)
TempoSettings

TempoSettings with the following properties:

KeyTypeDescription
Bpm(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
BeatsPerBarInteger defaults to: 0
BeatValueInteger defaults to: 0

Tempo and beat grid settings.

StateBindings(Nullable) Array of the type:
StateBindingConfig

StateBindingConfig with the following properties:

KeyTypeDescription
AudioState(Nullable) String

Id of the AudioState this binding subscribes to.

Deltas(Nullable) Array of the type: StateDeltaConfig

Per-state-value deltas. Unlisted values default to zero (no effect).

Subscribe this container to one or more AudioState axes. Per-state volume deltas will be applied to the container and its descendants.

Stingers(Nullable) Array of the type:
StingerBindingConfig

StingerBindingConfig with the following properties:

KeyTypeDescription
MusicEvent(Nullable) String

The event this binding answers. A free-form name, matched against what gameplay, an encounter, a state edge or a transition rule posts.

Stinger(Nullable) String

Reference to a Stinger asset

The stinger to play.

PlayAt(Nullable) MusicSyncConfig

Where on the playing music's grid the stinger lands. Omit to play immediately.

MinRepeatIntervalSeconds(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Window in which the named Stinger will not play again. Counted per stinger asset, so binding the same stinger from two events cannot bypass it.

ShortLead(Nullable) StingerShortLead

What to do when the sync point is closer than this stinger's own pickup. DropPickup plays from the entry marker so the accent still lands on the boundary, which sounds the same every time. Skip does not play it. Defer waits for the next occurrence, so the accent arrives late. TrimPickup keeps whatever fits, so how much survives changes with when the event landed.

Answer music events with stingers. Inherited by descendants. The deepest binding for an event wins, so a parent can give a default that a child overrides.

DefaultPhaseTransitionType(Nullable) Any one of the following String (defaults to Crossfade):
MusicTransitionType
NameDescription
"Crossfade"
"FadeOutFadeIn"
"Immediate"

Transition type for every phase change. A child overrides it with its own TransitionType, but only when the child also sets a TransitionDuration: TransitionType has no 'unset' value.

DefaultPhaseTransitionDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Default transition duration for all phase transitions.

ChildrenArray of the type: Either String or MusicContainer

Reference to a MusicContainer asset

AudioState(Nullable) String

Reference to a AudioState asset

Axis that selects which phase plays. Omit and the container only advances sequentially.

Phases(Nullable) Array of the type:
PhaseSelection

PhaseSelection with the following properties:

KeyTypeDescription
Value(Nullable) String

State value on the axis.

PhaseInteger defaults to: 0

Index into Children.

Which phase each state value selects. Values not listed leave the current phase alone.

Tags(Nullable) Map of the following:
Map
KeyType
any StringArray of String

Tags are a general way to describe an asset that can be interpreted by other systems in a way they see fit.

For example you could tag something with a Material tag with the values Solid and Stone, And another single tag Ore.

Tags will be expanded into a single list of tags automatically. Using the above example with Material and Ore the end result would be the following list of tags: Ore, Material, Solid, Stone, Material=Solid and Material=Stone.

Random

A randomized music container.

RandomMusicContainer with the following properties:

KeyTypeDescription
TypeConstant value: Random

This field controls the type, it must be set to the constant value "Random" to function as this type.

ParentString

When set this asset will inherit properties from the named asset.

When inheriting from another RandomMusicContainer most properties will simply be copied from the parent asset to this asset. In the case where both child and parent provide a field the child field will simply replace the value provided by the parent, in the case of nested structures this will apply to the fields within the structure. In some cases the field may decide to act differently, for example: by merging the parent and child fields together.

Volume(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
LoopCountInteger defaults to: 1

Number of times to loop. 0 = infinite.

Weight(Nullable) Either Number defaults to: 1.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Relative weight for random selection when parent is a Random container.

SilenceAfter(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) after this container completes as a child.

ExitSilence(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) when this top-level container is replaced by another. Only valid in top-level containers.

FadeInDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-in duration in seconds.

FadeOutDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-out duration in seconds.

TransitionType(Nullable) Any one of the following String (defaults to FadeOutFadeIn):
MusicTransitionType
NameDescription
"Crossfade"
"FadeOutFadeIn"
"Immediate"

How a switch into this container behaves when no MusicTransition rule matches, and how a Horizontal parent moves into it.

TransitionDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Per-child override for transition duration. 0 = use parent's default.

ExitAt(Nullable)
MusicSyncConfig

MusicSyncConfig with the following properties:

KeyTypeDescription
Point(Nullable) SyncPoint

Which boundary to wait for: Immediate, NextBeat, NextBar, ExitMarker, or NextMarker.

Marker(Nullable) String

Marker name to sync to. Only used with Point: NextMarker. Omit to take the next marker of any name.

Offset(Nullable) BarBeatDuration

Signed offset from the boundary, as bars + beats + ms. Negative fires early, for lead-in material or to land on the last bar of a phrase.

BarMultipleInteger defaults to: 0

Only used with Point: NextBar. Waits for every Nth bar counted from the grid origin, so 4 hands over on four-bar phrase boundaries. Omit, 0 or 1 all mean every bar.

When the container playing hands over to this one, on that container's grid. Omit to let TransitionType decide: Immediate hands over at once, Crossfade at the outgoing container's exit marker, FadeOutFadeIn on the next bar. A matched MusicTransition overrides this.

Align(Nullable) Any one of the following String:
DestinationAlign
NameDescription
"EntryMarker"
"NamedMarker"
"SamePosition"

Where this container starts when a transition places it, on its own timeline. Omit to land its entry marker on the handoff. SamePosition carries the outgoing playhead across, which lines up only between arrangements sharing a grid and a loop length, so it suits a Horizontal phase and is rarely right between unrelated containers. Nothing checks that the lengths agree unless a MusicTransition spans the pair. A container seeked mid-file keeps a few milliseconds of fade even under a transition type that asks for none, since cutting into a waveform clicks. A matched MusicTransition overrides this. A phase reached by the previous one ending has no handoff to land against, so it starts at its own beginning.

AlignMarker(Nullable) String

Marker of this container to align to. Only used with Align: NamedMarker.

PlayToCompletionBoolean defaults to: false

If true, this container plays to completion before yielding to higher-priority music.

ResumeMemoryDuration(Nullable) Either Number defaults to: 600.0 or String that matches the pattern: ^(-?Infinity|NaN)$

How long to retain this container's playback state after leaving so a return resumes mid-track instead of restarting.

NameTranslationKey(Nullable) String

Translation key for the display name of this music container.

AudioCategory(Nullable) String

Reference to a AudioCategory asset

Audio category for volume routing. Honoured on any container, and the nearest one up the hierarchy from a playing leaf wins.

Tempo(Nullable)
TempoSettings

TempoSettings with the following properties:

KeyTypeDescription
Bpm(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
BeatsPerBarInteger defaults to: 0
BeatValueInteger defaults to: 0

Tempo and beat grid settings.

StateBindings(Nullable) Array of the type:
StateBindingConfig

StateBindingConfig with the following properties:

KeyTypeDescription
AudioState(Nullable) String

Id of the AudioState this binding subscribes to.

Deltas(Nullable) Array of the type: StateDeltaConfig

Per-state-value deltas. Unlisted values default to zero (no effect).

Subscribe this container to one or more AudioState axes. Per-state volume deltas will be applied to the container and its descendants.

Stingers(Nullable) Array of the type:
StingerBindingConfig

StingerBindingConfig with the following properties:

KeyTypeDescription
MusicEvent(Nullable) String

The event this binding answers. A free-form name, matched against what gameplay, an encounter, a state edge or a transition rule posts.

Stinger(Nullable) String

Reference to a Stinger asset

The stinger to play.

PlayAt(Nullable) MusicSyncConfig

Where on the playing music's grid the stinger lands. Omit to play immediately.

MinRepeatIntervalSeconds(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Window in which the named Stinger will not play again. Counted per stinger asset, so binding the same stinger from two events cannot bypass it.

ShortLead(Nullable) StingerShortLead

What to do when the sync point is closer than this stinger's own pickup. DropPickup plays from the entry marker so the accent still lands on the boundary, which sounds the same every time. Skip does not play it. Defer waits for the next occurrence, so the accent arrives late. TrimPickup keeps whatever fits, so how much survives changes with when the event landed.

Answer music events with stingers. Inherited by descendants. The deepest binding for an event wins, so a parent can give a default that a child overrides.

Mode(Nullable) Any one of the following String (defaults to Shuffle):
RandomMode
NameDescription
"Shuffle"
"Random"

Shuffle = even distribution. Random = weighted per-pick selection.

AvoidRepeatCountInteger defaults to: 0

How many recently played children to avoid re-selecting.

ChildrenArray of the type: Either String or MusicContainer

Reference to a MusicContainer asset

Tags(Nullable) Map of the following:
Map
KeyType
any StringArray of String

Tags are a general way to describe an asset that can be interpreted by other systems in a way they see fit.

For example you could tag something with a Material tag with the values Solid and Stone, And another single tag Ore.

Tags will be expanded into a single list of tags automatically. Using the above example with Material and Ore the end result would be the following list of tags: Ore, Material, Solid, Stone, Material=Solid and Material=Stone.

Segment

A music container with parallel layers on a shared timeline. EntryMarker is the downbeat and ExitMarker is the loop/transition point.

SegmentMusicContainer with the following properties:

KeyTypeDescription
TypeConstant value: Segment

This field controls the type, it must be set to the constant value "Segment" to function as this type.

ParentString

When set this asset will inherit properties from the named asset.

When inheriting from another SegmentMusicContainer most properties will simply be copied from the parent asset to this asset. In the case where both child and parent provide a field the child field will simply replace the value provided by the parent, in the case of nested structures this will apply to the fields within the structure. In some cases the field may decide to act differently, for example: by merging the parent and child fields together.

Volume(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
LoopCountInteger defaults to: 1

Number of times to loop. 0 = infinite.

Weight(Nullable) Either Number defaults to: 1.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Relative weight for random selection when parent is a Random container.

SilenceAfter(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) after this container completes as a child.

ExitSilence(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) when this top-level container is replaced by another. Only valid in top-level containers.

FadeInDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-in duration in seconds.

FadeOutDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-out duration in seconds.

TransitionType(Nullable) Any one of the following String (defaults to FadeOutFadeIn):
MusicTransitionType
NameDescription
"Crossfade"
"FadeOutFadeIn"
"Immediate"

How a switch into this container behaves when no MusicTransition rule matches, and how a Horizontal parent moves into it.

TransitionDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Per-child override for transition duration. 0 = use parent's default.

ExitAt(Nullable)
MusicSyncConfig

MusicSyncConfig with the following properties:

KeyTypeDescription
Point(Nullable) SyncPoint

Which boundary to wait for: Immediate, NextBeat, NextBar, ExitMarker, or NextMarker.

Marker(Nullable) String

Marker name to sync to. Only used with Point: NextMarker. Omit to take the next marker of any name.

Offset(Nullable) BarBeatDuration

Signed offset from the boundary, as bars + beats + ms. Negative fires early, for lead-in material or to land on the last bar of a phrase.

BarMultipleInteger defaults to: 0

Only used with Point: NextBar. Waits for every Nth bar counted from the grid origin, so 4 hands over on four-bar phrase boundaries. Omit, 0 or 1 all mean every bar.

When the container playing hands over to this one, on that container's grid. Omit to let TransitionType decide: Immediate hands over at once, Crossfade at the outgoing container's exit marker, FadeOutFadeIn on the next bar. A matched MusicTransition overrides this.

Align(Nullable) Any one of the following String:
DestinationAlign
NameDescription
"EntryMarker"
"NamedMarker"
"SamePosition"

Where this container starts when a transition places it, on its own timeline. Omit to land its entry marker on the handoff. SamePosition carries the outgoing playhead across, which lines up only between arrangements sharing a grid and a loop length, so it suits a Horizontal phase and is rarely right between unrelated containers. Nothing checks that the lengths agree unless a MusicTransition spans the pair. A container seeked mid-file keeps a few milliseconds of fade even under a transition type that asks for none, since cutting into a waveform clicks. A matched MusicTransition overrides this. A phase reached by the previous one ending has no handoff to land against, so it starts at its own beginning.

AlignMarker(Nullable) String

Marker of this container to align to. Only used with Align: NamedMarker.

PlayToCompletionBoolean defaults to: false

If true, this container plays to completion before yielding to higher-priority music.

ResumeMemoryDuration(Nullable) Either Number defaults to: 30.0 or String that matches the pattern: ^(-?Infinity|NaN)$

How long to retain this container's playback state after leaving so a return resumes mid-track instead of restarting.

NameTranslationKey(Nullable) String

Translation key for the display name of this music container.

AudioCategory(Nullable) String

Reference to a AudioCategory asset

Audio category for volume routing. Honoured on any container, and the nearest one up the hierarchy from a playing leaf wins.

Tempo(Nullable)
TempoSettings

TempoSettings with the following properties:

KeyTypeDescription
Bpm(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
BeatsPerBarInteger defaults to: 0
BeatValueInteger defaults to: 0

Tempo and beat grid settings.

StateBindings(Nullable) Array of the type:
StateBindingConfig

StateBindingConfig with the following properties:

KeyTypeDescription
AudioState(Nullable) String

Id of the AudioState this binding subscribes to.

Deltas(Nullable) Array of the type: StateDeltaConfig

Per-state-value deltas. Unlisted values default to zero (no effect).

Subscribe this container to one or more AudioState axes. Per-state volume deltas will be applied to the container and its descendants.

Stingers(Nullable) Array of the type:
StingerBindingConfig

StingerBindingConfig with the following properties:

KeyTypeDescription
MusicEvent(Nullable) String

The event this binding answers. A free-form name, matched against what gameplay, an encounter, a state edge or a transition rule posts.

Stinger(Nullable) String

Reference to a Stinger asset

The stinger to play.

PlayAt(Nullable) MusicSyncConfig

Where on the playing music's grid the stinger lands. Omit to play immediately.

MinRepeatIntervalSeconds(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Window in which the named Stinger will not play again. Counted per stinger asset, so binding the same stinger from two events cannot bypass it.

ShortLead(Nullable) StingerShortLead

What to do when the sync point is closer than this stinger's own pickup. DropPickup plays from the entry marker so the accent still lands on the boundary, which sounds the same every time. Skip does not play it. Defer waits for the next occurrence, so the accent arrives late. TrimPickup keeps whatever fits, so how much survives changes with when the event landed.

Answer music events with stingers. Inherited by descendants. The deepest binding for an event wins, so a parent can give a default that a child overrides.

LayersArray of the type:
LayerPlacement

LayerPlacement with the following properties:

KeyTypeDescription
NameString

Identifier for this layer within its Segment. Must be unique within the Segment's Layers array.

ContainerEither String or MusicContainer

Reference to a MusicContainer asset

The MusicContainer asset providing this layer's audio.

ClipStart(Nullable) BarBeatDuration

Position on the Segment's timeline where this clip's file byte 0 plays. Negative = pre-entry (earlier than the downbeat). 0 = at the downbeat.

StateBindings(Nullable) Array of the type: StateBindingConfig

Per-layer state-reactivity: subscribe this layer's voice to one or more AudioState axes with per-state-value volume deltas.

EntryMarker(Nullable)
BarBeatDuration

BarBeatDuration with the following properties:

KeyTypeDescription
BarsInteger defaults to: 0
Beats(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Beats, which may be fractional. Against a quarter-note beat, 0.5 is an eighth and 1.5 a dotted quarter.

Ms(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Additional millisecond offset summed with bar/beat components. Allows pure ms authoring (e.g. { Ms: 1234 }) or fine-tuning bar/beat positions without a divide.

Position of the downbeat on the timeline from segment-time 0. All layers that start at segment-time 0 (no ClipStart) get this much pre-entry material before the downbeat.

ExitMarker(Nullable)
BarBeatDuration

BarBeatDuration with the following properties:

KeyTypeDescription
BarsInteger defaults to: 0
Beats(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Beats, which may be fractional. Against a quarter-note beat, 0.5 is an eighth and 1.5 a dotted quarter.

Ms(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Additional millisecond offset summed with bar/beat components. Allows pure ms authoring (e.g. { Ms: 1234 }) or fine-tuning bar/beat positions without a divide.

Exit position on the timeline from segment-time 0. The active region is [EntryMarker, ExitMarker]. For looping Segments, this is the loop point. For play-once Segments in a Sequence, this is the transition trigger to the next child.

Markers(Nullable) Array of the type:
MusicMarkerConfig

MusicMarkerConfig with the following properties:

KeyTypeDescription
Name(Nullable) String

Name that transition rules and stinger bindings sync to.

At(Nullable) BarBeatPosition

Position counted from the segment's downbeat. Bar 1 Beat 1 is the downbeat.

Named positions that transition rules and stinger bindings can sync to, counted from the downbeat.

Tags(Nullable) Map of the following:
Map
KeyType
any StringArray of String

Tags are a general way to describe an asset that can be interpreted by other systems in a way they see fit.

For example you could tag something with a Material tag with the values Solid and Stone, And another single tag Ore.

Tags will be expanded into a single list of tags automatically. Using the above example with Material and Ore the end result would be the following list of tags: Ore, Material, Solid, Stone, Material=Solid and Material=Stone.

Sequence

A music container which plays its tracks in sequence.

SequenceMusicContainer with the following properties:

KeyTypeDescription
TypeConstant value: Sequence

This field controls the type, it must be set to the constant value "Sequence" to function as this type.

ParentString

When set this asset will inherit properties from the named asset.

When inheriting from another SequenceMusicContainer most properties will simply be copied from the parent asset to this asset. In the case where both child and parent provide a field the child field will simply replace the value provided by the parent, in the case of nested structures this will apply to the fields within the structure. In some cases the field may decide to act differently, for example: by merging the parent and child fields together.

Volume(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
LoopCountInteger defaults to: 1

Number of times to loop. 0 = infinite.

Weight(Nullable) Either Number defaults to: 1.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Relative weight for random selection when parent is a Random container.

SilenceAfter(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) after this container completes as a child.

ExitSilence(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) when this top-level container is replaced by another. Only valid in top-level containers.

FadeInDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-in duration in seconds.

FadeOutDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-out duration in seconds.

TransitionType(Nullable) Any one of the following String (defaults to FadeOutFadeIn):
MusicTransitionType
NameDescription
"Crossfade"
"FadeOutFadeIn"
"Immediate"

How a switch into this container behaves when no MusicTransition rule matches, and how a Horizontal parent moves into it.

TransitionDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Per-child override for transition duration. 0 = use parent's default.

ExitAt(Nullable)
MusicSyncConfig

MusicSyncConfig with the following properties:

KeyTypeDescription
Point(Nullable) SyncPoint

Which boundary to wait for: Immediate, NextBeat, NextBar, ExitMarker, or NextMarker.

Marker(Nullable) String

Marker name to sync to. Only used with Point: NextMarker. Omit to take the next marker of any name.

Offset(Nullable) BarBeatDuration

Signed offset from the boundary, as bars + beats + ms. Negative fires early, for lead-in material or to land on the last bar of a phrase.

BarMultipleInteger defaults to: 0

Only used with Point: NextBar. Waits for every Nth bar counted from the grid origin, so 4 hands over on four-bar phrase boundaries. Omit, 0 or 1 all mean every bar.

When the container playing hands over to this one, on that container's grid. Omit to let TransitionType decide: Immediate hands over at once, Crossfade at the outgoing container's exit marker, FadeOutFadeIn on the next bar. A matched MusicTransition overrides this.

Align(Nullable) Any one of the following String:
DestinationAlign
NameDescription
"EntryMarker"
"NamedMarker"
"SamePosition"

Where this container starts when a transition places it, on its own timeline. Omit to land its entry marker on the handoff. SamePosition carries the outgoing playhead across, which lines up only between arrangements sharing a grid and a loop length, so it suits a Horizontal phase and is rarely right between unrelated containers. Nothing checks that the lengths agree unless a MusicTransition spans the pair. A container seeked mid-file keeps a few milliseconds of fade even under a transition type that asks for none, since cutting into a waveform clicks. A matched MusicTransition overrides this. A phase reached by the previous one ending has no handoff to land against, so it starts at its own beginning.

AlignMarker(Nullable) String

Marker of this container to align to. Only used with Align: NamedMarker.

PlayToCompletionBoolean defaults to: false

If true, this container plays to completion before yielding to higher-priority music.

ResumeMemoryDuration(Nullable) Either Number defaults to: 30.0 or String that matches the pattern: ^(-?Infinity|NaN)$

How long to retain this container's playback state after leaving so a return resumes mid-track instead of restarting.

NameTranslationKey(Nullable) String

Translation key for the display name of this music container.

AudioCategory(Nullable) String

Reference to a AudioCategory asset

Audio category for volume routing. Honoured on any container, and the nearest one up the hierarchy from a playing leaf wins.

Tempo(Nullable)
TempoSettings

TempoSettings with the following properties:

KeyTypeDescription
Bpm(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
BeatsPerBarInteger defaults to: 0
BeatValueInteger defaults to: 0

Tempo and beat grid settings.

StateBindings(Nullable) Array of the type:
StateBindingConfig

StateBindingConfig with the following properties:

KeyTypeDescription
AudioState(Nullable) String

Id of the AudioState this binding subscribes to.

Deltas(Nullable) Array of the type: StateDeltaConfig

Per-state-value deltas. Unlisted values default to zero (no effect).

Subscribe this container to one or more AudioState axes. Per-state volume deltas will be applied to the container and its descendants.

Stingers(Nullable) Array of the type:
StingerBindingConfig

StingerBindingConfig with the following properties:

KeyTypeDescription
MusicEvent(Nullable) String

The event this binding answers. A free-form name, matched against what gameplay, an encounter, a state edge or a transition rule posts.

Stinger(Nullable) String

Reference to a Stinger asset

The stinger to play.

PlayAt(Nullable) MusicSyncConfig

Where on the playing music's grid the stinger lands. Omit to play immediately.

MinRepeatIntervalSeconds(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Window in which the named Stinger will not play again. Counted per stinger asset, so binding the same stinger from two events cannot bypass it.

ShortLead(Nullable) StingerShortLead

What to do when the sync point is closer than this stinger's own pickup. DropPickup plays from the entry marker so the accent still lands on the boundary, which sounds the same every time. Skip does not play it. Defer waits for the next occurrence, so the accent arrives late. TrimPickup keeps whatever fits, so how much survives changes with when the event landed.

Answer music events with stingers. Inherited by descendants. The deepest binding for an event wins, so a parent can give a default that a child overrides.

ChildrenArray of the type: Either String or MusicContainer

Reference to a MusicContainer asset

Tags(Nullable) Map of the following:
Map
KeyType
any StringArray of String

Tags are a general way to describe an asset that can be interpreted by other systems in a way they see fit.

For example you could tag something with a Material tag with the values Solid and Stone, And another single tag Ore.

Tags will be expanded into a single list of tags automatically. Using the above example with Material and Ore the end result would be the following list of tags: Ore, Material, Solid, Stone, Material=Solid and Material=Stone.

SingleTrack

A music container which plays a single audio track. Wrap in a Segment for overlapping loop transitions, pre-entry placement, or vertical layering.

SingleTrackMusicContainer with the following properties:

KeyTypeDescription
TypeConstant value: SingleTrack

This field controls the type, it must be set to the constant value "SingleTrack" to function as this type.

ParentString

When set this asset will inherit properties from the named asset.

When inheriting from another SingleTrackMusicContainer most properties will simply be copied from the parent asset to this asset. In the case where both child and parent provide a field the child field will simply replace the value provided by the parent, in the case of nested structures this will apply to the fields within the structure. In some cases the field may decide to act differently, for example: by merging the parent and child fields together.

Volume(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
LoopCountInteger defaults to: 1

Number of times to loop. 0 = infinite.

Weight(Nullable) Either Number defaults to: 1.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Relative weight for random selection when parent is a Random container.

SilenceAfter(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) after this container completes as a child.

ExitSilence(Nullable)
Rangef

Rangef with the following properties:

KeyTypeDescription
MinNumber defaults to: 0.0
MaxNumber defaults to: 0.0

Random silence range (seconds) when this top-level container is replaced by another. Only valid in top-level containers.

FadeInDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-in duration in seconds.

FadeOutDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Fade-out duration in seconds.

TransitionType(Nullable) Any one of the following String (defaults to FadeOutFadeIn):
MusicTransitionType
NameDescription
"Crossfade"
"FadeOutFadeIn"
"Immediate"

How a switch into this container behaves when no MusicTransition rule matches, and how a Horizontal parent moves into it.

TransitionDuration(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Per-child override for transition duration. 0 = use parent's default.

ExitAt(Nullable)
MusicSyncConfig

MusicSyncConfig with the following properties:

KeyTypeDescription
Point(Nullable) SyncPoint

Which boundary to wait for: Immediate, NextBeat, NextBar, ExitMarker, or NextMarker.

Marker(Nullable) String

Marker name to sync to. Only used with Point: NextMarker. Omit to take the next marker of any name.

Offset(Nullable) BarBeatDuration

Signed offset from the boundary, as bars + beats + ms. Negative fires early, for lead-in material or to land on the last bar of a phrase.

BarMultipleInteger defaults to: 0

Only used with Point: NextBar. Waits for every Nth bar counted from the grid origin, so 4 hands over on four-bar phrase boundaries. Omit, 0 or 1 all mean every bar.

When the container playing hands over to this one, on that container's grid. Omit to let TransitionType decide: Immediate hands over at once, Crossfade at the outgoing container's exit marker, FadeOutFadeIn on the next bar. A matched MusicTransition overrides this.

Align(Nullable) Any one of the following String:
DestinationAlign
NameDescription
"EntryMarker"
"NamedMarker"
"SamePosition"

Where this container starts when a transition places it, on its own timeline. Omit to land its entry marker on the handoff. SamePosition carries the outgoing playhead across, which lines up only between arrangements sharing a grid and a loop length, so it suits a Horizontal phase and is rarely right between unrelated containers. Nothing checks that the lengths agree unless a MusicTransition spans the pair. A container seeked mid-file keeps a few milliseconds of fade even under a transition type that asks for none, since cutting into a waveform clicks. A matched MusicTransition overrides this. A phase reached by the previous one ending has no handoff to land against, so it starts at its own beginning.

AlignMarker(Nullable) String

Marker of this container to align to. Only used with Align: NamedMarker.

PlayToCompletionBoolean defaults to: false

If true, this container plays to completion before yielding to higher-priority music.

ResumeMemoryDuration(Nullable) Either Number defaults to: 30.0 or String that matches the pattern: ^(-?Infinity|NaN)$

How long to retain this container's playback state after leaving so a return resumes mid-track instead of restarting.

NameTranslationKey(Nullable) String

Translation key for the display name of this music container.

AudioCategory(Nullable) String

Reference to a AudioCategory asset

Audio category for volume routing. Honoured on any container, and the nearest one up the hierarchy from a playing leaf wins.

Tempo(Nullable)
TempoSettings

TempoSettings with the following properties:

KeyTypeDescription
Bpm(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
BeatsPerBarInteger defaults to: 0
BeatValueInteger defaults to: 0

Tempo and beat grid settings.

StateBindings(Nullable) Array of the type:
StateBindingConfig

StateBindingConfig with the following properties:

KeyTypeDescription
AudioState(Nullable) String

Id of the AudioState this binding subscribes to.

Deltas(Nullable) Array of the type: StateDeltaConfig

Per-state-value deltas. Unlisted values default to zero (no effect).

Subscribe this container to one or more AudioState axes. Per-state volume deltas will be applied to the container and its descendants.

Stingers(Nullable) Array of the type:
StingerBindingConfig

StingerBindingConfig with the following properties:

KeyTypeDescription
MusicEvent(Nullable) String

The event this binding answers. A free-form name, matched against what gameplay, an encounter, a state edge or a transition rule posts.

Stinger(Nullable) String

Reference to a Stinger asset

The stinger to play.

PlayAt(Nullable) MusicSyncConfig

Where on the playing music's grid the stinger lands. Omit to play immediately.

MinRepeatIntervalSeconds(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$

Window in which the named Stinger will not play again. Counted per stinger asset, so binding the same stinger from two events cannot bypass it.

ShortLead(Nullable) StingerShortLead

What to do when the sync point is closer than this stinger's own pickup. DropPickup plays from the entry marker so the accent still lands on the boundary, which sounds the same every time. Skip does not play it. Defer waits for the next occurrence, so the accent arrives late. TrimPickup keeps whatever fits, so how much survives changes with when the event landed.

Answer music events with stingers. Inherited by descendants. The deepest binding for an event wins, so a parent can give a default that a child overrides.

Track(Nullable) String

Reference to a common asset in the folder:

  • Common/Music/
with the extension: *.ogg
Tags(Nullable) Map of the following:
Map
KeyType
any StringArray of String

Tags are a general way to describe an asset that can be interpreted by other systems in a way they see fit.

For example you could tag something with a Material tag with the values Solid and Stone, And another single tag Ore.

Tags will be expanded into a single list of tags automatically. Using the above example with Material and Ore the end result would be the following list of tags: Ore, Material, Solid, Stone, Material=Solid and Material=Stone.

Notes:

Types referenced by this type

SyncPoint

(Nullable) Any one of the following String (defaults to Immediate):

NameDescription
"Immediate"
"NextBeat"
"NextBar"
"ExitMarker"
"NextMarker"

StingerShortLead

(Nullable) Any one of the following String (defaults to DropPickup):

NameDescription
"DropPickup"
"Skip"
"Defer"
"TrimPickup"

On this page