#include "evoral/types.hpp"
#include "midi++/types.h"
+#include "midi++/mmc.h"
#include "timecode/time.h"
#include "ardour/interpolation.h"
#include "ardour/route_graph.h"
-#ifdef HAVE_JACK_SESSION
-#include <jack/session.h>
-#endif
-
class XMLTree;
class XMLNode;
return routes.reader ();
}
+ boost::shared_ptr<RouteList> get_tracks() const;
boost::shared_ptr<RouteList> get_routes_with_internal_returns() const;
-
boost::shared_ptr<RouteList> get_routes_with_regions_at (framepos_t const) const;
uint32_t nroutes() const { return routes.reader()->size(); }
void set_auto_punch_location (Location *);
void set_auto_loop_location (Location *);
+ void set_session_extents (framepos_t start, framepos_t end);
int location_name(std::string& result, std::string base = std::string(""));
pframes_t get_block_size() const { return current_block_size; }
/* Time */
framepos_t transport_frame () const {return _transport_frame; }
+ framepos_t record_location () const {return _last_record_location; }
framepos_t audible_frame () const;
framepos_t requested_return_frame() const { return _requested_return_frame; }
void set_requested_return_frame(framepos_t return_to);
void set_silent (bool yn);
bool silent () { return _silent; }
- TempoMap& tempo_map() { return *_tempo_map; }
+ TempoMap& tempo_map() { return *_tempo_map; }
+ const TempoMap& tempo_map() const { return *_tempo_map; }
/* region info */
/* flattening stuff */
- boost::shared_ptr<Region> write_one_track (AudioTrack&, framepos_t start, framepos_t end,
+ boost::shared_ptr<Region> write_one_track (Track&, framepos_t start, framepos_t end,
bool overwrite, std::vector<boost::shared_ptr<Source> >&, InterThreadInfo& wot,
boost::shared_ptr<Processor> endpoint,
bool include_endpoint, bool for_export, bool for_freeze);
friend class AudioEngine;
void set_block_size (pframes_t nframes);
void set_frame_rate (framecnt_t nframes);
+ void reconnect_existing_routes (bool withLock, bool reconnect_master = true, bool reconnect_inputs = true, bool reconnect_outputs = true);
protected:
friend class Route;
framecnt_t _worst_input_latency;
framecnt_t _worst_track_latency;
bool _have_captured;
- float _meter_hold;
- float _meter_falloff;
bool _non_soloed_outs_muted;
uint32_t _listen_cnt;
uint32_t _solo_isolated_cnt;
void reset_rf_scale (framecnt_t frames_moved);
Locations* _locations;
- void locations_changed ();
- void locations_added (Location*);
- void handle_locations_changed (Locations::LocationList&);
+ void location_added (Location*);
+ void location_removed (Location*);
+ void locations_changed ();
+ void _locations_changed (const Locations::LocationList&);
+
+ void update_skips (Location*, bool consolidate);
+ Locations::LocationList consolidate_skips (Location*);
+ void sync_locations_to_skips (const Locations::LocationList&);
+ PBD::ScopedConnectionList skip_connections;
PBD::ScopedConnectionList punch_connections;
void auto_punch_start_changed (Location *);
MidiTimeoutList midi_timeouts;
bool mmc_step_timeout ();
+ void send_immediate_mmc (MIDI::MachineControlCommand);
MIDI::byte mtc_msg[16];
MIDI::byte mtc_timecode_bits; /* encoding of SMTPE type for MTC */
void start_locate (framepos_t, bool with_roll, bool with_flush, bool with_loop=false, bool force=false);
void force_locate (framepos_t frame, bool with_roll = false);
void set_track_speed (Track *, double speed);
- void set_transport_speed (double speed, bool abort = false, bool clear_state = false, bool as_default = false);
+ void set_transport_speed (double speed, framepos_t destination_frame, bool abort = false, bool clear_state = false, bool as_default = false);
void stop_transport (bool abort = false, bool clear_state = false);
void start_transport ();
void realtime_stop (bool abort, bool clear_state);
/** true if timecode transmission by the transport is suspended, otherwise false */
mutable gint _suspend_timecode_transmission;
- void update_locations_after_tempo_map_change (Locations::LocationList &);
+ void update_locations_after_tempo_map_change (const Locations::LocationList &);
void start_time_changed (framepos_t);
void end_time_changed (framepos_t);