When we rename a track, only rename its playlist if it
[ardour.git] / libs / ardour / ardour / types.h
index 42264cf1cbaf5835333ca7e8e3e9a8b356404e40..6d05bdbbd8d79e902115d46497af12ea580bbab2 100644 (file)
@@ -36,6 +36,8 @@
 
 #include "pbd/id.h"
 
+#include "evoral/Range.hpp"
+
 #include "ardour/chan_count.h"
 
 #include <map>
@@ -75,12 +77,15 @@ namespace ARDOUR {
 
        static const framepos_t max_framepos = INT64_MAX;
        static const framecnt_t max_framecnt = INT64_MAX;
+       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<frameoffset_t, frameoffset_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 {
@@ -98,17 +103,6 @@ namespace ARDOUR {
                ARDOUR::ChanCount after;
        };
 
-       enum OverlapType {
-               OverlapNone,      // no overlap
-               OverlapInternal,  // the overlap is 100% with the object
-               OverlapStart,     // overlap covers start, but ends within
-               OverlapEnd,       // overlap begins within and covers end
-               OverlapExternal   // overlap extends to (at least) begin+end
-       };
-
-       ARDOUR::OverlapType coverage (framepos_t sa, framepos_t ea,
-                                     framepos_t sb, framepos_t eb);
-
        /* policies for inserting/pasting material where overlaps
           might be an issue.
        */
@@ -142,7 +136,8 @@ namespace ARDOUR {
                MidiSystemExclusiveAutomation,
                FadeInAutomation,
                FadeOutAutomation,
-               EnvelopeAutomation
+               EnvelopeAutomation,
+               RecEnableAutomation
        };
 
        enum AutoState {
@@ -218,7 +213,8 @@ namespace ARDOUR {
                timecode_60
        };
 
-       struct AnyTime {
+       class AnyTime {
+       public:
                enum Type {
                        Timecode,
                        BBT,
@@ -267,9 +263,16 @@ namespace ARDOUR {
                          case Seconds:
                                return seconds != 0;
                        }
+
+                       /* NOTREACHED */
+                       assert (false);
+                       return false;
                }
        };
 
+       /* XXX: slightly unfortunate that there is this and Evoral::Range<>,
+          but this has a uint32_t id which Evoral::Range<> does not.
+       */
        struct AudioRange {
                framepos_t start;
                framepos_t end;
@@ -287,8 +290,8 @@ namespace ARDOUR {
                        return start == other.start && end == other.end;
                }
 
-               OverlapType coverage (framepos_t s, framepos_t e) const {
-                       return ARDOUR::coverage (start, end, s, e);
+               Evoral::OverlapType coverage (framepos_t s, framepos_t e) const {
+                       return Evoral::coverage (start, end, s, e);
                }
        };
 
@@ -349,9 +352,27 @@ namespace ARDOUR {
        };
 
        enum MonitorModel {
-               HardwareMonitoring,
-               SoftwareMonitoring,
-               ExternalMonitoring
+               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 = 0x4,
+       };
+
+       enum MonitorState {
+               MonitoringSilence = 0x1,
+               MonitoringInput = 0x2,
+               MonitoringDisk = 0x4,
+       };
+
+       enum MeterState {
+               MeteringInput, ///< meter the input IO, regardless of what is going through the route
+               MeteringRoute  ///< meter what is going through the route
        };
 
        enum PFLPosition {
@@ -386,10 +407,10 @@ namespace ARDOUR {
                ShortCrossfade
        };
 
-       enum LayerModel {
-               LaterHigher,
-               MoveAddHigher,
-               AddHigher
+       enum CrossfadeChoice {
+               RegionFades,
+               ConstantPowerMinus3dB,
+               ConstantPowerMinus6dB,
        };
 
        enum ListenPosition {
@@ -403,15 +424,6 @@ namespace ARDOUR {
                AutoConnectMaster = 0x2
        };
 
-       struct InterThreadInfo {
-               InterThreadInfo () : done (false), cancel (false), progress (0), thread (0) {}
-
-               volatile bool  done;
-               volatile bool  cancel;
-               volatile float progress;
-               pthread_t      thread;
-       };
-
        enum SampleFormat {
                FormatFloat = 0,
                FormatInt24,
@@ -445,7 +457,8 @@ namespace ARDOUR {
                AudioUnit,
                LADSPA,
                LV2,
-               VST
+               Windows_VST,
+               LXVST,
        };
 
        enum RunContext {
@@ -480,19 +493,6 @@ namespace ARDOUR {
                SrcFastest
        };
 
-       struct TimeFXRequest : public InterThreadInfo {
-               TimeFXRequest()
-                       : time_fraction(0), pitch_fraction(0),
-                       quick_seek(false), antialias(false),  opts(0) {}
-               float time_fraction;
-               float pitch_fraction;
-               /* SoundTouch */
-               bool  quick_seek;
-               bool  antialias;
-               /* RubberBand */
-               int   opts; // really RubberBandStretcher::Options
-       };
-
        typedef std::list<framepos_t> AnalysisFeatureList;
 
        typedef std::list<boost::shared_ptr<Route> > RouteList;
@@ -511,12 +511,6 @@ namespace ARDOUR {
                Rectified
        };
 
-       enum QuantizeType {
-               Plain,
-               Legato,
-               Groove
-       };
-
        struct CleanupReport {
                std::vector<std::string> paths;
                size_t                   space;
@@ -564,8 +558,8 @@ namespace ARDOUR {
                FadeLinear,
                FadeFast,
                FadeSlow,
-               FadeLogA,
-               FadeLogB
+               FadeConstantPower,
+               FadeSymmetric,
        };
 
 } // namespace ARDOUR
@@ -584,9 +578,9 @@ std::istream& operator>>(std::istream& o, ARDOUR::PFLPosition& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::AFLPosition& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::RemoteModel& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::ListenPosition& sf);
-std::istream& operator>>(std::istream& o, ARDOUR::LayerModel& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::InsertMergePolicy& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::CrossfadeModel& sf);
+std::istream& operator>>(std::istream& o, ARDOUR::CrossfadeChoice& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::SyncSource& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::ShuttleBehaviour& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::ShuttleUnits& sf);
@@ -605,9 +599,9 @@ std::ostream& operator<<(std::ostream& o, const ARDOUR::PFLPosition& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::AFLPosition& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::RemoteModel& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::ListenPosition& sf);
-std::ostream& operator<<(std::ostream& o, const ARDOUR::LayerModel& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::InsertMergePolicy& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::CrossfadeModel& sf);
+std::ostream& operator<<(std::ostream& o, const ARDOUR::CrossfadeChoice& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::SyncSource& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::ShuttleBehaviour& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::ShuttleUnits& sf);