Add support for VST effSetBypass #7266
[ardour.git] / libs / ardour / ardour / session.h
index b62229a03c841962cba692a3c8a71aad76102186..8ce31630f05af87d5b8d571d0f2543725d102801 100644 (file)
@@ -199,7 +199,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
 
        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
@@ -655,7 +655,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
                );
 
        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,
@@ -664,7 +664,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
                );
 
        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>);
@@ -823,6 +823,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        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,
@@ -998,6 +1000,18 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
 
        void maybe_update_session_range (framepos_t, framepos_t);
 
+       /* 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.
         */
@@ -1131,6 +1145,10 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        */
        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;
 
@@ -1246,6 +1264,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        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);
@@ -1694,7 +1714,6 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
 
        TempoMap    *_tempo_map;
        void          tempo_map_changed (const PBD::PropertyChange&);
-       void          gui_tempo_map_changed ();
 
        /* edit/mix groups */
 
@@ -1898,6 +1917,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        void   click (framepos_t start, framecnt_t nframes);
        void   run_click (framepos_t start, framecnt_t nframes);
        void   add_click (framepos_t pos, bool emphasis);
+       framecnt_t _count_in_samples;
 
        std::vector<Route*> master_outs;
 
@@ -1914,6 +1934,13 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        Evoral::Range<framepos_t> _range_selection;
        Evoral::Range<framepos_t> _object_selection;
 
+       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;