prepare 0dBFS peak meter
[ardour.git] / libs / ardour / ardour / types.h
index ee43d1f30f4b064016b33fa3dfcf4bb95edcf7bf..3f95d0c2390bc5a2a35d357664eb7d682dcb573c 100644 (file)
@@ -38,6 +38,7 @@
 #include "evoral/Range.hpp"
 
 #include "ardour/chan_count.h"
+#include "ardour/plugin_types.h"
 
 #include <map>
 
@@ -126,6 +127,7 @@ namespace ARDOUR {
                PanFrontBackAutomation,
                PanLFEAutomation,
                PluginAutomation,
+               PluginPropertyAutomation,
                SoloAutomation,
                MuteAutomation,
                MidiCCAutomation,
@@ -136,7 +138,8 @@ namespace ARDOUR {
                FadeInAutomation,
                FadeOutAutomation,
                EnvelopeAutomation,
-               RecEnableAutomation
+               RecEnableAutomation,
+               TrimAutomation,
        };
 
        enum AutoState {
@@ -177,17 +180,19 @@ namespace ARDOUR {
        };
 
        enum MeterType {
-               MeterMaxSignal = 0x001,
-               MeterMaxPeak   = 0x002,
-               MeterPeak      = 0x004,
-               MeterKrms      = 0x008,
-               MeterK20       = 0x010,
-               MeterK14       = 0x020,
-               MeterIEC1DIN   = 0x040,
-               MeterIEC1NOR   = 0x080,
-               MeterIEC2BBC   = 0x100,
-               MeterIEC2EBU   = 0x200,
-               MeterVU        = 0x400
+               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
        };
 
        enum TrackMode {
@@ -213,6 +218,14 @@ namespace ARDOUR {
                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
+       };
+
        class AnyTime {
        public:
                enum Type {
@@ -264,8 +277,7 @@ namespace ARDOUR {
                                return seconds != 0;
                        }
 
-                       /* NOTREACHED */
-                       assert (false);
+                       abort(); /* NOTREACHED */
                        return false;
                }
        };
@@ -339,9 +351,21 @@ namespace ARDOUR {
        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,
@@ -353,11 +377,6 @@ namespace ARDOUR {
                PostFader
        };
 
-        enum RouteSortOrderKey { 
-               EditorSort,
-               MixerSort
-       };
-           
        enum MonitorModel {
                HardwareMonitoring, ///< JACK does monitoring
                SoftwareMonitoring, ///< Ardour does monitoring
@@ -419,19 +438,7 @@ namespace ARDOUR {
 
        enum RemoteModel {
                UserOrdered,
-               MixerOrdered,
-               EditorOrdered
-       };
-
-       enum CrossfadeModel {
-               FullCrossfade,
-               ShortCrossfade
-       };
-
-       enum CrossfadeChoice {
-               RegionFades,
-               ConstantPowerMinus3dB,
-               ConstantPowerMinus6dB,
+               MixerOrdered
        };
 
        enum ListenPosition {
@@ -451,10 +458,13 @@ namespace ARDOUR {
                FormatInt16
        };
 
+       int format_data_width (ARDOUR::SampleFormat);
+
        enum CDMarkerFormat {
                CDMarkerNone,
                CDMarkerCUE,
-               CDMarkerTOC
+               CDMarkerTOC,
+               MP4Chaps
        };
 
        enum HeaderFormat {
@@ -474,14 +484,6 @@ namespace ARDOUR {
                PeakDatum max;
        };
 
-       enum PluginType {
-               AudioUnit,
-               LADSPA,
-               LV2,
-               Windows_VST,
-               LXVST,
-       };
-
        enum RunContext {
                ButlerContext = 0,
                TransportContext,
@@ -621,52 +623,58 @@ namespace ARDOUR {
 /* these cover types declared above in this header. See enums.cc
    for the definitions.
 */
-
 std::istream& operator>>(std::istream& o, ARDOUR::SampleFormat& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::HeaderFormat& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::AutoConnectOption& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::EditMode& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::MonitorModel& sf);
-std::istream& operator>>(std::istream& o, ARDOUR::VUMeterStandard& sf);
-std::istream& operator>>(std::istream& o, ARDOUR::MeterLineUp& sf);
 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::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);
 std::istream& operator>>(std::istream& o, Timecode::TimecodeFormat& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::DenormalModel& sf);
-std::istream& operator>>(std::istream& o, ARDOUR::WaveformScale& sf);
-std::istream& operator>>(std::istream& o, ARDOUR::WaveformShape& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::PositionLockStyle& sf);
+std::istream& operator>>(std::istream& o, ARDOUR::FadeShape& sf);
+std::istream& operator>>(std::istream& o, ARDOUR::RegionSelectionAfterSplit& sf);
 
 std::ostream& operator<<(std::ostream& o, const ARDOUR::SampleFormat& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::HeaderFormat& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::AutoConnectOption& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::EditMode& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::MonitorModel& sf);
-std::ostream& operator<<(std::ostream& o, const ARDOUR::VUMeterStandard& sf);
-std::ostream& operator<<(std::ostream& o, const ARDOUR::MeterLineUp& sf);
 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::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);
 std::ostream& operator<<(std::ostream& o, const Timecode::TimecodeFormat& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::DenormalModel& sf);
-std::ostream& operator<<(std::ostream& o, const ARDOUR::WaveformScale& sf);
-std::ostream& operator<<(std::ostream& o, const ARDOUR::WaveformShape& sf);
 std::ostream& operator<<(std::ostream& o, const ARDOUR::PositionLockStyle& sf);
+std::ostream& operator<<(std::ostream& o, const ARDOUR::FadeShape& sf);
+std::ostream& operator<<(std::ostream& o, const ARDOUR::RegionSelectionAfterSplit& sf);
+
+
+/* because these operators work on types which can be used when making
+   a UI_CONFIG_VARIABLE (in gtk2_ardour) we need them to be exported.
+*/
+LIBARDOUR_API std::istream& operator>>(std::istream& o, ARDOUR::WaveformScale& sf);
+LIBARDOUR_API std::istream& operator>>(std::istream& o, ARDOUR::WaveformShape& sf);
+LIBARDOUR_API std::istream& operator>>(std::istream& o, ARDOUR::VUMeterStandard& sf);
+LIBARDOUR_API std::istream& operator>>(std::istream& o, ARDOUR::MeterLineUp& sf);
+
+LIBARDOUR_API std::ostream& operator<<(std::ostream& o, const ARDOUR::WaveformScale& sf);
+LIBARDOUR_API std::ostream& operator<<(std::ostream& o, const ARDOUR::WaveformShape& sf);
+LIBARDOUR_API std::ostream& operator<<(std::ostream& o, const ARDOUR::VUMeterStandard& sf);
+LIBARDOUR_API std::ostream& operator<<(std::ostream& o, const ARDOUR::MeterLineUp& sf);
+
 
 static inline ARDOUR::framepos_t
 session_frame_to_track_frame (ARDOUR::framepos_t session_frame, double speed)