virtual ~Session ();
- static int get_info_from_path (const std::string& xmlpath, float& sample_rate, SampleFormat& data_format);
+ static int get_info_from_path (const std::string& xmlpath, float& sample_rate, SampleFormat& data_format, std::string& program_version);
static std::string get_snapshot_from_instant (const std::string& session_dir);
/** a monotonic counter used for naming user-visible things uniquely
);
std::list<boost::shared_ptr<MidiTrack> > new_midi_track (
- const ChanCount& input, const ChanCount& output,
+ const ChanCount& input, const ChanCount& output, bool strict_io,
boost::shared_ptr<PluginInfo> instrument,
Plugin::PresetRecord* pset,
RouteGroup* route_group, uint32_t how_many, std::string name_template,
);
RouteList new_audio_route (int input_channels, int output_channels, RouteGroup* route_group, uint32_t how_many, std::string name_template, PresentationInfo::Flag, PresentationInfo::order_t);
- RouteList new_midi_route (RouteGroup* route_group, uint32_t how_many, std::string name_template, boost::shared_ptr<PluginInfo> instrument, Plugin::PresetRecord*, PresentationInfo::Flag, PresentationInfo::order_t);
+ RouteList new_midi_route (RouteGroup* route_group, uint32_t how_many, std::string name_template, bool strict_io, boost::shared_ptr<PluginInfo> instrument, Plugin::PresetRecord*, PresentationInfo::Flag, PresentationInfo::order_t);
void remove_routes (boost::shared_ptr<RouteList>);
void remove_route (boost::shared_ptr<Route>);
uint32_t registered_lua_function_count () const { return _n_lua_scripts; }
void scripts_changed (); // called from lua, updates _n_lua_scripts
+ PBD::Signal0<void> LuaScriptsChanged;
+
/* flattening stuff */
boost::shared_ptr<Region> write_one_track (Track&, framepos_t start, framepos_t end,
void maybe_update_session_range (framepos_t, framepos_t);
- void request_preroll_record (framepos_t);
- framepos_t preroll_record_in () const { return _preroll_record_in; }
- bool preroll_record_enabled () const { return _preroll_record_in >= 0; }
+ /* preroll */
framecnt_t preroll_samples (framepos_t) const;
+ void request_preroll_record_punch (framepos_t start, framecnt_t preroll);
+ void request_preroll_record_trim (framepos_t start, framecnt_t preroll);
+ void request_count_in_record ();
+
+ framepos_t preroll_record_punch_pos () const { return _preroll_record_punch_pos; }
+ bool preroll_record_punch_enabled () const { return _preroll_record_punch_pos >= 0; }
+
+ framecnt_t preroll_record_trim_len () const { return _preroll_record_trim_len; }
+
/* temporary hacks to allow selection to be pushed from GUI into backend.
Whenever we move the selection object into libardour, these will go away.
*/
*/
static PBD::Signal3<int,Session*,std::string,DataType> MissingFile;
+ void set_missing_file_replacement (const std::string& mfr) {
+ _missing_file_replacement = mfr;
+ }
+
/** Emitted when the session wants Ardour to quit */
static PBD::Signal0<void> Quit;
bool _under_nsm_control;
unsigned int _xrun_count;
+ std::string _missing_file_replacement;
+
void mtc_status_changed (bool);
PBD::ScopedConnection mtc_status_connection;
void ltc_status_changed (bool);
TempoMap *_tempo_map;
void tempo_map_changed (const PBD::PropertyChange&);
- void gui_tempo_map_changed ();
/* edit/mix groups */
Evoral::Range<framepos_t> _range_selection;
Evoral::Range<framepos_t> _object_selection;
- void unset_preroll_record ();
- framepos_t _preroll_record_in;
+ void unset_preroll_record_punch ();
+ void unset_preroll_record_trim ();
+
+ framepos_t _preroll_record_punch_pos;
+ framecnt_t _preroll_record_trim_len;
+ bool _count_in_once;
/* main outs */
uint32_t main_outs;