20 #ifndef __ardour_session_h__
21 #define __ardour_session_h__
23 #include "libardour-config.h"
32 #include <boost/dynamic_bitset.hpp>
33 #include <boost/scoped_ptr.hpp>
34 #include <boost/weak_ptr.hpp>
35 #include <boost/utility.hpp>
37 #include <glibmm/threads.h>
50 #include "midi++/types.h"
51 #include "midi++/mmc.h"
53 #include "timecode/time.h"
80 class ControllableDescriptor;
91 class AudioFileSource;
109 class MidiClockTicker;
111 class MidiPortManager;
130 class SessionDirectory;
131 class SessionMetadata;
132 class SessionPlaylists;
138 class WindowsVSTPlugin;
156 const std::string& fullpath,
157 const std::string& snapshot_name,
159 std::string mix_template =
"");
163 static int get_info_from_path (
const std::string& xmlpath,
float& sample_rate,
SampleFormat& data_format);
165 std::string
path()
const {
return _path; }
166 std::string
name()
const {
return _name; }
167 std::string
snap_name()
const {
return _current_snapshot_name; }
168 std::string raid_path ()
const;
169 bool path_is_within_session (
const std::string&);
171 void set_snap_name ();
176 bool dirty()
const {
return _state_of_the_state & Dirty; }
177 void set_deletion_in_progress ();
178 void clear_deletion_in_progress ();
184 static PBD::Signal1<void,std::string>
Dialog;
189 int ensure_subdirs ();
191 std::string automation_dir ()
const;
192 std::string analysis_dir ()
const;
193 std::string plugins_dir ()
const;
194 std::string externals_dir ()
const;
196 std::string peak_path (std::string)
const;
198 std::string peak_path_from_audio_path (std::string)
const;
199 bool audio_source_name_is_unique (
const std::string&
name);
200 std::string format_audio_source_name (
const std::string& legalized_base, uint32_t nchan, uint32_t chan,
bool destructive,
bool take_required, uint32_t cnt,
bool related_exists);
201 std::string new_audio_source_path_for_embedded (
const std::string& existing_path);
202 std::string new_audio_source_path (
const std::string&, uint32_t nchans, uint32_t chan,
bool destructive,
bool take_required);
203 std::string new_midi_source_path (
const std::string&);
204 RouteList new_route_from_template (uint32_t how_many,
const std::string& template_path,
const std::string&
name);
205 std::vector<std::string> get_paths_for_new_sources (
bool allow_replacing,
const std::string& import_file_path, uint32_t channels);
207 int bring_all_sources_into_session (boost::function<
void(uint32_t,uint32_t,std::string)> callback);
216 bool have_rec_enabled_track ()
const;
220 void refill_all_track_buffers ();
222 void butler_transport_work ();
224 void refresh_disk_space ();
226 int load_diskstreams_2X (
XMLNode const &,
int);
228 int load_routes (
const XMLNode&,
int);
230 return routes.reader ();
237 uint32_t
nroutes()
const {
return routes.reader()->size(); }
238 uint32_t ntracks ()
const;
239 uint32_t nbusses ()
const;
242 return _bundles.reader ();
250 void notify_remote_id_change ();
251 void sync_order_keys ();
253 template<
class T>
void foreach_route (T *obj,
void (T::*func)(
Route&),
bool sort =
true);
255 template<
class T,
class A>
void foreach_route (T *obj,
void (T::*func)(
Route&, A), A arg,
bool sort =
true);
257 static char session_name_is_legal (
const std::string&);
258 bool io_name_is_legal (
const std::string&);
263 void routes_using_input_from (
const std::string& str,
RouteList& rl);
265 bool route_name_unique (std::string)
const;
266 bool route_name_internal (std::string)
const;
269 return _track_number_decimals;
273 return (record_status () >= Enabled);
277 return (
RecordState) g_atomic_int_get (&_record_status);
281 return record_status() == Recording;
284 bool record_enabling_legal ()
const;
285 void maybe_enable_record ();
286 void disable_record (
bool rt_context,
bool force =
false);
287 void step_back_from_record ();
289 void maybe_write_autosave ();
311 PBD::Signal1<void,framepos_t>
Xrun;
338 void request_stop (
bool abort =
false,
bool clear_state =
false);
339 void request_locate (
framepos_t frame,
bool with_roll =
false);
341 void request_play_loop (
bool yn,
bool leave_rolling =
false);
347 void use_rf_shuttle_speed ();
348 void allow_auto_play (
bool yn);
349 void request_transport_speed (
double speed,
bool as_default =
false);
350 void request_transport_speed_nonzero (
double,
bool as_default =
false);
351 void request_overwrite_buffer (
Track *);
352 void adjust_playback_buffering();
353 void adjust_capture_buffering();
354 void request_track_speed (
Track *,
double speed);
355 void request_input_change_handling ();
357 bool locate_pending()
const {
return static_cast<bool>(post_transport_work()&PostTransportLocate); }
358 bool transport_locked ()
const;
374 return mtc_timecode_bits;
377 double timecode_frames_per_second()
const;
378 bool timecode_drop_frames()
const;
388 void set_auto_punch_location (
Location *);
389 void set_auto_loop_location (
Location *);
391 int location_name(std::string& result, std::string base = std::string(
""));
428 int save_state (std::string snapshot_name,
bool pending =
false,
bool switch_to_snapshot =
false,
bool template_only =
false);
429 int restore_state (std::string snapshot_name);
430 int save_template (std::string template_name);
431 int save_history (std::string snapshot_name =
"");
432 int restore_history (std::string snapshot_name);
433 void remove_state (std::string snapshot_name);
434 void rename_state (std::string old_name, std::string new_name);
435 void remove_pending_capture_state ();
436 int rename (
const std::string&);
439 bool save_default_options ();
459 std::vector<std::string> possible_states()
const;
460 static std::vector<std::string> possible_states (std::string path);
463 int set_state(
const XMLNode& node,
int version);
467 void add_instant_xml (
XMLNode&,
bool write_to_config =
true);
468 XMLNode* instant_xml (
const std::string& str);
475 InitialConnecting = 0x8,
488 if (g_atomic_int_dec_and_test (&_session->_suspend_save)) {
489 while (_session->_save_queued) {
490 _session->_save_queued =
false;
491 _session->save_state (
"");
501 void reorder_route_groups (std::list<RouteGroup*>);
503 RouteGroup* route_group_by_name (std::string);
511 for (std::list<RouteGroup *>::iterator i = _route_groups.begin(); i != _route_groups.end(); ++i) {
517 return _route_groups;
522 std::list<boost::shared_ptr<AudioTrack> > new_audio_track (
527 uint32_t how_many = 1,
528 std::string name_template =
""
532 int input_channels,
int output_channels,
RouteGroup* route_group, uint32_t how_many, std::string name_template =
""
535 std::list<boost::shared_ptr<MidiTrack> > new_midi_track (
539 RouteGroup* route_group = 0, uint32_t how_many = 1, std::string name_template =
""
543 void resort_routes ();
555 void set_requested_return_frame(
framepos_t return_to);
569 void sync_time_vars();
571 void bbt_time (
framepos_t when, Timecode::BBT_Time&);
572 void timecode_to_sample(Timecode::Time& timecode,
framepos_t& sample,
bool use_offset,
bool use_subframes)
const;
573 void sample_to_timecode(
framepos_t sample, Timecode::Time& timecode,
bool use_offset,
bool use_subframes)
const;
574 void timecode_time (Timecode::Time &);
575 void timecode_time (
framepos_t when, Timecode::Time&);
576 void timecode_time_subframes (
framepos_t when, Timecode::Time&);
578 void timecode_duration (
framecnt_t, Timecode::Time&)
const;
579 void timecode_duration_string (
char *,
size_t len,
framecnt_t)
const;
587 void request_sync_source (
Slave*);
613 bool sample_rate_convert (
ImportStatus&, std::string infile, std::string& outfile);
614 std::string build_tmp_convert_name (std::string file);
622 static PBD::Signal2<void,std::string, std::string>
Exported;
627 void cleanup_regions();
633 int remove_last_capture ();
656 size_t, std::string
const &, uint32_t,
bool destructive);
664 uint32_t count_sources_by_origin (
const std::string&);
674 void audition_playlist ();
676 void cancel_audition ();
677 bool is_auditioning ()
const;
686 bool include_endpoint,
bool for_export,
bool for_freeze);
691 bool soloing()
const {
return _non_soloed_outs_muted; }
713 void add_monitor_section ();
714 void reset_monitor_section ();
715 void remove_monitor_section ();
729 _disable_all_loaded_plugins = yn;
732 return _disable_all_loaded_plugins;
735 uint32_t next_send_id();
736 uint32_t next_aux_send_id();
737 uint32_t next_return_id();
738 uint32_t next_insert_id();
739 void mark_send_id (uint32_t);
740 void mark_aux_send_id (uint32_t);
741 void mark_return_id (uint32_t);
742 void mark_insert_id (uint32_t);
743 void unmark_send_id (uint32_t);
744 void unmark_aux_send_id (uint32_t);
745 void unmark_return_id (uint32_t);
746 void unmark_insert_id (uint32_t);
750 boost::optional<framecnt_t> available_capture_duration();
777 uint32_t
undo_depth()
const {
return _history.undo_depth(); }
778 uint32_t
redo_depth()
const {
return _history.redo_depth(); }
779 std::string
next_undo()
const {
return _history.next_undo(); }
780 std::string
next_redo()
const {
return _history.next_redo(); }
782 void begin_reversible_command (
const std::string& cmd_name);
783 void begin_reversible_command (GQuark);
784 void abort_reversible_command ();
785 void commit_reversible_command (
Command* cmd = 0);
788 assert (_current_trans);
789 _current_trans->add_command (cmd);
794 return _current_trans_quarks;
797 bool operation_in_progress (GQuark)
const;
799 void add_commands (std::vector<Command*>
const & cmds);
801 std::map<PBD::ID,PBD::StatefulDestructible*>
registry;
815 uint32_t playback_load ();
816 uint32_t capture_load ();
820 void request_play_range (std::list<AudioRange>*,
bool leave_rolling =
false);
821 void request_cancel_play_range ();
828 gain_t* gain_automation_buffer ()
const;
829 gain_t* trim_automation_buffer ()
const;
830 gain_t* send_gain_automation_buffer ()
const;
831 pan_t** pan_automation_buffer ()
const;
838 static const char* vst_can_do_strings[];
873 return _bounce_processing_active;
882 PostTransportStop = 0x1,
883 PostTransportDuration = 0x2,
884 PostTransportLocate = 0x4,
885 PostTransportRoll = 0x8,
886 PostTransportAbort = 0x10,
887 PostTransportOverWrite = 0x20,
888 PostTransportSpeed = 0x40,
889 PostTransportAudition = 0x80,
890 PostTransportReverse = 0x100,
891 PostTransportInputChange = 0x200,
892 PostTransportCurveRealloc = 0x400,
893 PostTransportClearSubstate = 0x800,
894 PostTransportAdjustPlaybackBuffering = 0x1000,
895 PostTransportAdjustCaptureBuffering = 0x2000
915 void request_suspend_timecode_transmission ();
916 void request_resume_timecode_transmission ();
917 bool timecode_transmission_suspended ()
const;
919 std::vector<std::string> source_search_path(
DataType)
const;
920 void ensure_search_path_includes (
const std::string& path,
DataType type);
921 void remove_dir_from_search_path (
const std::string& path,
DataType type);
923 std::list<std::string> unknown_processors ()
const;
945 static PBD::Signal3<int,Session*,std::string,DataType>
MissingFile;
948 static PBD::Signal0<void>
Quit;
963 MIDI::Port* midi_input_port ()
const;
964 MIDI::Port* midi_output_port ()
const;
965 MIDI::Port* mmc_output_port ()
const;
966 MIDI::Port* mmc_input_port ()
const;
968 MIDI::Port* scene_input_port ()
const;
969 MIDI::Port* scene_output_port ()
const;
979 MIDI::MachineControl&
mmc() {
return *_mmc; }
985 void reconnect_existing_routes (
bool withLock,
bool reconnect_master =
true,
bool reconnect_inputs =
true,
bool reconnect_outputs =
true);
989 void schedule_curve_reallocation ();
990 void update_latency_compensation (
bool force =
false);
993 int create (
const std::string& mix_template,
BusProfile*);
997 PendingDeclickIn = 0x1,
998 PendingDeclickOut = 0x2,
999 StopPendingCapture = 0x4,
1000 PendingLoopDeclickIn = 0x8,
1001 PendingLoopDeclickOut = 0x10,
1002 PendingLocate = 0x20,
1052 void initialize_latencies ();
1053 void set_worst_io_latencies ();
1054 void set_worst_playback_latency ();
1055 void set_worst_capture_latency ();
1057 set_worst_io_latencies ();
1059 void post_capture_latency ();
1060 void post_playback_latency ();
1062 void update_latency_compensation_proxy (
void* ignored);
1067 void process_without_events (
pframes_t);
1081 static const int delta_accumulator_size = 25;
1083 int32_t delta_accumulator[delta_accumulator_size];
1091 void reset_slave_state ();
1093 void calculate_moving_average_of_slave_delta (
int dir,
framecnt_t this_delta);
1094 void track_slave_state (
float slave_speed,
framepos_t slave_transport_frame,
framecnt_t this_delta);
1095 void follow_slave_silently (
pframes_t nframes,
float slave_speed);
1098 void drop_sync_source ();
1099 void use_sync_source (
Slave*);
1112 int stop_audio_export ();
1113 void finalize_audio_export ();
1114 void finalize_export_internal (
bool stop_freewheel);
1119 void get_track_statistics ();
1120 int process_routes (
pframes_t,
bool& need_butler);
1121 int silent_process_routes (
pframes_t,
bool& need_butler);
1128 if (transport_sub_state & PendingDeclickIn) {
1129 transport_sub_state &= ~PendingDeclickIn;
1131 }
else if (transport_sub_state & PendingDeclickOut) {
1134 }
else if (transport_sub_state & PendingLoopDeclickOut) {
1136 transport_sub_state &= ~PendingLoopDeclickOut;
1138 }
else if (transport_sub_state & PendingLoopDeclickIn) {
1140 transport_sub_state &= ~PendingLoopDeclickIn;
1150 void check_declick_out ();
1168 void graph_reordered ();
1182 int load_options (
const XMLNode&);
1183 int load_state (std::string snapshot_name);
1200 PostTransportInputChange|
1202 PostTransportReverse|
1203 PostTransportCurveRealloc|
1204 PostTransportAudition|
1205 PostTransportLocate|
1207 PostTransportClearSubstate);
1212 void add_post_transport_work (PostTransportWork ptw);
1214 void schedule_playback_buffering_adjustment ();
1215 void schedule_capture_buffering_adjustment ();
1220 void set_rf_speed (
float speed);
1221 void reset_rf_scale (
framecnt_t frames_moved);
1226 void locations_changed ();
1229 void update_skips (
Location*,
bool consolidate);
1232 void consolidate_skips (
Location*);
1233 void sync_locations_to_skips ();
1234 void _sync_locations_to_skips ();
1240 void auto_punch_start_changed (
Location *);
1241 void auto_punch_end_changed (
Location *);
1242 void auto_punch_changed (
Location *);
1245 void auto_loop_changed (
Location *);
1248 int ensure_engine (uint32_t desired_sample_rate);
1249 void pre_engine_init (std::string path);
1250 int post_engine_init ();
1251 int immediately_post_engine ();
1252 void remove_empty_sounds ();
1254 void setup_midi_control ();
1255 int midi_read (MIDI::Port *);
1257 void enable_record ();
1263 _transport_frame += val;
1268 if (val < _transport_frame) {
1269 _transport_frame -= val;
1271 _transport_frame = 0;
1275 void post_transport_motion ();
1276 static void *session_loader_thread (
void *arg);
1281 void emit_route_signals ();
1282 void emit_thread_run ();
1283 static void *emit_thread (
void *);
1284 void emit_thread_start ();
1285 void emit_thread_terminate ();
1298 void set_next_event ();
1304 void spp_continue ();
1307 void mmc_deferred_play (MIDI::MachineControl &);
1308 void mmc_stop (MIDI::MachineControl &);
1309 void mmc_step (MIDI::MachineControl &,
int);
1310 void mmc_pause (MIDI::MachineControl &);
1311 void mmc_record_pause (MIDI::MachineControl &);
1312 void mmc_record_strobe (MIDI::MachineControl &);
1313 void mmc_record_exit (MIDI::MachineControl &);
1314 void mmc_track_record_status (MIDI::MachineControl &, uint32_t track,
bool enabled);
1315 void mmc_fast_forward (MIDI::MachineControl &);
1316 void mmc_rewind (MIDI::MachineControl &);
1317 void mmc_locate (MIDI::MachineControl &,
const MIDI::byte *);
1318 void mmc_shuttle (MIDI::MachineControl &mmc,
float speed,
bool forw);
1319 void mmc_record_enable (MIDI::MachineControl &mmc,
size_t track,
bool enabled);
1321 struct timeval last_mmc_step;
1328 bool mmc_step_timeout ();
1329 void send_immediate_mmc (MIDI::MachineControlCommand);
1331 MIDI::byte mtc_msg[16];
1333 MIDI::byte midi_msg[16];
1372 void ltc_tx_initialize();
1373 void ltc_tx_cleanup();
1374 void ltc_tx_reset();
1375 void ltc_tx_resync_latency();
1376 void ltc_tx_recalculate_position();
1377 void ltc_tx_parse_offset();
1380 void reset_record_status ();
1390 int start_midi_thread ();
1392 void set_play_loop (
bool yn,
double speed);
1393 void unset_play_loop ();
1394 void overwrite_some_buffers (
Track *);
1395 void flush_all_inserts ();
1397 void locate (
framepos_t,
bool with_roll,
bool with_flush,
bool with_loop=
false,
bool force=
false,
bool with_mmc=
true);
1398 void start_locate (
framepos_t,
bool with_roll,
bool with_flush,
bool with_loop=
false,
bool force=
false);
1399 void force_locate (
framepos_t frame,
bool with_roll =
false);
1400 void set_track_speed (
Track *,
double speed);
1401 void set_transport_speed (
double speed,
framepos_t destination_frame,
bool abort =
false,
bool clear_state =
false,
bool as_default =
false);
1402 void stop_transport (
bool abort =
false,
bool clear_state =
false);
1403 void start_transport ();
1404 void realtime_stop (
bool abort,
bool clear_state);
1405 void realtime_locate ();
1406 void non_realtime_start_scrub ();
1407 void non_realtime_set_speed ();
1408 void non_realtime_locate ();
1409 void non_realtime_stop (
bool abort,
int entry_request_count,
bool& finished);
1410 void non_realtime_overwrite (
int entry_request_count,
bool& finished);
1411 void post_transport ();
1412 void engine_halted ();
1413 void xrun_recovery ();
1414 void set_track_loop (
bool);
1421 void send_song_position_pointer (
framepos_t);
1428 int load_route_groups (
const XMLNode&,
int);
1439 void add_routes (
RouteList&,
bool input_auto_connect,
bool output_auto_connect,
bool save);
1440 void add_routes_inner (
RouteList&,
bool input_auto_connect,
bool output_auto_connect);
1449 bool find_route_name (std::string
const &, uint32_t&
id,
char*
name,
size_t name_len,
bool);
1452 bool with_lock,
bool connect_inputs =
true,
1458 void reassign_track_numbers ();
1466 void route_mute_changed (
void *src);
1471 void listen_position_changed ();
1472 void solo_control_mode_changed ();
1478 int load_regions (
const XMLNode& node);
1479 int load_compounds (
const XMLNode& node);
1483 void route_group_property_changed (
RouteGroup *);
1490 typedef std::map<PBD::ID,boost::shared_ptr<Source> >
SourceMap;
1493 void reset_write_sources (
bool mark_write_complete,
bool force =
false);
1498 int load_sources (
const XMLNode& node);
1499 XMLNode& get_sources_as_xml ();
1523 void non_realtime_set_audition ();
1548 , blocks_unknown (true)
1561 void setup_raid_path (std::string path);
1575 std::string get_best_session_directory_for_new_audio ();
1584 int load_bundles (
XMLNode const &);
1599 void update_latency (
bool playback);
1617 static const Sample default_click_emphasis[];
1622 void setup_click_sounds (
int which);
1624 void clear_clicks ();
1633 void set_play_range (std::list<AudioRange>&,
bool leave_rolling);
1634 void unset_play_range ();
1642 void auto_connect_master_bus ();
1646 long _windows_vst_callback (
1655 int find_all_sources (std::string path, std::set<std::string>& result);
1656 int find_all_sources_across_snapshots (std::set<std::string>& result,
bool exclude_this_snapshot);
1664 void reset_native_file_format();
1668 void config_changed (std::string,
bool);
1670 XMLNode& get_control_protocol_state ();
1672 void set_history_depth (uint32_t depth);
1678 void update_have_rec_enabled_track ();
1688 ev->
rt_slot = boost::bind (method,
this, rl, targ, group_override);
1709 void setup_midi_machine_control ();
1711 void step_edit_status_change (
bool);
1722 void set_track_monitor_input_status (
bool);
1726 void load_nested_sources (
const XMLNode& node);
1733 uint32_t next_control_id ()
const;
1742 void reconnect_ltc_input ();
1743 void reconnect_ltc_output ();
1753 void setup_click ();
1754 void setup_click_state (
const XMLNode*);
1755 void setup_bundles ();
1757 void save_as_bring_callback (uint32_t, uint32_t, std::string);
1759 static int get_session_info_from_path (
XMLTree& state_tree,
const std::string& xmlpath);
framecnt_t _nominal_frame_rate
bool transport_rolling() const
PBD::Signal0< void > route_groups_reordered
static PBD::Signal1< int, boost::shared_ptr< Playlist > > AskAboutPlaylistDeletion
std::list< MidiTimeoutCallback > MidiTimeoutList
PBD::Signal0< void > IOConnectionsComplete
boost::shared_ptr< ExportHandler > export_handler
process_function_type last_process_function
PBD::Signal0< void > IsolatedChanged
framecnt_t nominal_frame_rate() const
static const SessionEvent::RTeventCallback rt_cleanup
boost::shared_ptr< Route > _monitor_out
bool non_realtime_work_pending() const
boost::scoped_ptr< SessionDirectory > _session_dir
unsigned int get_xrun_count() const
PBD::EventLoop * event_loop
SessionEvent * get_rt_event(boost::shared_ptr< RouteList > rl, T targ, SessionEvent::RTeventCallback after, bool group_override, void(Session::*method)(boost::shared_ptr< RouteList >, T, bool))
boost::shared_ptr< Speakers > _speakers
boost::shared_ptr< IO > _ltc_input
boost::shared_ptr< Amp > click_gain()
static const framecnt_t default_click_emphasis_length
gint _post_transport_work
framecnt_t _worst_output_latency
Glib::Threads::RWLock click_lock
Glib::Threads::Mutex source_lock
bool solo_isolated() const
PBD::Signal1< void, RouteGroup * > route_group_added
boost::shared_ptr< IO > _click_io
PBD::Signal0< void > TransportStateChange
SceneChanger * _scene_changer
framepos_t record_location() const
std::list< Location * > LocationList
uint32_t redo_depth() const
static bool get_disable_all_loaded_plugins()
bool get_record_enabled() const
framepos_t _last_record_location
volatile bool _save_queued
boost::function< void(SessionEvent *)> RTeventCallback
framecnt_t worst_playback_latency() const
boost::dynamic_bitset< uint32_t > send_bitset
double transport_speed() const
static const int vst_can_do_string_count
int get_transport_declick_required()
Timecode::Time transmitting_timecode_time
framecnt_t _current_frame_rate
static PBD::Signal2< int, framecnt_t, framecnt_t > AskAboutSampleRateMismatch
framepos_t pending_locate_frame
bool pending_locate_flush
boost::dynamic_bitset< uint32_t > return_bitset
Timecode::TimecodeFormat ltc_enc_tcformat
bool actively_recording() const
PBD::Signal1< void, RouteGroup * > RouteGroupPropertyChanged
static PBD::Signal1< void, framepos_t > EndTimeChanged
bool get_play_loop() const
bool solo_update_disabled
static PBD::Signal1< void, std::string > Dialog
std::list< AudioRange > current_audio_range
int32_t average_slave_delta
bool waiting_for_sync_offset
PBD::Signal0< void > SoloChanged
bool first_file_data_format_reset
void add_command(Command *const cmd)
bool have_looped
Used in ::audible_frame(*)
PBD::Signal0< void > locations_modified
PBD::Signal0< void > Located
boost::shared_ptr< Graph > _process_graph
bool _adding_routes_in_progress
pthread_cond_t _rt_emit_cond
PBD::Signal0< void > TransportLooped
boost::function< void(void)> rt_slot
boost::shared_ptr< Amp > _click_gain
gint processing_prohibited
std::string next_undo() const
void set_worst_io_latencies_x(IOChange, void *)
static void set_disable_all_loaded_plugins(bool yn)
void increment_transport_position(framecnt_t val)
Controllables controllables
framecnt_t _worst_input_latency
bool _send_timecode_update
Flag to send a full frame (Timecode) MTC message this cycle.
PBD::Signal2< void, RouteGroup *, boost::weak_ptr< Route > > RouteAddedToRouteGroup
Glib::Threads::Mutex controllables_lock
bool get_play_range() const
bool step_editing() const
process_function_type process_function
RTeventCallback rt_return
MidiPortManager * _midi_ports
static PBD::Signal1< int, uint32_t > AudioEngineSetupRequired
SessionConfiguration config
double _frames_per_timecode_frame
static EventLoop * get_event_loop_for_thread()
RecordState record_status() const
MIDI::MachineControl * _mmc
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
PBD::Signal3< bool, float, int64_t, int64_t > Progress
framecnt_t _base_frame_rate
PBD::Signal0< void > BundleAddedOrRemoved
framecnt_t worst_input_latency() const
uint32_t _track_number_decimals
framecnt_t frame_rate() const
boost::function< bool()> MidiTimeoutCallback
Glib::Threads::Mutex region_lock
double _default_transport_speed
framepos_t _clicks_cleared
LatencyRange ltc_out_latency
double _target_transport_speed
PBD::Signal1< void, framepos_t > PositionChanged
boost::shared_ptr< Auditioner > the_auditioner()
uint32_t blocks
4kB blocks
void queue_full_time_code()
uint32_t destructive_index
AudioEngine const & engine() const
LIBARDOUR_API uint64_t TempoMap
framepos_t slave_wait_end
SerializedRCUManager< BundleList > _bundles
static PBD::Signal0< void > SendFeedback
MidiTimeoutList midi_timeouts
PBD::Signal0< void > StateReady
double frames_per_timecode_frame() const
framepos_t _last_roll_or_reversal_location
std::list< RouteGroup * > _route_groups
framepos_t _last_slave_transport_frame
bool get_nsm_state() const
std::string next_redo() const
UndoTransaction * _current_trans
std::map< PBD::ID, AutomationList * > automation_lists
void set_post_transport_work(PostTransportWork ptw)
uint32_t undo_depth() const
framepos_t last_transport_start() const
static PBD::Signal1< void, framepos_t > StartTimeChanged
double outbound_mtc_timecode_frame
pframes_t current_block_size
static PBD::Signal0< void > FeedbackDetected
CubicInterpolation interpolation
LIBARDOUR_API uint64_t Butler
XMLNode * _bundle_xml_node
MIDI::byte mtc_timecode_bits
void foreach_route_group(boost::function< void(RouteGroup *)> f)
static const framecnt_t default_click_length
std::string _current_snapshot_name
boost::shared_ptr< IO > click_io()
LIBARDOUR_API RCConfiguration * Config
static const framepos_t Immediate
bool blocks_unknown
true if blocks is unknown
framepos_t post_export_position
boost::shared_ptr< Region > pending_audition_region
PBD::Signal1< void, std::string > SaveSessionRequested
std::list< RouteGroup * > const & route_groups() const
uint32_t cumulative_rf_motion
Glib::Threads::Mutex save_state_lock
boost::shared_ptr< IO > ltc_output_io()
PBD::Signal1< void, framepos_t > Xrun
bool process_can_proceed() const
MidiClockTicker * midi_clock
static PBD::Signal0< void > Quit
StateOfTheState state_of_the_state() const
bool no_questions_about_missing_files
framepos_t transport_frame() const
boost::shared_ptr< Route > master_out() const
framepos_t _last_roll_location
Timecode::Time last_timecode
framecnt_t maximum_output_latency
std::string new_parent_folder
framepos_t last_timecode_when
boost::shared_ptr< BundleList > bundles()
The Slave interface can be used to sync ARDOURs tempo to an external source like MTC, MIDI Clock, etc.
boost::dynamic_bitset< uint32_t > aux_send_bitset
PBD::Signal1< void, bool > AuditionActive
pframes_t _pframes_since_last_mtc
PBD::Signal0< void > DirtyChanged
framecnt_t _worst_track_latency
pthread_t _rt_emit_thread
bool deletion_in_progress() const
void set_nsm_state(bool state)
framecnt_t worst_track_latency() const
std::set< boost::shared_ptr< PBD::Controllable > > Controllables
framecnt_t worst_output_latency() const
framepos_t _requested_return_frame
static PBD::Signal2< void, std::string, std::string > VersionMismatch
boost::shared_ptr< RouteList > get_routes() const
bool session_midi_feedback
int delta_accumulator_cnt
PBD::Signal1< void, bool > StepEditStatusChange
std::map< PBD::ID, boost::shared_ptr< Source > > SourceMap
LIBARDOUR_API uint64_t Graph
boost::shared_ptr< Auditioner > auditioner
void unblock_processing()
SceneChanger * scene_changer() const
LIBARDOUR_API uint64_t Slave
framecnt_t frames_per_hour() const
PBD::Signal0< void > RecordStateChanged
bool locate_pending() const
static PBD::Signal2< void, std::string, std::string > Exported
double _signalled_varispeed
gint _have_rec_enabled_track
static PBD::Signal0< void > SuccessfulGraphSort
pthread_mutex_t _rt_emit_mutex
void queue_song_position_pointer()
bool synced_to_engine() const
SlaveState slave_state() const
void decrement_transport_position(framecnt_t val)
MIDI::byte get_mtc_timecode_bits() const
std::vector< Route * > master_outs
MIDI::MachineControl & mmc()
PBD::Signal1< int, framecnt_t > ProcessExport
framepos_t requested_return_frame() const
bool _non_soloed_outs_muted
boost::shared_ptr< IO > _ltc_output
static const framecnt_t bounce_chunk_size
bool _ignore_skips_updates
bool transport_stopped() const
std::string snap_name() const
std::list< GQuark > _current_trans_quarks
static int vst_current_loading_id
boost::shared_ptr< PBD::Controllable > _solo_cut_control
void set_order_hint(int32_t order_hint)
PBD::Signal0< void > SessionSaveUnderway
std::map< PBD::ID, PBD::StatefulDestructible * > registry
std::string final_session_folder_name
Location * _session_range_location
session range, or 0 if there is nothing in the session yet
std::list< Click * > Clicks
pframes_t get_block_size() const
PBD::Signal1< void, std::string > StateSaved
PBD::Signal0< void > BatchUpdateStart
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > position
static bool _disable_all_loaded_plugins
SerializedRCUManager< RouteList > routes
uint32_t track_number_decimals() const
bool ignore_route_processor_changes
MidiControlUI * midi_control_ui
bool have_captured() const
std::vector< space_and_path > session_dirs
Glib::Threads::Mutex space_lock
PBD::Signal1< void, bool > SoloActive
bool bounce_processing() const
PBD::Signal1< void, Location * > auto_punch_location_changed
uint32_t _total_free_4k_blocks
StateOfTheState _state_of_the_state
Sample * click_emphasis_data
bool processing_blocked() const
gint _suspend_timecode_transmission
RouteGroup * _all_route_group
const TempoMap & tempo_map() const
boost::shared_ptr< SessionPlaylists > playlists
bool ltc_timecode_negative_offset
PBD::Signal2< void, RouteGroup *, boost::weak_ptr< Route > > RouteRemovedFromRouteGroup
static const framepos_t max_framepos
bool first_file_header_format_reset
bool _bounce_processing_active
ltcsnd_sample_t * ltc_enc_buf
PBD::Signal1< void, Location * > auto_loop_location_changed
framepos_t _transport_frame
std::list< GQuark > const & current_operations()
bool _total_free_4k_blocks_uncertain
LIBARDOUR_API uint64_t AudioEngine
PBD::ScopedConnectionList loop_connections
std::vector< space_and_path >::iterator last_rr_session_dir
GraphEdges _current_route_graph
PBD::ScopedConnectionList punch_connections
bool _pre_export_mmc_enabled
static PBD::Signal3< int, Session *, std::string, DataType > MissingFile
boost::shared_ptr< IO > ltc_input_io()
PBD::ScopedConnectionList skip_update_connections
const SessionDirectory & session_directory() const
PBD::ScopedConnection export_freewheel_connection
framecnt_t _timecode_frames_per_hour
framepos_t ltc_timecode_offset
framecnt_t click_emphasis_length
boost::shared_ptr< Route > _master_out
static const ChanCount ZERO
PostTransportWork post_transport_work() const
int next_quarter_frame_to_send
std::list< boost::shared_ptr< Route > > RouteList
boost::shared_ptr< Route > monitor_out() const
float default_fade_steepness
framecnt_t _frames_per_hour
PBD::Signal0< void > BatchUpdateEnd
double _last_transport_speed
bool have_first_delta_accumulator
uint32_t _solo_isolated_cnt
static PBD::Signal0< int > AskAboutPendingState
PBD::Signal0< void > route_group_removed
PBD::Signal1< void, RouteList & > RouteAdded
framecnt_t timecode_frames_per_hour() const
StateProtector(Session *s)
std::list< boost::shared_ptr< Diskstream > > _diskstreams_2X
boost::shared_ptr< ExportStatus > export_status
framepos_t ltc_prev_cycle
boost::dynamic_bitset< uint32_t > insert_bitset
std::string failure_message