87 {
"unknown",
"A construct the reader could not classify. No format lists it, so it always refuses.",
false},
88 {
"track.flat",
"A track holding clips directly, with no children.",
true},
89 {
"track.group",
"A track that contains other tracks (folder/group/nested scope).",
false},
90 {
"track.video",
"A track whose content is picture rather than audio or notes.",
false},
91 {
"clip.musical",
"A clip anchored to musical time (canonical ticks).",
true},
92 {
"clip.absolute",
"A clip anchored to absolute time (samples at a rational rate).",
true},
93 {
"clip.note",
"Clip content that is a set of note events.",
true},
94 {
"clip.media",
"Clip content that references a media asset.",
true},
95 {
"clip.gain",
"Per-clip gain applied to the clip's content.",
true},
96 {
"clip.fades",
"Per-clip fade in and fade out durations.",
true},
97 {
"clip.crossfade",
"An overlap between two adjacent clips authored as one transition item.",
false},
98 {
"clip.warp",
"A time-warp map deforming clip content against timeline time.",
false},
99 {
"clip.launch",
"Non-arrangement clip playback (scenes, launcher grids).",
true},
100 {
"gap.explicit",
"A gap between clips authored as a first-class item rather than absence.",
false},
101 {
"tempo.single",
"One tempo governing the whole document.",
true},
102 {
"tempo.map",
"Tempo changing over the document at more than one point.",
true},
103 {
"meter.single",
"One time signature governing the whole document.",
true},
104 {
"meter.map",
"Time signature changing over the document at more than one point.",
true},
105 {
"marker",
"A named point or range on the timeline.",
true},
106 {
"timecode.origin",
"The wall-clock timecode the document's zero position represents.",
true},
107 {
"media.provenance",
"Where a media asset came from: source timecode, reel or tape name, original locator.",
false},
108 {
"mixer.track-gain",
"Static per-track gain.",
true},
109 {
"mixer.track-pan",
"Static per-track pan position.",
true},
110 {
"mixer.sends",
"Track routing to busses and auxiliary sends.",
false},
111 {
"automation.device-param",
"An automation lane targeting a device parameter.",
true},
112 {
"automation.track-gain",
"An automation lane targeting a track's gain.",
true},
113 {
"automation.track-pan",
"An automation lane targeting a track's pan.",
true},
114 {
"device.placement",
"A device occupying a slot in a track's chain, by identity.",
true},
115 {
"device.payload",
"A device's type and saved parameter state.",
true},
116 {
"effect.timewarp",
"An effect that remaps time rather than processing content.",
false},
117 {
"take.lane",
"An alternate recording lane holding takes alongside the arrangement.",
true},
118 {
"take.comp",
"A composite assembled by selecting segments across takes.",
true},
119 {
"track.freeze",
"A sealed offline render standing in for a track's live output.",
true},
120 {
"asset.sealed-hash",
"Media identity derived from a content hash of the actual bytes.",
true},
121 {
"asset.embedded-media",
"Media bytes carried inside the document package.",
true},
122 {
"asset.referenced-media",
"Media referenced by locator, stored outside the document.",
true},
123 {
"sequence.multiple",
"More than one sequence in the document.",
true},
124 {
"sequence.nested",
"A clip whose content is another sequence.",
true},
125 {
"content.registered",
"Typed extension clip content serialized through the schema registry.",
true},
126 {
"content.opaque",
"Uninterpreted clip content carried in a validated envelope.",
true},
127 {
"edit-rate.non-audio",
"Positions at a rate that does not convert exactly to the document's rate.",
false},
128 {
"context.chord-scale",
"A sequence-owned lane of chord and scale statements that other items read while compiling.",
true},
129 {
"context.groove",
"A sequence-owned groove: a swing setting and a repeating table of per-step timing and accent that other items read while compiling.",
true},
130 {
"clip.note-modifier",
"Per-note playback modifiers: probability, pass condition, and ratchet.",
true},
131 {
"clip.empty",
"A positioned clip with no note, media, registered, opaque, or nested-sequence content.",
true},
132 {
"tempo.ramp",
"A continuous tempo curve between two tempo-map points.",
true},
133 {
"clip.note-velocity-quantized",
"A note velocity that cannot be encoded as a sounding nonzero 7-bit Standard MIDI Note On without changing value.",
true},
134 {
"tempo.value-quantized",
"A tempo value that cannot round-trip exactly through an integer-microseconds-per-quarter representation.",
true},
135 {
"clip.media-window",
"A media clip that plays a source subrange rather than the referenced asset's complete frame range.",
true},
136 {
"clip.fade-shape",
"A fade whose gain curve is not the linear ramp, so a format carrying only fade durations changes what the transition sounds like.",
true},
137 {
"clip.midi-expression-lane",
"A continuous controller stream authored alongside a clip's notes -- control change, pitch bend, channel or poly pressure, program change, or a registered or assignable parameter -- carrying its own points independently of any note.",
true},
138 {
"sequence.section-role",
"A region that names the structural part it spans, beyond its free-text name.",
true},
139 {
"context.chord-bass",
"A chord statement naming the pitch class in the bass, rather than sounding root position.",
true},
140 {
"context.chord-extension",
"A chord statement carrying added scale degrees beyond its quality.",
true},
141 {
"context.chord-voicing",
"A chord statement carrying a hint for how a generator should spread its tones.",
true},
142 {
"tuning.project",
"A document-wide statement of the tuning every instrument plays in.",
true},
143 {
"tuning.instrument",
"One instrument overriding the document-wide tuning with its own.",
true},
144 {
"modulation.modulator",
"A track-owned generator of modulation signal, by identity and declared kind.",
true},
145 {
"modulation.macro",
"A track-owned named performer control that drives parameters through modulation routes.",
true},
146 {
"modulation.route-device-param",
"A modulation route contributing a depth-scaled offset to a device parameter, on top of whatever base value is in force.",
true},
147 {
"modulation.route-track-mixer",
"A modulation route contributing a depth-scaled offset to a track's own gain or pan.",
true},
165 .detectable_in_model;
171 for (std::size_t index = 0; index <
kConceptCount; ++index) {
173 return static_cast<Concept>(index);
Definition capability_tables.hpp:62
constexpr ConceptRecord kConceptRecords[kConceptCount]
Definition concepts.hpp:86
Concept
The format-neutral interchange concept vocabulary.
Definition concepts.hpp:13
@ DevicePlacement
Definition concepts.hpp:41
@ Marker
Definition concepts.hpp:32
@ DevicePayload
Definition concepts.hpp:42
@ AutomationTrackPan
Definition concepts.hpp:40
@ ClipWarp
Definition concepts.hpp:25
@ ClipMusical
Definition concepts.hpp:18
@ MeterSingle
Definition concepts.hpp:30
@ ContentOpaque
Definition concepts.hpp:53
@ MeterMap
Definition concepts.hpp:31
@ ContextChordScale
Definition concepts.hpp:55
@ ClipMidiExpressionLane
Definition concepts.hpp:64
@ AssetEmbeddedMedia
Definition concepts.hpp:48
@ MixerTrackPan
Definition concepts.hpp:36
@ TrackFreeze
Definition concepts.hpp:46
@ TrackFlat
Definition concepts.hpp:15
@ SequenceSectionRole
Definition concepts.hpp:65
@ TempoRamp
Definition concepts.hpp:59
@ TempoSingle
Definition concepts.hpp:28
@ TuningInstrument
Definition concepts.hpp:70
@ TimecodeOrigin
Definition concepts.hpp:33
@ ClipNote
Definition concepts.hpp:20
@ ClipEmpty
Definition concepts.hpp:58
@ ClipFadeShape
Definition concepts.hpp:63
@ AssetReferencedMedia
Definition concepts.hpp:49
@ ClipGain
Definition concepts.hpp:22
@ ContextChordVoicing
Definition concepts.hpp:68
@ SequenceNested
Definition concepts.hpp:51
@ ClipLaunch
Definition concepts.hpp:26
@ ClipAbsolute
Definition concepts.hpp:19
@ Unknown
Definition concepts.hpp:14
@ ContextGroove
Definition concepts.hpp:56
@ TuningProject
Definition concepts.hpp:69
@ SequenceMultiple
Definition concepts.hpp:50
@ MediaProvenance
Definition concepts.hpp:34
@ AssetSealedHash
Definition concepts.hpp:47
@ TrackGroup
Definition concepts.hpp:16
@ ModulationRouteTrackMixer
Definition concepts.hpp:74
@ ContextChordExtension
Definition concepts.hpp:67
@ GapExplicit
Definition concepts.hpp:27
@ TakeComp
Definition concepts.hpp:45
@ MixerTrackGain
Definition concepts.hpp:35
@ ModulationModulator
Definition concepts.hpp:71
@ AutomationTrackGain
Definition concepts.hpp:39
@ ModulationRouteDeviceParam
Definition concepts.hpp:73
@ TempoMap
Definition concepts.hpp:29
@ MixerSends
Definition concepts.hpp:37
@ TakeLane
Definition concepts.hpp:44
@ AutomationDeviceParam
Definition concepts.hpp:38
@ ClipMediaWindow
Definition concepts.hpp:62
@ EffectTimewarp
Definition concepts.hpp:43
@ ContextChordBass
Definition concepts.hpp:66
@ ClipNoteModifier
Definition concepts.hpp:57
@ ClipCrossfade
Definition concepts.hpp:24
@ ContentRegistered
Definition concepts.hpp:52
@ ClipFades
Definition concepts.hpp:23
@ TempoValueQuantized
Definition concepts.hpp:61
@ ModulationMacro
Definition concepts.hpp:72
@ ClipMedia
Definition concepts.hpp:21
@ ClipNoteVelocityQuantized
Definition concepts.hpp:60
@ TrackVideo
Definition concepts.hpp:17
@ EditRateNonAudio
Definition concepts.hpp:54
constexpr bool concept_detectable_in_model(Concept concept_value) noexcept
Whether a census over a timeline Project can observe this concept.
Definition concepts.hpp:163
constexpr std::string_view concept_summary(Concept concept_value) noexcept
One-line description of what the concept covers.
Definition concepts.hpp:157
constexpr std::size_t kConceptCount
Definition concepts.hpp:77
constexpr std::string_view concept_id(Concept concept_value) noexcept
The concept's stable string id, as written in the capability JSON.
Definition concepts.hpp:152
constexpr Concept concept_from_id(std::string_view id) noexcept
Resolve a string id to its concept.
Definition concepts.hpp:170
Definition concepts.hpp:80
std::string_view id
Definition concepts.hpp:81
std::string_view summary
Definition concepts.hpp:82
bool detectable_in_model
Definition concepts.hpp:83