* Add SysEx Support to MidiModel / SMF
[ardour.git] / libs / ardour / ardour / types.h
index 3dc4ae2693e51d4de87182087762e26206cfbb75..7532c63312e762215bfae821516ecafe981898c4 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2002 Paul Davis 
+    Copyright (C) 2002 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -41,7 +41,7 @@
 typedef int intptr_t;
 #endif
 
-/* eventually, we'd like everything (including JACK) to 
+/* eventually, we'd like everything (including JACK) to
    move to this. for now, its a dedicated type.
 */
 
@@ -51,6 +51,7 @@ namespace ARDOUR {
 
        class Source;
        class AudioSource;
+       class Route;
 
        typedef jack_default_audio_sample_t Sample;
        typedef float                       pan_t;
@@ -59,12 +60,6 @@ namespace ARDOUR {
        typedef uint64_t                    microseconds_t;
        typedef uint32_t                    nframes_t;
 
-       typedef unsigned char Byte;
-
-       struct MidiEvent : public jack_midi_event_t {
-               MidiEvent() { time = 0; size = 0; buffer = NULL; }
-       };
-
        enum IOChange {
                NoChange = 0,
                ConfigurationChanged = 0x1,
@@ -75,19 +70,31 @@ namespace ARDOUR {
                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 
+               OverlapEnd,       // overlap begins within and covers end
                OverlapExternal   // overlap extends to (at least) begin+end
        };
 
        OverlapType coverage (nframes_t start_a, nframes_t end_a,
                              nframes_t start_b, nframes_t end_b);
 
+       /** See parameter.h
+        * XXX: I don't think/hope these hex values matter anymore.
+        */
        enum AutomationType {
+               NullAutomation = 0x0,
                GainAutomation = 0x1,
                PanAutomation = 0x2,
                PluginAutomation = 0x4,
                SoloAutomation = 0x8,
-               MuteAutomation = 0x10
+               MuteAutomation = 0x10,
+               MidiCCAutomation = 0x20,
+               MidiPgmChangeAutomation = 0x21,
+               MidiPitchBenderAutomation = 0x22,
+               MidiChannelPressureAutomation = 0x23,
+               MidiSystemExclusiveAutomation = 0x24,
+               FadeInAutomation = 0x40,
+               FadeOutAutomation = 0x80,
+               EnvelopeAutomation = 0x100
        };
 
        enum AutoState {
@@ -123,7 +130,29 @@ namespace ARDOUR {
                Normal,
                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 EventTimeUnit {
+               Frames,
+               Beats
+       };
+
        struct BBT_Time {
            uint32_t bars;
            uint32_t beats;
@@ -136,12 +165,12 @@ namespace ARDOUR {
            }
 
            /* we can't define arithmetic operators for BBT_Time, because
-              the results depend on a TempoMap, but we can define 
+              the results depend on a TempoMap, but we can define
               a useful check on the less-than condition.
            */
 
            bool operator< (const BBT_Time& other) const {
-                   return bars < other.bars || 
+                   return bars < other.bars ||
                            (bars == other.bars && beats < other.beats) ||
                            (bars == other.bars && beats == other.beats && ticks < other.ticks);
            }
@@ -149,7 +178,7 @@ namespace ARDOUR {
            bool operator== (const BBT_Time& other) const {
                    return bars == other.bars && beats == other.beats && ticks == other.ticks;
            }
-           
+
        };
        enum SmpteFormat {
                smpte_23976,
@@ -177,8 +206,8 @@ namespace ARDOUR {
            SMPTE::Time    smpte;
            BBT_Time       bbt;
 
-           union { 
-               nframes_t frames;
+           union {
+               nframes_t      frames;
                double         seconds;
            };
 
@@ -189,10 +218,10 @@ namespace ARDOUR {
            nframes_t start;
            nframes_t end;
            uint32_t id;
-           
+
            AudioRange (nframes_t s, nframes_t e, uint32_t i) : start (s), end (e) , id (i) {}
-           
-           nframes_t length() { return end - start + 1; } 
+
+           nframes_t length() { return end - start + 1; }
 
            bool operator== (const AudioRange& other) const {
                    return start == other.start && end == other.end && id == other.id;
@@ -206,12 +235,12 @@ namespace ARDOUR {
                    return ARDOUR::coverage (start, end, s, e);
            }
        };
-       
+
        struct MusicRange {
            BBT_Time start;
            BBT_Time end;
            uint32_t id;
-           
+
            MusicRange (BBT_Time& s, BBT_Time& e, uint32_t i)
                    : start (s), end (e), id (i) {}
 
@@ -248,10 +277,11 @@ namespace ARDOUR {
 
        enum EditMode {
                Slide,
-               Splice
+               Splice,
+               Lock
        };
 
-       enum RegionPoint { 
+       enum RegionPoint {
            Start,
            End,
            SyncPoint
@@ -270,7 +300,7 @@ namespace ARDOUR {
        enum MonitorModel {
                HardwareMonitoring,
                SoftwareMonitoring,
-               ExternalMonitoring,
+               ExternalMonitoring
        };
 
        enum DenormalModel {
@@ -283,14 +313,14 @@ namespace ARDOUR {
        enum RemoteModel {
                UserOrdered,
                MixerOrdered,
-               EditorOrdered,
+               EditorOrdered
        };
 
        enum CrossfadeModel {
                FullCrossfade,
                ShortCrossfade
        };
-       
+
        enum LayerModel {
                LaterHigher,
                MoveAddHigher,
@@ -316,9 +346,15 @@ namespace ARDOUR {
 
        enum SampleFormat {
                FormatFloat = 0,
-               FormatInt24
+               FormatInt24,
+               FormatInt16
        };
 
+       enum CDMarkerFormat {
+               CDMarkerNone,
+               CDMarkerCUE,
+               CDMarkerTOC
+       };
 
        enum HeaderFormat {
                BWF,
@@ -332,21 +368,29 @@ namespace ARDOUR {
 
        struct PeakData {
            typedef Sample PeakDatum;
-           
+
            PeakDatum min;
            PeakDatum max;
        };
-       
+
        enum PluginType {
                AudioUnit,
                LADSPA,
+               LV2,
                VST
        };
+       
+       enum RunContext {
+               ButlerContext = 0,
+               TransportContext,
+               ExportContext
+       };
 
        enum SlaveSource {
                None = 0,
                MTC,
-               JACK
+               JACK,
+               MIDIClock
        };
 
        enum ShuttleBehaviour {
@@ -360,6 +404,34 @@ namespace ARDOUR {
        };
 
        typedef std::vector<boost::shared_ptr<Source> > SourceList;
+
+       enum SrcQuality {
+               SrcBest,
+               SrcGood,
+               SrcQuick,
+               SrcFast,
+               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<nframes64_t> AnalysisFeatureList;
+
+       typedef std::list<boost::shared_ptr<Route> >      RouteList;
+
+       class Bundle;
+       typedef std::vector<boost::shared_ptr<Bundle> > BundleList;
+
 } // namespace ARDOUR
 
 std::istream& operator>>(std::istream& o, ARDOUR::SampleFormat& sf);