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__
#endif
#include <istream>
+#include <vector>
+#include <boost/shared_ptr.hpp>
#include <inttypes.h>
#include <jack/types.h>
+#include <jack/midiport.h>
+#include <control_protocol/smpte.h>
+#include <pbd/id.h>
+
#include <map>
#if __GNUC__ < 3
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 id_t;
+ typedef uint64_t microseconds_t;
+ typedef uint32_t nframes_t;
+
+ typedef unsigned char Byte;
+
+ /** Identical to jack_midi_event_t, but with double timestamp
+ *
+ * time is either a frame time (from/to Jack) or a beat time (internal
+ * tempo time, used in MidiModel) depending on context.
+ */
+ struct MidiEvent {
+ MidiEvent(double t=0, size_t s=0, Byte* b=NULL)
+ : time(t), size(s), buffer(b)
+ {}
+
+ double time; /**< Sample index (or beat time) at which event is valid */
+ size_t size; /**< Number of bytes of data in \a buffer */
+ Byte* buffer; /**< Raw MIDI data */
+ };
enum IOChange {
NoChange = 0,
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);
enum AutomationType {
GainAutomation = 0x1,
PanAutomation = 0x2,
PluginAutomation = 0x4,
SoloAutomation = 0x8,
- MuteAutomation = 0x10,
+ MuteAutomation = 0x10
};
enum AutoState {
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
Normal,
Destructive
};
-
- enum smpte_wrap_t {
- smpte_wrap_none = 0,
- smpte_wrap_frames,
- smpte_wrap_seconds,
- smpte_wrap_minutes,
- smpte_wrap_hours
- };
-
- struct SMPTE_Time {
- bool negative;
- long hours;
- long minutes;
- long seconds;
- long frames;
- long subframes; // mostly not used
-
- SMPTE_Time() {
- negative = false;
- hours = 0;
- minutes = 0;
- seconds = 0;
- frames = 0;
- subframes = 0;
- }
-
- };
-
+
struct BBT_Time {
uint32_t bars;
uint32_t beats;
}
};
+ 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 {
Type type;
- SMPTE_Time smpte;
+ SMPTE::Time smpte;
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;
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);
}
};
}
};
+ /*
+ 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
};
- enum RegionPoint {
+ enum RegionPoint {
Start,
End,
SyncPoint
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;
BWF,
WAVE,
WAVE64,
+ CAF,
+ AIFF,
iXML,
RF64
};
-};
+ struct PeakData {
+ typedef Sample PeakDatum;
+
+ PeakDatum min;
+ PeakDatum max;
+ };
+
+ enum PluginType {
+ AudioUnit,
+ LADSPA,
+ VST
+ };
+
+ enum SlaveSource {
+ None = 0,
+ MTC,
+ JACK
+ };
-std::istream& operator>>(std::istream& o, ARDOUR::SampleFormat sf);
-std::istream& operator>>(std::istream& o, ARDOUR::HeaderFormat sf);
+ enum ShuttleBehaviour {
+ Sprung,
+ Wheel
+ };
-static inline jack_nframes_t
-session_frame_to_track_frame (jack_nframes_t session_frame, double speed)
+ enum ShuttleUnits {
+ Percentage,
+ Semitones
+ };
+
+ typedef std::vector<boost::shared_ptr<Source> > SourceList;
+} // namespace ARDOUR
+
+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::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 );
}