Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
concepts.hpp
Go to the documentation of this file.
1// Generated by core/interchange/tools/capability_emit.py -- do not edit.
2// Source of truth: core/interchange/capabilities/*.json
3#pragma once
4
5#include <cstddef>
6#include <cstdint>
7#include <string_view>
8
9namespace pulp::interchange {
10
76
77inline constexpr std::size_t kConceptCount = 61;
78
79namespace detail {
81 std::string_view id;
82 std::string_view summary;
84};
85
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},
148};
149} // namespace detail
150
152constexpr std::string_view concept_id(Concept concept_value) noexcept {
153 return detail::kConceptRecords[static_cast<std::size_t>(concept_value)].id;
154}
155
157constexpr std::string_view concept_summary(Concept concept_value) noexcept {
158 return detail::kConceptRecords[static_cast<std::size_t>(concept_value)].summary;
159}
160
163constexpr bool concept_detectable_in_model(Concept concept_value) noexcept {
164 return detail::kConceptRecords[static_cast<std::size_t>(concept_value)]
165 .detectable_in_model;
166}
167
170constexpr Concept concept_from_id(std::string_view id) noexcept {
171 for (std::size_t index = 0; index < kConceptCount; ++index) {
172 if (detail::kConceptRecords[index].id == id)
173 return static_cast<Concept>(index);
174 }
175 return Concept::Unknown;
176}
177
178} // namespace pulp::interchange
Definition capability_tables.hpp:62
constexpr ConceptRecord kConceptRecords[kConceptCount]
Definition concepts.hpp:86
Definition census.hpp:13
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
std::string_view id
Definition concepts.hpp:81
std::string_view summary
Definition concepts.hpp:82
bool detectable_in_model
Definition concepts.hpp:83