prepare 0dBFS peak meter
[ardour.git] / libs / ardour / ardour / types.h
index 50a96030b19ac05ec955fd2c47c4f006adde0c37..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,18 +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,
-               MeterK12       = 0x800
+               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 {
@@ -214,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 {
@@ -265,8 +277,7 @@ namespace ARDOUR {
                                return seconds != 0;
                        }
 
-                       /* NOTREACHED */
-                       assert (false);
+                       abort(); /* NOTREACHED */
                        return false;
                }
        };
@@ -340,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,
@@ -418,17 +441,6 @@ namespace ARDOUR {
                MixerOrdered
        };
 
-       enum CrossfadeModel {
-               FullCrossfade,
-               ShortCrossfade
-       };
-
-       enum CrossfadeChoice {
-               RegionFades,
-               ConstantPowerMinus3dB,
-               ConstantPowerMinus6dB,
-       };
-
        enum ListenPosition {
                AfterFaderListen,
                PreFaderListen
@@ -446,10 +458,13 @@ namespace ARDOUR {
                FormatInt16
        };
 
+       int format_data_width (ARDOUR::SampleFormat);
+
        enum CDMarkerFormat {
                CDMarkerNone,
                CDMarkerCUE,
-               CDMarkerTOC
+               CDMarkerTOC,
+               MP4Chaps
        };
 
        enum HeaderFormat {
@@ -469,14 +484,6 @@ namespace ARDOUR {
                PeakDatum max;
        };
 
-       enum PluginType {
-               AudioUnit,
-               LADSPA,
-               LV2,
-               Windows_VST,
-               LXVST,
-       };
-
        enum RunContext {
                ButlerContext = 0,
                TransportContext,
@@ -616,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)