summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/audiofilesource.h2
-rw-r--r--libs/ardour/ardour/audioplaylist.h31
-rw-r--r--libs/ardour/ardour/audioregion.h20
-rw-r--r--libs/ardour/ardour/configuration_vars.h11
-rw-r--r--libs/ardour/ardour/crossfade.h27
-rw-r--r--libs/ardour/ardour/midi_playlist.h31
-rw-r--r--libs/ardour/ardour/playlist.h22
-rw-r--r--libs/ardour/ardour/region.h29
8 files changed, 33 insertions, 140 deletions
diff --git a/libs/ardour/ardour/audiofilesource.h b/libs/ardour/ardour/audiofilesource.h
index 6184a45302..af5f5cdb60 100644
--- a/libs/ardour/ardour/audiofilesource.h
+++ b/libs/ardour/ardour/audiofilesource.h
@@ -81,8 +81,6 @@ class AudioFileSource : public AudioSource {
void mark_take (string);
string take_id() const { return _take_id; }
- static void set_bwf_country_code (string x);
- static void set_bwf_organization_code (string x);
static void set_bwf_serial_number (int);
static void set_search_path (string);
diff --git a/libs/ardour/ardour/audioplaylist.h b/libs/ardour/ardour/audioplaylist.h
index 341b08930c..383ec73531 100644
--- a/libs/ardour/ardour/audioplaylist.h
+++ b/libs/ardour/ardour/audioplaylist.h
@@ -38,19 +38,6 @@ class AudioPlaylist : public ARDOUR::Playlist
{
public:
typedef std::list<Crossfade*> Crossfades;
-
- private:
-
- struct State : public ARDOUR::StateManager::State {
- RegionList regions;
- std::list<UndoAction> region_states;
-
- Crossfades crossfades;
- std::list<UndoAction> crossfade_states;
-
- State (std::string why) : ARDOUR::StateManager::State (why) {}
- ~State ();
- };
public:
AudioPlaylist (Session&, const XMLNode&, bool hidden = false);
@@ -58,35 +45,21 @@ class AudioPlaylist : public ARDOUR::Playlist
AudioPlaylist (const AudioPlaylist&, string name, bool hidden = false);
AudioPlaylist (const AudioPlaylist&, nframes_t start, nframes_t cnt, string name, bool hidden = false);
- void clear (bool with_save = true);
+ void clear (bool with_signals=true);
nframes_t read (Sample *dst, Sample *mixdown, float *gain_buffer, nframes_t start, nframes_t cnt, uint32_t chan_n=0);
int set_state (const XMLNode&);
- UndoAction get_memento() const;
sigc::signal<void,Crossfade *> NewCrossfade;
template<class T> void foreach_crossfade (T *t, void (T::*func)(Crossfade *));
void crossfades_at (nframes_t frame, Crossfades&);
- template<class T> void apply_to_history (T& obj, void (T::*method)(const ARDOUR::StateManager::StateMap&, state_id_t)) {
- RegionLock rlock (this);
- (obj.*method) (states, _current_state_id);
- }
-
bool destroy_region (boost::shared_ptr<Region>);
- void drop_all_states ();
-
protected:
- /* state management */
-
- StateManager::State* state_factory (std::string) const;
- Change restore_state (StateManager::State&);
- void send_state_change (Change);
-
/* playlist "callbacks" */
void notify_crossfade_added (Crossfade *);
void flush_notifications ();
@@ -101,7 +74,7 @@ class AudioPlaylist : public ARDOUR::Playlist
~AudioPlaylist (); /* public should use unref() */
private:
- Crossfades _crossfades;
+ Crossfades _crossfades; /* xfades currently in use */
Crossfades _pending_xfade_adds;
void crossfade_invalidated (Crossfade*);
diff --git a/libs/ardour/ardour/audioregion.h b/libs/ardour/ardour/audioregion.h
index 3ac62da2ca..e14cfd0180 100644
--- a/libs/ardour/ardour/audioregion.h
+++ b/libs/ardour/ardour/audioregion.h
@@ -42,18 +42,6 @@ class Session;
class AudioFilter;
class AudioSource;
-struct AudioRegionState : public RegionState
-{
- AudioRegionState (std::string why);
-
- Curve _fade_in;
- Curve _fade_out;
- Curve _envelope;
- gain_t _scale_amplitude;
- uint32_t _fade_in_disabled;
- uint32_t _fade_out_disabled;
-};
-
class AudioRegion : public Region
{
public:
@@ -125,8 +113,6 @@ class AudioRegion : public Region
int separate_by_channel (ARDOUR::Session&, vector<AudioRegion*>&) const;
- UndoAction get_memento() const;
-
/* filter */
int apply (AudioFilter&);
@@ -159,9 +145,6 @@ class AudioRegion : public Region
void set_default_fade_out ();
void set_default_envelope ();
- StateManager::State* state_factory (std::string why) const;
- Change restore_state (StateManager::State&);
-
void recompute_gain_at_end ();
void recompute_gain_at_start ();
@@ -185,6 +168,9 @@ class AudioRegion : public Region
gain_t _scale_amplitude;
uint32_t _fade_in_disabled;
uint32_t _fade_out_disabled;
+
+ protected:
+ int set_live_state (const XMLNode&, Change&, bool send);
};
} /* namespace ARDOUR */
diff --git a/libs/ardour/ardour/configuration_vars.h b/libs/ardour/ardour/configuration_vars.h
index 7301b31d8a..fe65e9d433 100644
--- a/libs/ardour/ardour/configuration_vars.h
+++ b/libs/ardour/ardour/configuration_vars.h
@@ -45,11 +45,11 @@ CONFIG_VARIABLE (bool, use_overlap_equivalency, "use-overlap-equivalency", true)
/* crossfades */
-CONFIG_VARIABLE (CrossfadeModel, xfade_model, "xfade-model", ShortCrossfade)
+CONFIG_VARIABLE (CrossfadeModel, xfade_model, "xfade-model", FullCrossfade)
CONFIG_VARIABLE (bool, auto_xfade, "auto-xfade", true)
CONFIG_VARIABLE (float, short_xfade_seconds, "short-xfade-seconds", 0.015)
-CONFIG_VARIABLE (bool, crossfades_active, "crossfades-active", false)
-CONFIG_VARIABLE (bool, crossfades_visible, "crossfades-visible", false)
+CONFIG_VARIABLE (bool, xfades_active, "xfades-active", true)
+CONFIG_VARIABLE (bool, xfades_visible, "xfades-visible", true)
CONFIG_VARIABLE (uint32_t, destructive_xfade_msecs, "destructive-xfade-msecs", 2)
/* editing related */
@@ -121,6 +121,11 @@ CONFIG_VARIABLE (bool, verify_remove_last_capture, "verify-remove-last-capture",
CONFIG_VARIABLE (bool, no_new_session_dialog, "no-new-session-dialog", false)
CONFIG_VARIABLE (bool, use_vst, "use-vst", true)
+/* BWAV */
+
+CONFIG_VARIABLE (string, bwf_country_code, "bwf-country-code", "US")
+CONFIG_VARIABLE (string, bwf_organization_code, "bwf-organization-code", "US")
+
/* these variables have custom set() methods (e.g. path globbing) */
CONFIG_VARIABLE_SPECIAL(std::string, raid_path, "raid-path", "", path_expand)
diff --git a/libs/ardour/ardour/crossfade.h b/libs/ardour/ardour/crossfade.h
index 7fd7323b36..d29ba47056 100644
--- a/libs/ardour/ardour/crossfade.h
+++ b/libs/ardour/ardour/crossfade.h
@@ -33,7 +33,6 @@
#include <ardour/ardour.h>
#include <ardour/curve.h>
#include <ardour/audioregion.h>
-#include <ardour/state_manager.h>
#include <ardour/crossfade_compare.h>
namespace ARDOUR {
@@ -41,19 +40,7 @@ namespace ARDOUR {
class AudioRegion;
class Playlist;
-struct CrossfadeState : public StateManager::State {
- CrossfadeState (std::string reason) : StateManager::State (reason) {}
-
- UndoAction fade_in_memento;
- UndoAction fade_out_memento;
- nframes_t position;
- nframes_t length;
- AnchorPoint anchor_point;
- bool follow_overlap;
- bool active;
-};
-
-class Crossfade : public PBD::StatefulDestructible, public StateManager
+class Crossfade : public PBD::StatefulDestructible
{
public:
@@ -121,7 +108,10 @@ class Crossfade : public PBD::StatefulDestructible, public StateManager
nframes_t overlap_length() const;
nframes_t position() const { return _position; }
+ void invalidate();
+
sigc::signal<void,Crossfade*> Invalidated;
+ sigc::signal<void,Change> StateChanged;
bool covers (nframes_t frame) const {
return _position <= frame && frame < _position + _length;
@@ -129,8 +119,6 @@ class Crossfade : public PBD::StatefulDestructible, public StateManager
OverlapType coverage (nframes_t start, nframes_t end) const;
- UndoAction get_memento() const;
-
static void set_buffer_size (nframes_t);
bool active () const { return _active; }
@@ -149,6 +137,7 @@ class Crossfade : public PBD::StatefulDestructible, public StateManager
static void set_short_xfade_length (nframes_t n);
static Change ActiveChanged;
+ static Change FollowOverlapChanged;
private:
friend struct CrossfadeComparePtr;
@@ -172,15 +161,11 @@ class Crossfade : public PBD::StatefulDestructible, public StateManager
static Sample* crossfade_buffer_out;
static Sample* crossfade_buffer_in;
- void initialize (bool savestate=true);
+ void initialize ();
int compute (boost::shared_ptr<ARDOUR::AudioRegion>, boost::shared_ptr<ARDOUR::AudioRegion>, CrossfadeModel);
bool update (bool force);
- StateManager::State* state_factory (std::string why) const;
- Change restore_state (StateManager::State&);
-
void member_changed (ARDOUR::Change);
-
};
diff --git a/libs/ardour/ardour/midi_playlist.h b/libs/ardour/ardour/midi_playlist.h
index 36793b70ea..6f89d23404 100644
--- a/libs/ardour/ardour/midi_playlist.h
+++ b/libs/ardour/ardour/midi_playlist.h
@@ -37,18 +37,6 @@ class MidiRingBuffer;
class MidiPlaylist : public ARDOUR::Playlist
{
-private:
-
- struct State : public ARDOUR::StateManager::State
- {
- RegionList regions;
- std::list<UndoAction> region_states;
-
- State (std::string why) : ARDOUR::StateManager::State (why)
- {}
- ~State ();
- };
-
public:
MidiPlaylist (Session&, const XMLNode&, bool hidden = false);
MidiPlaylist (Session&, string name, bool hidden = false);
@@ -56,31 +44,16 @@ public:
MidiPlaylist (const MidiPlaylist&, jack_nframes_t start, jack_nframes_t cnt,
string name, bool hidden = false);
- jack_nframes_t read (MidiRingBuffer& buf,
- jack_nframes_t start, jack_nframes_t cnt, uint32_t chan_n=0);
+ nframes_t read (MidiRingBuffer& buf,
+ jack_nframes_t start, jack_nframes_t cnt, uint32_t chan_n=0);
int set_state (const XMLNode&);
UndoAction get_memento() const;
- template<class T>
- void apply_to_history (T& obj, void (T::*method)(const ARDOUR::StateManager::StateMap&, state_id_t))
- {
- RegionLock rlock (this);
- (obj.*method) (states, _current_state_id);
- }
-
bool destroy_region (boost::shared_ptr<Region>);
- void drop_all_states ();
-
protected:
- /* state management */
-
- StateManager::State* state_factory (std::string) const;
- Change restore_state (StateManager::State&);
- void send_state_change (Change);
-
/* playlist "callbacks" */
void flush_notifications ();
diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h
index d7b13ef684..93b30f42ef 100644
--- a/libs/ardour/ardour/playlist.h
+++ b/libs/ardour/ardour/playlist.h
@@ -40,7 +40,6 @@
#include <ardour/ardour.h>
#include <ardour/crossfade_compare.h>
#include <ardour/location.h>
-#include <ardour/state_manager.h>
#include <ardour/data_type.h>
namespace ARDOUR {
@@ -48,7 +47,7 @@ namespace ARDOUR {
class Session;
class Region;
-class Playlist : public StateManager, public PBD::StatefulDestructible {
+class Playlist : public PBD::StatefulDestructible {
public:
typedef list<boost::shared_ptr<Region> > RegionList;
@@ -57,9 +56,8 @@ class Playlist : public StateManager, public PBD::StatefulDestructible {
Playlist (const Playlist&, string name, bool hidden = false);
Playlist (const Playlist&, nframes_t start, nframes_t cnt, string name, bool hidden = false);
- virtual void clear (bool with_save = true);
+ virtual void clear (bool with_signals=true);
virtual void dump () const;
- virtual UndoAction get_memento() const = 0;
void ref();
void unref();
@@ -83,7 +81,7 @@ class Playlist : public StateManager, public PBD::StatefulDestructible {
/* Editing operations */
- void add_region (boost::shared_ptr<Region>, nframes_t position, float times = 1, bool with_save = true);
+ void add_region (boost::shared_ptr<Region>, nframes_t position, float times = 1);
void remove_region (boost::shared_ptr<Region>);
void get_equivalent_regions (boost::shared_ptr<Region>, std::vector<boost::shared_ptr<Region> >&);
void get_region_list_equivalent_regions (boost::shared_ptr<Region>, std::vector<boost::shared_ptr<Region> >&);
@@ -114,8 +112,6 @@ class Playlist : public StateManager, public PBD::StatefulDestructible {
int set_state (const XMLNode&);
XMLNode& get_template ();
- sigc::signal<void,boost::shared_ptr<Region> > RegionAdded;
- sigc::signal<void,boost::shared_ptr<Region> > RegionRemoved;
sigc::signal<void,Playlist*,bool> InUse;
sigc::signal<void> Modified;
sigc::signal<void> NameChanged;
@@ -172,20 +168,21 @@ class Playlist : public StateManager, public PBD::StatefulDestructible {
friend class RegionLock;
RegionList regions; /* the current list of regions in the playlist */
+ std::set<boost::shared_ptr<Region> > all_regions; /* all regions ever added to this playlist */
string _name;
Session& _session;
DataType _type;
mutable gint block_notifications;
mutable gint ignore_state_changes;
mutable Glib::Mutex region_lock;
- RegionList pending_removals;
- RegionList pending_adds;
+ std::set<boost::shared_ptr<Region> > pending_adds;
+ std::set<boost::shared_ptr<Region> > pending_removes;
RegionList pending_bounds;
bool pending_modified;
bool pending_length;
bool save_on_thaw;
string last_save_reason;
- bool in_set_state;
+ uint32_t in_set_state;
bool _hidden;
bool _splicing;
bool _nudging;
@@ -248,10 +245,7 @@ class Playlist : public StateManager, public PBD::StatefulDestructible {
virtual XMLNode& state (bool);
- /* override state_manager::save_state so we can check in_set_state() */
-
- void save_state (std::string why);
- void maybe_save_state (std::string why);
+ boost::shared_ptr<Region> region_by_id (PBD::ID);
void add_region_internal (boost::shared_ptr<Region>, nframes_t position, bool delay_sort = false);
diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h
index 96663f79c8..627e556cad 100644
--- a/libs/ardour/ardour/region.h
+++ b/libs/ardour/ardour/region.h
@@ -29,7 +29,6 @@
#include <pbd/statefuldestructible.h>
#include <ardour/ardour.h>
-#include <ardour/state_manager.h>
#include <ardour/data_type.h>
class XMLNode;
@@ -44,21 +43,7 @@ enum RegionEditState {
EditChangesID = 2
};
-struct RegionState : public StateManager::State
-{
- RegionState (std::string why) : StateManager::State (why) {}
-
- nframes_t _start;
- nframes_t _length;
- nframes_t _position;
- uint32_t _flags;
- nframes_t _sync_position;
- layer_t _layer;
- string _name;
- mutable RegionEditState _first_edit;
-};
-
-class Region : public PBD::StatefulDestructible, public StateManager, public boost::enable_shared_from_this<Region>
+class Region : public PBD::StatefulDestructible, public boost::enable_shared_from_this<Region>
{
public:
typedef std::vector<boost::shared_ptr<Source> > SourceList;
@@ -96,6 +81,8 @@ class Region : public PBD::StatefulDestructible, public StateManager, public boo
static Change LayerChanged;
static Change HiddenChanged;
+ sigc::signal<void,Change> StateChanged;
+
virtual ~Region();
/* Note: changing the name of a Region does not constitute an edit */
@@ -181,8 +168,6 @@ class Region : public PBD::StatefulDestructible, public StateManager, public boo
ARDOUR::Playlist* playlist() const { return _playlist; }
- virtual UndoAction get_memento() const = 0;
-
void set_playlist (ARDOUR::Playlist*);
void source_deleted (boost::shared_ptr<Source>);
@@ -198,6 +183,7 @@ class Region : public PBD::StatefulDestructible, public StateManager, public boo
XMLNode& get_state ();
virtual XMLNode& state (bool);
virtual int set_state (const XMLNode&);
+ virtual int set_live_state (const XMLNode&, Change&, bool send);
boost::shared_ptr<Region> get_parent();
@@ -220,15 +206,8 @@ class Region : public PBD::StatefulDestructible, public StateManager, public boo
protected:
XMLNode& get_short_state (); /* used only by Session */
- /* state management */
-
void send_change (Change);
- /* derived classes need these during their own state management calls */
-
- void store_state (RegionState&) const;
- Change restore_and_return_flags (RegionState&);
-
void trim_to_internal (nframes_t position, nframes_t length, void *src);
bool copied() const { return _flags & Copied; }