X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Ftypes.h;h=55655e9e261b5328e84d9efa3a0a0409ce76e47c;hb=8ca72c4eca3a712f5368680ba0fbce5beb831324;hp=0a3a7b731c46c3c31fe48ad6e5fe753f14225ace;hpb=77a13df5bd70bf87ee856b81acec7eeed5b1f033;p=ardour.git diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 0a3a7b731c..55655e9e26 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -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__ @@ -26,9 +25,12 @@ #endif #include +#include +#include #include #include +#include #include #include @@ -39,15 +41,25 @@ typedef int intptr_t; #endif +/* 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; + class AudioSource; typedef jack_default_audio_sample_t Sample; typedef float pan_t; typedef float gain_t; typedef uint32_t layer_t; typedef uint64_t microseconds_t; + typedef uint32_t nframes_t; + + typedef unsigned char Byte; enum IOChange { NoChange = 0, @@ -63,15 +75,26 @@ namespace ARDOUR { OverlapExternal // overlap extends to (at least) begin+end }; - OverlapType coverage (jack_nframes_t start_a, jack_nframes_t end_a, - jack_nframes_t start_b, jack_nframes_t end_b); + 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, + MidiChannelAftertouchAutomation = 0x23, + FadeInAutomation = 0x40, + FadeOutAutomation = 0x80, + EnvelopeAutomation = 0x100 }; enum AutoState { @@ -81,11 +104,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 @@ -102,6 +131,22 @@ namespace ARDOUR { 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 EventTimeUnit { + Frames, + Beats + }; + struct BBT_Time { uint32_t bars; uint32_t beats; @@ -129,6 +174,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 { @@ -144,19 +201,21 @@ namespace ARDOUR { BBT_Time bbt; union { - jack_nframes_t frames; + nframes_t frames; double seconds; }; + + AnyTime() { type = Frames; frames = 0; } }; struct AudioRange { - jack_nframes_t start; - jack_nframes_t end; + nframes_t start; + nframes_t end; uint32_t id; - AudioRange (jack_nframes_t s, jack_nframes_t e, uint32_t i) : start (s), end (e) , id (i) {} + AudioRange (nframes_t s, nframes_t e, uint32_t i) : start (s), end (e) , id (i) {} - jack_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; @@ -166,7 +225,7 @@ namespace ARDOUR { return start == other.start && end == other.end; } - OverlapType coverage (jack_nframes_t s, jack_nframes_t e) const { + OverlapType coverage (nframes_t s, nframes_t e) const { return ARDOUR::coverage (start, end, s, e); } }; @@ -188,9 +247,32 @@ namespace ARDOUR { } }; + /* + Slowest = 6.6dB/sec falloff at update rate of 40ms + Slow = 6.8dB/sec falloff at update rate of 40ms + */ + + enum MeterFalloff { + MeterFalloffOff = 0, + MeterFalloffSlowest = 1, + MeterFalloffSlow = 2, + MeterFalloffMedium = 3, + MeterFalloffFast = 4, + MeterFalloffFaster = 5, + MeterFalloffFastest = 6 + }; + + enum MeterHold { + MeterHoldOff = 0, + MeterHoldShort = 40, + MeterHoldMedium = 100, + MeterHoldLong = 200 + }; + enum EditMode { Slide, - Splice + Splice, + Lock }; enum RegionPoint { @@ -209,10 +291,45 @@ namespace ARDOUR { PostFader }; + enum MonitorModel { + HardwareMonitoring, + SoftwareMonitoring, + ExternalMonitoring + }; + + enum DenormalModel { + DenormalNone, + DenormalFTZ, + DenormalDAZ, + DenormalFTZDAZ + }; + + enum RemoteModel { + UserOrdered, + MixerOrdered, + EditorOrdered + }; + enum CrossfadeModel { FullCrossfade, ShortCrossfade }; + + enum LayerModel { + LaterHigher, + MoveAddHigher, + AddHigher + }; + + enum SoloModel { + InverseMute, + SoloBus + }; + + enum AutoConnectOption { + AutoConnectPhysical = 0x1, + AutoConnectMaster = 0x2 + }; struct InterThreadInfo { volatile bool done; @@ -223,7 +340,8 @@ namespace ARDOUR { enum SampleFormat { FormatFloat = 0, - FormatInt24 + FormatInt24, + FormatInt16 }; @@ -247,24 +365,79 @@ namespace ARDOUR { enum PluginType { AudioUnit, LADSPA, + LV2, VST }; - + + enum SlaveSource { + None = 0, + MTC, + JACK + }; + + enum ShuttleBehaviour { + Sprung, + Wheel + }; + + enum ShuttleUnits { + Percentage, + Semitones + }; + + typedef std::vector > 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 AnalysisFeatureList; + } // namespace ARDOUR std::istream& operator>>(std::istream& o, ARDOUR::SampleFormat& sf); std::istream& operator>>(std::istream& o, ARDOUR::HeaderFormat& sf); - -static inline jack_nframes_t -session_frame_to_track_frame (jack_nframes_t session_frame, double speed) +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); + +using ARDOUR::nframes_t; + +static inline nframes_t +session_frame_to_track_frame (nframes_t session_frame, double speed) { - return (jack_nframes_t)( (double)session_frame * speed ); + return (nframes_t)( (double)session_frame * speed ); } -static inline jack_nframes_t -track_frame_to_session_frame (jack_nframes_t track_frame, double speed) +static inline nframes_t +track_frame_to_session_frame (nframes_t track_frame, double speed) { - return (jack_nframes_t)( (double)track_frame / speed ); + return (nframes_t)( (double)track_frame / speed ); }