#include "ardour/chan_count.h"
#include "ardour/delivery.h"
#include "ardour/interthread_info.h"
+#include "ardour/location.h"
+#include "ardour/monitor_processor.h"
#include "ardour/rc_configuration.h"
#include "ardour/session_configuration.h"
#include "ardour/session_event.h"
-#include "ardour/location.h"
#include "ardour/interpolation.h"
+#include "ardour/route.h"
#include "ardour/route_graph.h"
virtual ~Session ();
static int get_info_from_path (const std::string& xmlpath, float& sample_rate, SampleFormat& data_format);
+ static std::string get_snapshot_from_instant (const std::string& session_dir);
std::string path() const { return _path; }
std::string name() const { return _name; }
std::string raid_path () const;
bool path_is_within_session (const std::string&);
- void set_snap_name ();
-
bool writable() const { return _writable; }
void set_dirty ();
void set_clean ();
std::string new_audio_source_path_for_embedded (const std::string& existing_path);
std::string new_audio_source_path (const std::string&, uint32_t nchans, uint32_t chan, bool destructive, bool take_required);
std::string new_midi_source_path (const std::string&);
- RouteList new_route_from_template (uint32_t how_many, const std::string& template_path, const std::string& name);
+ RouteList new_route_from_template (uint32_t how_many, const std::string& template_path, const std::string& name, PlaylistDisposition pd = NewPlaylist);
+ RouteList new_route_from_template (uint32_t how_many, XMLNode&, const std::string& name, PlaylistDisposition pd = NewPlaylist);
std::vector<std::string> get_paths_for_new_sources (bool allow_replacing, const std::string& import_file_path, uint32_t channels);
int bring_all_sources_into_session (boost::function<void(uint32_t,uint32_t,std::string)> callback);
/** Emitted when a property of one of our route groups changes.
* The parameter is the RouteGroup that has changed.
*/
- PBD::Signal1<void, RouteGroup *> RouteGroupPropertyChanged;
+ PBD::Signal2<void, RouteGroup *, PBD::PropertyChange> RouteGroupPropertyChanged;
/** Emitted when a route is added to one of our route groups.
* First parameter is the RouteGroup, second is the route.
*/
void goto_start ();
void use_rf_shuttle_speed ();
void allow_auto_play (bool yn);
- void request_transport_speed (double speed, bool as_default = false);
- void request_transport_speed_nonzero (double, bool as_default = false);
+ void request_transport_speed (double speed, bool as_default = true);
+ void request_transport_speed_nonzero (double, bool as_default = true);
void request_overwrite_buffer (Track *);
void adjust_playback_buffering();
void adjust_capture_buffering();
PBD::Signal1<void,bool> SoloActive;
PBD::Signal0<void> SoloChanged;
PBD::Signal0<void> IsolatedChanged;
+ PBD::Signal0<void> MonitorChanged;
PBD::Signal0<void> session_routes_reconnected;
void add_monitor_section ();
void reset_monitor_section ();
void remove_monitor_section ();
+ bool monitor_active() const { return (_monitor_out && _monitor_out->monitor_control () && _monitor_out->monitor_control ()->monitor_active()); }
boost::shared_ptr<Route> monitor_out() const { return _monitor_out; }
boost::shared_ptr<Route> master_out() const { return _master_out; }
SceneChanger* scene_changer() const { return _scene_changer; }
- boost::shared_ptr<Port> ltc_input_port() const;
- boost::shared_ptr<Port> ltc_output_port() const;
-
- boost::shared_ptr<IO> ltc_input_io() { return _ltc_input; }
- boost::shared_ptr<IO> ltc_output_io() { return _ltc_output; }
+ /* asynchronous MIDI control ports */
- MIDI::Port* midi_input_port () const;
- MIDI::Port* midi_output_port () const;
- MIDI::Port* mmc_output_port () const;
- MIDI::Port* mmc_input_port () const;
+ boost::shared_ptr<Port> midi_input_port () const;
+ boost::shared_ptr<Port> midi_output_port () const;
+ boost::shared_ptr<Port> mmc_output_port () const;
+ boost::shared_ptr<Port> mmc_input_port () const;
+ boost::shared_ptr<Port> scene_input_port () const;
+ boost::shared_ptr<Port> scene_output_port () const;
- MIDI::Port* scene_input_port () const;
- MIDI::Port* scene_output_port () const;
-
- boost::shared_ptr<MidiPort> scene_in () const;
- boost::shared_ptr<MidiPort> scene_out () const;
+ /* synchronous MIDI ports used for synchronization */
boost::shared_ptr<MidiPort> midi_clock_output_port () const;
boost::shared_ptr<MidiPort> midi_clock_input_port () const;
boost::shared_ptr<MidiPort> mtc_output_port () const;
boost::shared_ptr<MidiPort> mtc_input_port () const;
+ boost::shared_ptr<Port> ltc_input_port() const;
+ boost::shared_ptr<Port> ltc_output_port() const;
+
+ boost::shared_ptr<IO> ltc_input_io() { return _ltc_input; }
+ boost::shared_ptr<IO> ltc_output_io() { return _ltc_output; }
MIDI::MachineControl& mmc() { return *_mmc; }
framecnt_t _worst_track_latency;
bool _have_captured;
bool _non_soloed_outs_muted;
+ bool _listening;
uint32_t _listen_cnt;
uint32_t _solo_isolated_cnt;
bool _writable;
void graph_reordered ();
/** current snapshot name, without the .ardour suffix */
+ void set_snapshot_name (const std::string &);
+ void save_snapshot_name (const std::string &);
std::string _current_snapshot_name;
XMLTree* state_tree;
void route_added_to_route_group (RouteGroup *, boost::weak_ptr<Route>);
void route_removed_from_route_group (RouteGroup *, boost::weak_ptr<Route>);
- void route_group_property_changed (RouteGroup *);
+ void route_group_property_changed (RouteGroup *, PBD::PropertyChange);
/* SOURCES */
static int get_session_info_from_path (XMLTree& state_tree, const std::string& xmlpath);
static const uint32_t session_end_shift;
+
+ std::string _template_state_dir;
};