summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/types.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour/types.h')
-rw-r--r--libs/ardour/ardour/types.h1356
1 files changed, 686 insertions, 670 deletions
diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h
index 366e303186..635b78334b 100644
--- a/libs/ardour/ardour/types.h
+++ b/libs/ardour/ardour/types.h
@@ -53,696 +53,712 @@ typedef int intptr_t;
namespace ARDOUR {
- class Source;
- class AudioSource;
- class Route;
- class Region;
- class Stripable;
- class VCA;
- class AutomationControl;
- class SlavableAutomationControl;
-
- typedef float Sample;
- typedef float pan_t;
- typedef float gain_t;
- typedef uint32_t layer_t;
- typedef uint64_t microseconds_t;
- typedef uint32_t pframes_t;
-
- /* rebind Temporal position types into ARDOUR namespace */
- typedef Temporal::samplecnt_t samplecnt_t;
- typedef Temporal::samplepos_t samplepos_t;
- typedef Temporal::sampleoffset_t sampleoffset_t;
-
- static const layer_t max_layer = UINT32_MAX;
-
- // a set of (time) intervals: first of pair is the offset of the start within the region, second is the offset of the end
- typedef std::list<std::pair<sampleoffset_t, sampleoffset_t> > AudioIntervalResult;
- // associate a set of intervals with regions (e.g. for silence detection)
- typedef std::map<boost::shared_ptr<ARDOUR::Region>,AudioIntervalResult> AudioIntervalMap;
-
- typedef std::list<boost::shared_ptr<Region> > RegionList;
-
- struct IOChange {
-
- enum Type {
- NoChange = 0,
- ConfigurationChanged = 0x1,
- ConnectionsChanged = 0x2
- } type;
-
- IOChange () : type (NoChange) {}
- IOChange (Type t) : type (t) {}
-
- /** channel count of IO before a ConfigurationChanged, if appropriate */
- ARDOUR::ChanCount before;
- /** channel count of IO after a ConfigurationChanged, if appropriate */
- ARDOUR::ChanCount after;
- };
-
- /* policies for inserting/pasting material where overlaps
- might be an issue.
- */
-
- enum InsertMergePolicy {
- InsertMergeReject, ///< no overlaps allowed
- InsertMergeRelax, ///< we just don't care about overlaps
- InsertMergeReplace, ///< replace old with new
- InsertMergeTruncateExisting, ///< shorten existing to avoid overlap
- InsertMergeTruncateAddition, ///< shorten new to avoid overlap
- InsertMergeExtend ///< extend new (or old) to the range of old+new
- };
-
- /** See evoral/Parameter.hpp
- *
- * When you add things here, you REALLY SHOULD add a case clause to
- * the constructor of ParameterDescriptor, unless the Controllables
- * that the enum refers to are completely standard (0-1.0 range, 0.0 as
- * normal, non-toggled, non-enumerated). Anything else needs to be
- * added there so that things that try to represent them can do so
- * with as much information as possible.
- */
- enum AutomationType {
- NullAutomation,
- GainAutomation,
- PanAzimuthAutomation,
- PanElevationAutomation,
- PanWidthAutomation,
- PanFrontBackAutomation,
- PanLFEAutomation,
- PluginAutomation,
- PluginPropertyAutomation,
- SoloAutomation,
- SoloIsolateAutomation,
- SoloSafeAutomation,
- MuteAutomation,
- MidiCCAutomation,
- MidiPgmChangeAutomation,
- MidiPitchBenderAutomation,
- MidiChannelPressureAutomation,
- MidiNotePressureAutomation,
- MidiSystemExclusiveAutomation,
- FadeInAutomation,
- FadeOutAutomation,
- EnvelopeAutomation,
- RecEnableAutomation,
- RecSafeAutomation,
- TrimAutomation,
- PhaseAutomation,
- MonitoringAutomation,
- BusSendLevel,
- BusSendEnable,
-
- /* used only by Controllable Descriptor to access send parameters */
-
- SendLevelAutomation,
- SendEnableAutomation,
- SendAzimuthAutomation,
- };
-
- enum AutoState {
- Off = 0x00,
- Write = 0x01,
- Touch = 0x02,
- Play = 0x04,
- Latch = 0x08
- };
-
- std::string auto_state_to_string (AutoState);
- AutoState string_to_auto_state (std::string);
-
- enum AlignStyle {
- CaptureTime,
- ExistingMaterial
- };
-
- enum AlignChoice {
- UseCaptureTime,
- UseExistingMaterial,
- Automatic
- };
-
- enum MeterPoint {
- MeterInput,
- MeterPreFader,
- MeterPostFader,
- MeterOutput,
- MeterCustom
- };
-
- enum DiskIOPoint {
- DiskIOPreFader, /* after the trim control, but before other processors */
- DiskIOPostFader, /* before the main outs, after other processors */
- DiskIOCustom, /* up to the user. Caveat Emptor! */
- };
-
- enum MeterType {
- MeterMaxSignal = 0x0001,
- MeterMaxPeak = 0x0002,
- MeterPeak = 0x0004,
- MeterKrms = 0x0008,
- MeterK20 = 0x0010,
- MeterK14 = 0x0020,
- MeterIEC1DIN = 0x0040,
- MeterIEC1NOR = 0x0080,
- MeterIEC2BBC = 0x0100,
- MeterIEC2EBU = 0x0200,
- MeterVU = 0x0400,
- MeterK12 = 0x0800,
- MeterPeak0dB = 0x1000,
- MeterMCP = 0x2000
- };
-
- enum TrackMode {
- Normal,
- NonLayered,
- Destructive
- };
-
- enum NoteMode {
- Sustained,
- Percussive
- };
-
- enum ChannelMode {
- AllChannels = 0, ///< Pass through all channel information unmodified
- FilterChannels, ///< Ignore events on certain channels
- ForceChannel ///< Force all events to a certain channel
- };
-
- enum ColorMode {
- MeterColors = 0,
- ChannelColors,
- TrackColor
- };
-
- enum RoundMode {
- RoundDownMaybe = -2, ///< Round down only if necessary
- RoundDownAlways = -1, ///< Always round down, even if on a division
- RoundNearest = 0, ///< Round to nearest
- RoundUpAlways = 1, ///< Always round up, even if on a division
- RoundUpMaybe = 2 ///< Round up only if necessary
- };
-
- enum SnapPref {
- SnapToAny_Visual = 0, /**< Snap to the editor's visual snap
- * (incoprorating snap prefs and the current zoom scaling)
- * this defines the behavior for visual mouse drags, for example */
-
- SnapToGrid_Scaled = 1, /**< Snap to the selected grid quantization with visual scaling.
- * Ignores other snap preferences (markers, regions, etc)
- * this defines the behavior for nudging the playhead to next/prev grid, for example */
-
- SnapToGrid_Unscaled = 2, /**< Snap to the selected grid quantization.
- * If one is selected, and ignore any visual scaling
- * this is the behavior for automated processes like "snap regions to grid"
- * but note that midi quantization uses its own mechanism, not the grid */
- };
-
- class AnyTime {
- public:
- enum Type {
- Timecode,
- BBT,
- Samples,
- Seconds
- };
-
- Type type;
-
- Timecode::Time timecode;
- Timecode::BBT_Time bbt;
-
- union {
- samplecnt_t samples;
- double seconds;
- };
-
- AnyTime() { type = Samples; samples = 0; }
-
- bool operator== (AnyTime const & other) const {
- if (type != other.type) { return false; }
-
- switch (type) {
- case Timecode:
- return timecode == other.timecode;
- case BBT:
- return bbt == other.bbt;
- case Samples:
- return samples == other.samples;
- case Seconds:
- return seconds == other.seconds;
- }
- return false; // get rid of warning
- }
-
- bool not_zero() const
- {
- switch (type) {
- case Timecode:
- return timecode.hours != 0 || timecode.minutes != 0 ||
- timecode.seconds != 0 || timecode.frames != 0;
- case BBT:
- return bbt.bars != 0 || bbt.beats != 0 || bbt.ticks != 0;
- case Samples:
- return samples != 0;
- case Seconds:
- return seconds != 0;
- }
-
- abort(); /* NOTREACHED */
- return false;
- }
- };
-
- /* used for translating audio samples to an exact musical position using a note divisor.
- an exact musical position almost never falls exactly on an audio sample, but for sub-sample
- musical accuracy we need to derive exact musical locations from a sample position
- the division follows TempoMap::exact_beat_at_sample().
- division
- -1 musical location is the bar closest to sample
- 0 musical location is the musical position of the sample
- 1 musical location is the BBT beat closest to sample
- n musical location is the quarter-note division n closest to sample
- */
- struct MusicSample {
- samplepos_t sample;
- int32_t division;
-
- MusicSample (samplepos_t f, int32_t d) : sample (f), division (d) {}
-
- void set (samplepos_t f, int32_t d) {sample = f; division = d; }
-
- MusicSample operator- (MusicSample other) { return MusicSample (sample - other.sample, 0); }
- };
-
- /* XXX: slightly unfortunate that there is this and Evoral::Range<>,
- but this has a uint32_t id which Evoral::Range<> does not.
- */
- struct AudioRange {
- samplepos_t start;
- samplepos_t end;
- uint32_t id;
-
- AudioRange (samplepos_t s, samplepos_t e, uint32_t i) : start (s), end (e) , id (i) {}
-
- samplecnt_t length() const { return end - start + 1; }
-
- bool operator== (const AudioRange& other) const {
- return start == other.start && end == other.end && id == other.id;
- }
-
- bool equal (const AudioRange& other) const {
- return start == other.start && end == other.end;
- }
+class Source;
+class AudioSource;
+class Route;
+class Region;
+class Stripable;
+class VCA;
+class AutomationControl;
+class SlavableAutomationControl;
+
+typedef float Sample;
+typedef float pan_t;
+typedef float gain_t;
+typedef uint32_t layer_t;
+typedef uint64_t microseconds_t;
+typedef uint32_t pframes_t;
+
+/* rebind Temporal position types into ARDOUR namespace */
+typedef Temporal::samplecnt_t samplecnt_t;
+typedef Temporal::samplepos_t samplepos_t;
+typedef Temporal::sampleoffset_t sampleoffset_t;
+
+static const layer_t max_layer = UINT32_MAX;
+
+// a set of (time) intervals: first of pair is the offset of the start within the region, second is the offset of the end
+typedef std::list<std::pair<sampleoffset_t, sampleoffset_t> > AudioIntervalResult;
+// associate a set of intervals with regions (e.g. for silence detection)
+typedef std::map<boost::shared_ptr<ARDOUR::Region>,AudioIntervalResult> AudioIntervalMap;
+
+typedef std::list<boost::shared_ptr<Region> > RegionList;
+
+struct IOChange {
+
+ enum Type {
+ NoChange = 0,
+ ConfigurationChanged = 0x1,
+ ConnectionsChanged = 0x2
+ } type;
+
+ IOChange () : type (NoChange) {}
+ IOChange (Type t) : type (t) {}
+
+ /** channel count of IO before a ConfigurationChanged, if appropriate */
+ ARDOUR::ChanCount before;
+ /** channel count of IO after a ConfigurationChanged, if appropriate */
+ ARDOUR::ChanCount after;
+};
+
+/* policies for inserting/pasting material where overlaps
+ might be an issue.
+*/
- Evoral::OverlapType coverage (samplepos_t s, samplepos_t e) const {
- return Evoral::coverage (start, end, s, e);
+enum InsertMergePolicy {
+ InsertMergeReject, ///< no overlaps allowed
+ InsertMergeRelax, ///< we just don't care about overlaps
+ InsertMergeReplace, ///< replace old with new
+ InsertMergeTruncateExisting, ///< shorten existing to avoid overlap
+ InsertMergeTruncateAddition, ///< shorten new to avoid overlap
+ InsertMergeExtend ///< extend new (or old) to the range of old+new
+};
+
+/** See evoral/Parameter.hpp
+ *
+ * When you add things here, you REALLY SHOULD add a case clause to
+ * the constructor of ParameterDescriptor, unless the Controllables
+ * that the enum refers to are completely standard (0-1.0 range, 0.0 as
+ * normal, non-toggled, non-enumerated). Anything else needs to be
+ * added there so that things that try to represent them can do so
+ * with as much information as possible.
+ */
+enum AutomationType {
+ NullAutomation,
+ GainAutomation,
+ PanAzimuthAutomation,
+ PanElevationAutomation,
+ PanWidthAutomation,
+ PanFrontBackAutomation,
+ PanLFEAutomation,
+ PluginAutomation,
+ PluginPropertyAutomation,
+ SoloAutomation,
+ SoloIsolateAutomation,
+ SoloSafeAutomation,
+ MuteAutomation,
+ MidiCCAutomation,
+ MidiPgmChangeAutomation,
+ MidiPitchBenderAutomation,
+ MidiChannelPressureAutomation,
+ MidiNotePressureAutomation,
+ MidiSystemExclusiveAutomation,
+ FadeInAutomation,
+ FadeOutAutomation,
+ EnvelopeAutomation,
+ RecEnableAutomation,
+ RecSafeAutomation,
+ TrimAutomation,
+ PhaseAutomation,
+ MonitoringAutomation,
+ BusSendLevel,
+ BusSendEnable,
+
+ /* used only by Controllable Descriptor to access send parameters */
+
+ SendLevelAutomation,
+ SendEnableAutomation,
+ SendAzimuthAutomation,
+};
+
+enum AutoState {
+ Off = 0x00,
+ Write = 0x01,
+ Touch = 0x02,
+ Play = 0x04,
+ Latch = 0x08
+};
+
+std::string auto_state_to_string (AutoState);
+AutoState string_to_auto_state (std::string);
+
+enum AlignStyle {
+ CaptureTime,
+ ExistingMaterial
+};
+
+enum AlignChoice {
+ UseCaptureTime,
+ UseExistingMaterial,
+ Automatic
+};
+
+enum MeterPoint {
+ MeterInput,
+ MeterPreFader,
+ MeterPostFader,
+ MeterOutput,
+ MeterCustom
+};
+
+enum DiskIOPoint {
+ DiskIOPreFader, /* after the trim control, but before other processors */
+ DiskIOPostFader, /* before the main outs, after other processors */
+ DiskIOCustom, /* up to the user. Caveat Emptor! */
+};
+
+enum MeterType {
+ MeterMaxSignal = 0x0001,
+ MeterMaxPeak = 0x0002,
+ MeterPeak = 0x0004,
+ MeterKrms = 0x0008,
+ MeterK20 = 0x0010,
+ MeterK14 = 0x0020,
+ MeterIEC1DIN = 0x0040,
+ MeterIEC1NOR = 0x0080,
+ MeterIEC2BBC = 0x0100,
+ MeterIEC2EBU = 0x0200,
+ MeterVU = 0x0400,
+ MeterK12 = 0x0800,
+ MeterPeak0dB = 0x1000,
+ MeterMCP = 0x2000
+};
+
+enum TrackMode {
+ Normal,
+ NonLayered,
+ Destructive
+};
+
+enum NoteMode {
+ Sustained,
+ Percussive
+};
+
+enum ChannelMode {
+ AllChannels = 0, ///< Pass through all channel information unmodified
+ FilterChannels, ///< Ignore events on certain channels
+ ForceChannel ///< Force all events to a certain channel
+};
+
+enum ColorMode {
+ MeterColors = 0,
+ ChannelColors,
+ TrackColor
+};
+
+enum RoundMode {
+ RoundDownMaybe = -2, ///< Round down only if necessary
+ RoundDownAlways = -1, ///< Always round down, even if on a division
+ RoundNearest = 0, ///< Round to nearest
+ RoundUpAlways = 1, ///< Always round up, even if on a division
+ RoundUpMaybe = 2 ///< Round up only if necessary
+};
+
+enum SnapPref {
+ SnapToAny_Visual = 0, /**< Snap to the editor's visual snap
+ * (incoprorating snap prefs and the current zoom scaling)
+ * this defines the behavior for visual mouse drags, for example */
+
+ SnapToGrid_Scaled = 1, /**< Snap to the selected grid quantization with visual scaling.
+ * Ignores other snap preferences (markers, regions, etc)
+ * this defines the behavior for nudging the playhead to next/prev grid, for example */
+
+ SnapToGrid_Unscaled = 2, /**< Snap to the selected grid quantization.
+ * If one is selected, and ignore any visual scaling
+ * this is the behavior for automated processes like "snap regions to grid"
+ * but note that midi quantization uses its own mechanism, not the grid */
+};
+
+class AnyTime {
+ public:
+ enum Type {
+ Timecode,
+ BBT,
+ Samples,
+ Seconds
+ };
+
+ Type type;
+
+ Timecode::Time timecode;
+ Timecode::BBT_Time bbt;
+
+ union {
+ samplecnt_t samples;
+ double seconds;
+ };
+
+ AnyTime() { type = Samples; samples = 0; }
+
+ bool operator== (AnyTime const & other) const {
+ if (type != other.type) { return false; }
+
+ switch (type) {
+ case Timecode:
+ return timecode == other.timecode;
+ case BBT:
+ return bbt == other.bbt;
+ case Samples:
+ return samples == other.samples;
+ case Seconds:
+ return seconds == other.seconds;
}
- };
-
- struct MusicRange {
- Timecode::BBT_Time start;
- Timecode::BBT_Time end;
- uint32_t id;
-
- MusicRange (Timecode::BBT_Time& s, Timecode::BBT_Time& e, uint32_t i)
- : start (s), end (e), id (i) {}
-
- bool operator== (const MusicRange& other) const {
- return start == other.start && end == other.end && id == other.id;
+ return false; // get rid of warning
+ }
+
+ bool not_zero() const
+ {
+ switch (type) {
+ case Timecode:
+ return timecode.hours != 0 || timecode.minutes != 0 ||
+ timecode.seconds != 0 || timecode.frames != 0;
+ case BBT:
+ return bbt.bars != 0 || bbt.beats != 0 || bbt.ticks != 0;
+ case Samples:
+ return samples != 0;
+ case Seconds:
+ return seconds != 0;
}
- bool equal (const MusicRange& other) const {
- return start == other.start && end == other.end;
- }
- };
-
- /*
- Slowest = 6.6dB/sec falloff at update rate of 40ms
- Slow = 6.8dB/sec falloff at update rate of 40ms
- */
-
- enum MeterFalloff {
- MeterFalloffOff = 0,
- MeterFalloffSlowest = 1,
- MeterFalloffSlow = 2,
- MeterFalloffSlowish = 3,
- MeterFalloffModerate = 4,
- MeterFalloffMedium = 5,
- MeterFalloffFast = 6,
- MeterFalloffFaster = 7,
- MeterFalloffFastest = 8,
- };
-
- enum MeterHold {
- MeterHoldOff = 0,
- MeterHoldShort = 40,
- MeterHoldMedium = 100,
- MeterHoldLong = 200
- };
-
- enum EditMode {
- Slide,
- Splice,
- Ripple,
- Lock
- };
-
- enum RegionSelectionAfterSplit {
- None = 0,
- NewlyCreatedLeft = 1, // bit 0
- NewlyCreatedRight = 2, // bit 1
- NewlyCreatedBoth = 3,
- Existing = 4, // bit 2
- ExistingNewlyCreatedLeft = 5,
- ExistingNewlyCreatedRight = 6,
- ExistingNewlyCreatedBoth = 7
- };
-
- enum RegionPoint {
- Start,
- End,
- SyncPoint
- };
-
- enum Placement {
- PreFader,
- PostFader
- };
-
- enum MonitorModel {
- HardwareMonitoring, ///< JACK does monitoring
- SoftwareMonitoring, ///< Ardour does monitoring
- ExternalMonitoring ///< we leave monitoring to the audio hardware
- };
-
- enum MonitorChoice {
- MonitorAuto = 0,
- MonitorInput = 0x1,
- MonitorDisk = 0x2,
- MonitorCue = 0x3,
- };
-
- enum MonitorState {
- MonitoringSilence = 0x1,
- MonitoringInput = 0x2,
- MonitoringDisk = 0x4,
- MonitoringCue = 0x6,
- };
-
- enum MeterState {
- MeteringInput, ///< meter the input IO, regardless of what is going through the route
- MeteringRoute ///< meter what is going through the route
- };
-
- enum VUMeterStandard {
- MeteringVUfrench, // 0VU = -2dBu
- MeteringVUamerican, // 0VU = 0dBu
- MeteringVUstandard, // 0VU = +4dBu
- MeteringVUeight // 0VU = +8dBu
- };
-
- enum MeterLineUp {
- MeteringLineUp24,
- MeteringLineUp20,
- MeteringLineUp18,
- MeteringLineUp15
- };
-
- enum PFLPosition {
- /** PFL signals come from before pre-fader processors */
- PFLFromBeforeProcessors,
- /** PFL signals come pre-fader but after pre-fader processors */
- PFLFromAfterProcessors
- };
-
- enum AFLPosition {
- /** AFL signals come post-fader and before post-fader processors */
- AFLFromBeforeProcessors,
- /** AFL signals come post-fader but after post-fader processors */
- AFLFromAfterProcessors
- };
-
- enum ClockDeltaMode {
- NoDelta,
- DeltaEditPoint,
- DeltaOriginMarker
- };
-
- enum DenormalModel {
- DenormalNone,
- DenormalFTZ,
- DenormalDAZ,
- DenormalFTZDAZ
- };
-
- enum LayerModel {
- LaterHigher,
- Manual
- };
-
- enum ListenPosition {
- AfterFaderListen,
- PreFaderListen
- };
-
- enum AutoConnectOption {
- ManualConnect = 0x0,
- AutoConnectPhysical = 0x1,
- AutoConnectMaster = 0x2
- };
-
- enum TracksAutoNamingRule {
- UseDefaultNames = 0x1,
- NameAfterDriver = 0x2
- };
-
- enum SampleFormat {
- FormatFloat = 0,
- FormatInt24,
- FormatInt16
- };
-
- int format_data_width (ARDOUR::SampleFormat);
-
- enum CDMarkerFormat {
- CDMarkerNone,
- CDMarkerCUE,
- CDMarkerTOC,
- MP4Chaps
- };
-
- enum HeaderFormat {
- BWF,
- WAVE,
- WAVE64,
- CAF,
- AIFF,
- iXML,
- RF64,
- RF64_WAV,
- MBWF,
- };
+ abort(); /* NOTREACHED */
+ return false;
+ }
+};
+
+/* used for translating audio samples to an exact musical position using a note divisor.
+ an exact musical position almost never falls exactly on an audio sample, but for sub-sample
+ musical accuracy we need to derive exact musical locations from a sample position
+ the division follows TempoMap::exact_beat_at_sample().
+ division
+ -1 musical location is the bar closest to sample
+ 0 musical location is the musical position of the sample
+ 1 musical location is the BBT beat closest to sample
+ n musical location is the quarter-note division n closest to sample
+*/
+struct MusicSample {
+ samplepos_t sample;
+ int32_t division;
- struct PeakData {
- typedef Sample PeakDatum;
+ MusicSample (samplepos_t f, int32_t d) : sample (f), division (d) {}
- PeakDatum min;
- PeakDatum max;
- };
+ void set (samplepos_t f, int32_t d) {sample = f; division = d; }
- enum RunContext {
- ButlerContext = 0,
- TransportContext,
- ExportContext
- };
+ MusicSample operator- (MusicSample other) { return MusicSample (sample - other.sample, 0); }
+};
- enum SyncSource {
- /* These are "synonyms". It is important for JACK to be first
- both here and in enums.cc, so that the string "JACK" is
- correctly recognized in older session and preference files.
- */
- JACK = 0,
- Engine = 0,
- MTC,
- MIDIClock,
- LTC
- };
-
- enum ShuttleBehaviour {
- Sprung,
- Wheel
- };
-
- enum ShuttleUnits {
- Percentage,
- Semitones
- };
+/* XXX: slightly unfortunate that there is this and Evoral::Range<>,
+ but this has a uint32_t id which Evoral::Range<> does not.
+*/
+struct AudioRange {
+ samplepos_t start;
+ samplepos_t end;
+ uint32_t id;
- typedef std::vector<boost::shared_ptr<Source> > SourceList;
+ AudioRange (samplepos_t s, samplepos_t e, uint32_t i) : start (s), end (e) , id (i) {}
- enum SrcQuality {
- SrcBest,
- SrcGood,
- SrcQuick,
- SrcFast,
- SrcFastest
- };
+ samplecnt_t length() const { return end - start + 1; }
- typedef std::list<samplepos_t> AnalysisFeatureList;
+ bool operator== (const AudioRange& other) const {
+ return start == other.start && end == other.end && id == other.id;
+ }
- typedef std::list<boost::shared_ptr<Route> > RouteList;
- typedef std::list<boost::shared_ptr<Stripable> > StripableList;
- typedef std::list<boost::weak_ptr <Route> > WeakRouteList;
- typedef std::list<boost::weak_ptr <Stripable> > WeakStripableList;
- typedef std::list<boost::shared_ptr<AutomationControl> > ControlList;
- typedef std::list<boost::shared_ptr<SlavableAutomationControl> > SlavableControlList;
- typedef std::set <boost::shared_ptr<AutomationControl> > AutomationControlSet;
+ bool equal (const AudioRange& other) const {
+ return start == other.start && end == other.end;
+ }
- typedef std::list<boost::shared_ptr<VCA> > VCAList;
+ Evoral::OverlapType coverage (samplepos_t s, samplepos_t e) const {
+ return Evoral::coverage (start, end, s, e);
+ }
+};
- class Bundle;
- typedef std::vector<boost::shared_ptr<Bundle> > BundleList;
+struct MusicRange {
+ Timecode::BBT_Time start;
+ Timecode::BBT_Time end;
+ uint32_t id;
- enum RegionEquivalence {
- Exact,
- Enclosed,
- Overlap
- };
-
- enum WaveformScale {
- Linear,
- Logarithmic
- };
+ MusicRange (Timecode::BBT_Time& s, Timecode::BBT_Time& e, uint32_t i)
+ : start (s), end (e), id (i) {}
- enum WaveformShape {
- Traditional,
- Rectified
- };
+ bool operator== (const MusicRange& other) const {
+ return start == other.start && end == other.end && id == other.id;
+ }
- struct CleanupReport {
- std::vector<std::string> paths;
- size_t space;
- };
+ bool equal (const MusicRange& other) const {
+ return start == other.start && end == other.end;
+ }
+};
- enum PositionLockStyle {
- AudioTime,
- MusicTime
- };
+/*
+ Slowest = 6.6dB/sec falloff at update rate of 40ms
+ Slow = 6.8dB/sec falloff at update rate of 40ms
+*/
- /** A struct used to describe changes to processors in a route.
- * This is useful because objects that respond to a change in processors
- * can optimise what work they do based on details of what has changed.
+enum MeterFalloff {
+ MeterFalloffOff = 0,
+ MeterFalloffSlowest = 1,
+ MeterFalloffSlow = 2,
+ MeterFalloffSlowish = 3,
+ MeterFalloffModerate = 4,
+ MeterFalloffMedium = 5,
+ MeterFalloffFast = 6,
+ MeterFalloffFaster = 7,
+ MeterFalloffFastest = 8,
+};
+
+enum MeterHold {
+ MeterHoldOff = 0,
+ MeterHoldShort = 40,
+ MeterHoldMedium = 100,
+ MeterHoldLong = 200
+};
+
+enum EditMode {
+ Slide,
+ Splice,
+ Ripple,
+ Lock
+};
+
+enum RegionSelectionAfterSplit {
+ None = 0,
+ NewlyCreatedLeft = 1, // bit 0
+ NewlyCreatedRight = 2, // bit 1
+ NewlyCreatedBoth = 3,
+ Existing = 4, // bit 2
+ ExistingNewlyCreatedLeft = 5,
+ ExistingNewlyCreatedRight = 6,
+ ExistingNewlyCreatedBoth = 7
+};
+
+enum RegionPoint {
+ Start,
+ End,
+ SyncPoint
+};
+
+enum Placement {
+ PreFader,
+ PostFader
+};
+
+enum MonitorModel {
+ HardwareMonitoring, ///< JACK does monitoring
+ SoftwareMonitoring, ///< Ardour does monitoring
+ ExternalMonitoring ///< we leave monitoring to the audio hardware
+};
+
+enum MonitorChoice {
+ MonitorAuto = 0,
+ MonitorInput = 0x1,
+ MonitorDisk = 0x2,
+ MonitorCue = 0x3,
+};
+
+enum MonitorState {
+ MonitoringSilence = 0x1,
+ MonitoringInput = 0x2,
+ MonitoringDisk = 0x4,
+ MonitoringCue = 0x6,
+};
+
+enum MeterState {
+ MeteringInput, ///< meter the input IO, regardless of what is going through the route
+ MeteringRoute ///< meter what is going through the route
+};
+
+enum VUMeterStandard {
+ MeteringVUfrench, // 0VU = -2dBu
+ MeteringVUamerican, // 0VU = 0dBu
+ MeteringVUstandard, // 0VU = +4dBu
+ MeteringVUeight // 0VU = +8dBu
+};
+
+enum MeterLineUp {
+ MeteringLineUp24,
+ MeteringLineUp20,
+ MeteringLineUp18,
+ MeteringLineUp15
+};
+
+enum PFLPosition {
+ /** PFL signals come from before pre-fader processors */
+ PFLFromBeforeProcessors,
+ /** PFL signals come pre-fader but after pre-fader processors */
+ PFLFromAfterProcessors
+};
+
+enum AFLPosition {
+ /** AFL signals come post-fader and before post-fader processors */
+ AFLFromBeforeProcessors,
+ /** AFL signals come post-fader but after post-fader processors */
+ AFLFromAfterProcessors
+};
+
+enum ClockDeltaMode {
+ NoDelta,
+ DeltaEditPoint,
+ DeltaOriginMarker
+};
+
+enum DenormalModel {
+ DenormalNone,
+ DenormalFTZ,
+ DenormalDAZ,
+ DenormalFTZDAZ
+};
+
+enum LayerModel {
+ LaterHigher,
+ Manual
+};
+
+enum ListenPosition {
+ AfterFaderListen,
+ PreFaderListen
+};
+
+enum AutoConnectOption {
+ ManualConnect = 0x0,
+ AutoConnectPhysical = 0x1,
+ AutoConnectMaster = 0x2
+};
+
+enum TracksAutoNamingRule {
+ UseDefaultNames = 0x1,
+ NameAfterDriver = 0x2
+};
+
+enum SampleFormat {
+ FormatFloat = 0,
+ FormatInt24,
+ FormatInt16
+};
+
+int format_data_width (ARDOUR::SampleFormat);
+
+enum CDMarkerFormat {
+ CDMarkerNone,
+ CDMarkerCUE,
+ CDMarkerTOC,
+ MP4Chaps
+};
+
+enum HeaderFormat {
+ BWF,
+ WAVE,
+ WAVE64,
+ CAF,
+ AIFF,
+ iXML,
+ RF64,
+ RF64_WAV,
+ MBWF,
+};
+
+struct PeakData {
+ typedef Sample PeakDatum;
+
+ PeakDatum min;
+ PeakDatum max;
+};
+
+enum RunContext {
+ ButlerContext = 0,
+ TransportContext,
+ ExportContext
+};
+
+enum SyncSource {
+ /* The first two are "synonyms". It is important for JACK to be first
+ both here and in enums.cc, so that the string "JACK" is
+ correctly recognized in older session and preference files.
*/
- struct RouteProcessorChange {
- enum Type {
- GeneralChange = 0x0,
- MeterPointChange = 0x1,
- RealTimeChange = 0x2
- };
-
- RouteProcessorChange () : type (GeneralChange), meter_visibly_changed (true)
- {}
-
- RouteProcessorChange (Type t) : type (t), meter_visibly_changed (true)
- {}
-
- RouteProcessorChange (Type t, bool m) : type (t), meter_visibly_changed (m)
- {}
-
- /** type of change; "GeneralChange" means anything could have changed */
- Type type;
- /** true if, when a MeterPointChange has occurred, the change is visible to the user */
- bool meter_visibly_changed;
- };
-
- struct BusProfile {
- uint32_t master_out_channels; /* how many channels for the master bus, 0: no master bus */
- };
-
- enum FadeShape {
- FadeLinear,
- FadeFast,
- FadeSlow,
- FadeConstantPower,
- FadeSymmetric,
- };
-
- enum TransportState {
- /* these values happen to match the constants used by JACK but
- this equality cannot be assumed.
- */
- TransportStopped = 0,
- TransportRolling = 1,
- TransportLooping = 2,
- TransportStarting = 3,
- };
-
- enum PortFlags {
- /* these values happen to match the constants used by JACK but
- this equality cannot be assumed.
- */
- IsInput = 0x1,
- IsOutput = 0x2,
- IsPhysical = 0x4,
- CanMonitor = 0x8,
- IsTerminal = 0x10,
-
- /* non-JACK related flags */
- Hidden = 0x20,
- Shadow = 0x40
- };
-
- enum MidiPortFlags {
- MidiPortMusic = 0x1,
- MidiPortControl = 0x2,
- MidiPortSelection = 0x4,
- MidiPortVirtual = 0x8
- };
-
- struct LatencyRange {
- uint32_t min; //< samples
- uint32_t max; //< samples
- };
-
- enum BufferingPreset {
- Small,
- Medium,
- Large,
- Custom,
- };
-
- enum AutoReturnTarget {
- LastLocate = 0x1,
- RangeSelectionStart = 0x2,
- Loop = 0x4,
- RegionSelectionStart = 0x8,
- };
-
- enum PlaylistDisposition {
- CopyPlaylist,
- NewPlaylist,
- SharePlaylist
- };
-
- enum MidiTrackNameSource {
- SMFTrackNumber,
- SMFTrackName,
- SMFInstrumentName
- };
-
- enum MidiTempoMapDisposition {
- SMFTempoIgnore,
- SMFTempoUse,
- };
-
- struct CaptureInfo {
- samplepos_t start;
- samplecnt_t samples;
- };
-
- typedef std::vector<CaptureInfo*> CaptureInfos;
+ JACK = 0,
+ Engine = 0,
+ MTC,
+ MIDIClock,
+ LTC,
+};
+
+enum TransportRequestSource {
+ TRS_Engine,
+ TRS_MTC,
+ TRS_MIDIClock,
+ TRS_LTC,
+ TRS_MMC,
+ TRS_UI,
+};
+
+enum TransportRequestType {
+ TR_Stop = 0x1,
+ TR_Start = 0x2,
+ TR_Speed = 0x4,
+ TR_Locate = 0x8
+};
+
+enum ShuttleBehaviour {
+ Sprung,
+ Wheel
+};
+
+enum ShuttleUnits {
+ Percentage,
+ Semitones
+};
+
+typedef std::vector<boost::shared_ptr<Source> > SourceList;
+
+enum SrcQuality {
+ SrcBest,
+ SrcGood,
+ SrcQuick,
+ SrcFast,
+ SrcFastest
+};
+
+typedef std::list<samplepos_t> AnalysisFeatureList;
+
+typedef std::list<boost::shared_ptr<Route> > RouteList;
+typedef std::list<boost::shared_ptr<Stripable> > StripableList;
+typedef std::list<boost::weak_ptr <Route> > WeakRouteList;
+typedef std::list<boost::weak_ptr <Stripable> > WeakStripableList;
+typedef std::list<boost::shared_ptr<AutomationControl> > ControlList;
+typedef std::list<boost::shared_ptr<SlavableAutomationControl> > SlavableControlList;
+typedef std::set <boost::shared_ptr<AutomationControl> > AutomationControlSet;
+
+typedef std::list<boost::shared_ptr<VCA> > VCAList;
+
+class Bundle;
+typedef std::vector<boost::shared_ptr<Bundle> > BundleList;
+
+enum RegionEquivalence {
+ Exact,
+ Enclosed,
+ Overlap
+};
+
+enum WaveformScale {
+ Linear,
+ Logarithmic
+};
+
+enum WaveformShape {
+ Traditional,
+ Rectified
+};
+
+struct CleanupReport {
+ std::vector<std::string> paths;
+ size_t space;
+};
+
+enum PositionLockStyle {
+ AudioTime,
+ MusicTime
+};
+
+/** A struct used to describe changes to processors in a route.
+ * This is useful because objects that respond to a change in processors
+ * can optimise what work they do based on details of what has changed.
+ */
+struct RouteProcessorChange {
+ enum Type {
+ GeneralChange = 0x0,
+ MeterPointChange = 0x1,
+ RealTimeChange = 0x2
+ };
+
+ RouteProcessorChange () : type (GeneralChange), meter_visibly_changed (true)
+ {}
+
+ RouteProcessorChange (Type t) : type (t), meter_visibly_changed (true)
+ {}
+
+ RouteProcessorChange (Type t, bool m) : type (t), meter_visibly_changed (m)
+ {}
+
+ /** type of change; "GeneralChange" means anything could have changed */
+ Type type;
+ /** true if, when a MeterPointChange has occurred, the change is visible to the user */
+ bool meter_visibly_changed;
+};
+
+struct BusProfile {
+ uint32_t master_out_channels; /* how many channels for the master bus, 0: no master bus */
+};
+
+enum FadeShape {
+ FadeLinear,
+ FadeFast,
+ FadeSlow,
+ FadeConstantPower,
+ FadeSymmetric,
+};
+
+enum TransportState {
+ /* these values happen to match the constants used by JACK but
+ this equality cannot be assumed.
+ */
+ TransportStopped = 0,
+ TransportRolling = 1,
+ TransportLooping = 2,
+ TransportStarting = 3,
+};
+
+enum PortFlags {
+ /* these values happen to match the constants used by JACK but
+ this equality cannot be assumed.
+ */
+ IsInput = 0x1,
+ IsOutput = 0x2,
+ IsPhysical = 0x4,
+ CanMonitor = 0x8,
+ IsTerminal = 0x10,
+
+ /* non-JACK related flags */
+ Hidden = 0x20,
+ Shadow = 0x40
+};
+
+enum MidiPortFlags {
+ MidiPortMusic = 0x1,
+ MidiPortControl = 0x2,
+ MidiPortSelection = 0x4,
+ MidiPortVirtual = 0x8
+};
+
+struct LatencyRange {
+ uint32_t min; //< samples
+ uint32_t max; //< samples
+};
+
+enum BufferingPreset {
+ Small,
+ Medium,
+ Large,
+ Custom,
+};
+
+enum AutoReturnTarget {
+ LastLocate = 0x1,
+ RangeSelectionStart = 0x2,
+ Loop = 0x4,
+ RegionSelectionStart = 0x8,
+};
+
+enum PlaylistDisposition {
+ CopyPlaylist,
+ NewPlaylist,
+ SharePlaylist
+};
+
+enum MidiTrackNameSource {
+ SMFTrackNumber,
+ SMFTrackName,
+ SMFInstrumentName
+};
+
+enum MidiTempoMapDisposition {
+ SMFTempoIgnore,
+ SMFTempoUse,
+};
+
+struct CaptureInfo {
+ samplepos_t start;
+ samplecnt_t samples;
+};
+
+typedef std::vector<CaptureInfo*> CaptureInfos;
} // namespace ARDOUR