meet rhythm ferret: cute, furry and always on time (ardour build now requires fftw3...
[ardour.git] / libs / ardour / ardour / types.h
index c80944ebd0e707b440d6935ebf3b0e48d5dc2913..933ca44e734ae38cffba3d2dfaa2435f612c2799 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __ardour_types_h__
@@ -48,6 +47,12 @@ typedef int intptr_t;
 
 typedef uint32_t                    nframes_t;
 
+/* eventually, we'd like everything (including JACK) to 
+   move to this. for now, its a dedicated type.
+*/
+
+typedef int64_t                    nframes64_t;
+
 namespace ARDOUR {
 
        class Source;
@@ -91,11 +96,17 @@ namespace ARDOUR {
                Play = 0x4
        };
 
+       std::string auto_state_to_string (AutoState);
+       AutoState string_to_auto_state (std::string);
+
        enum AutoStyle {
                Absolute = 0x1,
                Trim = 0x2
        };
 
+       std::string auto_style_to_string (AutoStyle);
+       AutoStyle string_to_auto_style (std::string);
+
        enum AlignStyle {
                CaptureTime,
                ExistingMaterial
@@ -139,6 +150,18 @@ namespace ARDOUR {
            }
            
        };
+       enum SmpteFormat {
+               smpte_23976,
+               smpte_24,
+               smpte_24976,
+               smpte_25,
+               smpte_2997,
+               smpte_2997drop,
+               smpte_30,
+               smpte_30drop,
+               smpte_5994,
+               smpte_60
+       };
 
        struct AnyTime {
            enum Type {
@@ -249,6 +272,19 @@ namespace ARDOUR {
                ExternalMonitoring,
        };
 
+       enum DenormalModel {
+               DenormalNone,
+               DenormalFTZ,
+               DenormalDAZ,
+               DenormalFTZDAZ
+       };
+
+       enum RemoteModel {
+               UserOrdered,
+               MixerOrdered,
+               EditorOrdered,
+       };
+
        enum CrossfadeModel {
                FullCrossfade,
                ShortCrossfade
@@ -279,7 +315,8 @@ namespace ARDOUR {
 
        enum SampleFormat {
                FormatFloat = 0,
-               FormatInt24
+               FormatInt24,
+               FormatInt16
        };
 
 
@@ -303,6 +340,7 @@ namespace ARDOUR {
        enum PluginType {
                AudioUnit,
                LADSPA,
+               LV2,
                VST
        };
 
@@ -318,12 +356,30 @@ namespace ARDOUR {
        };
 
        enum ShuttleUnits {
-               Percentage,
+               Percentage,
                Semitones
        };
 
        typedef std::vector<boost::shared_ptr<AudioSource> > SourceList;
 
+       enum SrcQuality {
+               SrcBest,
+               SrcGood,
+               SrcQuick,
+               SrcFast,
+               SrcFastest
+       };
+
+       struct TimeFXRequest : public InterThreadInfo {
+           float time_fraction;
+           float pitch_fraction;
+           /* SoundTouch */
+           bool  quick_seek; 
+           bool  antialias;  
+           /* RubberBand */
+           int   opts; // really RubberBandStretcher::Options
+       };
+
 } // namespace ARDOUR
 
 std::istream& operator>>(std::istream& o, ARDOUR::SampleFormat& sf);
@@ -331,12 +387,15 @@ 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::RemoteModel& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::SoloModel& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::LayerModel& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::CrossfadeModel& sf);
 std::istream& operator>>(std::istream& o, ARDOUR::SlaveSource& 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, ARDOUR::SmpteFormat& sf);
+std::istream& operator>>(std::istream& o, ARDOUR::DenormalModel& sf);
 
 static inline nframes_t
 session_frame_to_track_frame (nframes_t session_frame, double speed)