add initial midi sidechain if plugin has one.
[ardour.git] / libs / ardour / ardour / session.h
index f35e3b6f193769668923a41b388604a8fd8c07fd..db80ddcae3543982d17e6eba3d2ef12c980c17d3 100644 (file)
@@ -459,6 +459,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        void set_auto_punch_location (Location *);
        void set_auto_loop_location (Location *);
        void set_session_extents (framepos_t start, framepos_t end);
+       void set_end_is_free (bool);
        int location_name(std::string& result, std::string base = std::string(""));
 
        pframes_t get_block_size()        const { return current_block_size; }
@@ -675,8 +676,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        bool   synced_to_ltc () const { return config.get_external_sync() && Config->get_sync_source() == LTC && g_atomic_int_get (const_cast<gint*>(&_ltc_active)); }
 
        double transport_speed() const { return _transport_speed; }
-       bool   transport_stopped() const { return _transport_speed == 0.0f; }
-       bool   transport_rolling() const { return _transport_speed != 0.0f; }
+       bool   transport_stopped() const { return _transport_speed == 0.0; }
+       bool   transport_rolling() const { return _transport_speed != 0.0; }
 
        bool silent () { return _silent; }
 
@@ -703,7 +704,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        boost::shared_ptr<ExportHandler> get_export_handler ();
        boost::shared_ptr<ExportStatus> get_export_status ();
 
-       int start_audio_export (framepos_t position);
+       int start_audio_export (framepos_t position, bool realtime = false);
 
        PBD::Signal1<int, framecnt_t> ProcessExport;
        static PBD::Signal2<void,std::string, std::string> Exported;
@@ -790,6 +791,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        bool soloing() const { return _non_soloed_outs_muted; }
        bool listening() const { return _listen_cnt > 0; }
        bool solo_isolated() const { return _solo_isolated_cnt > 0; }
+       void cancel_all_solo ();
 
        static const SessionEvent::RTeventCallback rt_cleanup;
 
@@ -1175,6 +1177,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        mutable gint            _record_status;
        framepos_t              _transport_frame;
        Location*               _session_range_location; ///< session range, or 0 if there is nothing in the session yet
+       bool                    _session_range_end_is_free;
        Slave*                  _slave;
        bool                    _silent;
 
@@ -1227,8 +1230,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        void process_without_events (pframes_t);
        void process_with_events    (pframes_t);
        void process_audition       (pframes_t);
-       int  process_export         (pframes_t);
-       int  process_export_fw      (pframes_t);
+       void process_export         (pframes_t);
+       void process_export_fw      (pframes_t);
 
        void block_processing() { g_atomic_int_set (&processing_prohibited, 1); }
        void unblock_processing() { g_atomic_int_set (&processing_prohibited, 0); }
@@ -1265,7 +1268,9 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
 
        bool _exporting;
        bool _export_rolling;
+       bool _realtime_export;
        framepos_t _export_preroll;
+       framepos_t _export_latency;
 
        boost::shared_ptr<ExportHandler> export_handler;
        boost::shared_ptr<ExportStatus>  export_status;
@@ -1509,8 +1514,10 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        typedef std::queue<AutoConnectRequest> AutoConnectQueue;
        Glib::Threads::Mutex  _auto_connect_queue_lock;
        AutoConnectQueue _auto_connect_queue;
+       guint _latency_recompute_pending;
 
        void auto_connect (const AutoConnectRequest&);
+       void queue_latency_recompute ();
 
        /* SessionEventManager interface */
 
@@ -1977,7 +1984,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        */
        GraphEdges _current_route_graph;
 
-       void ensure_presentation_info_gap (PresentationInfo::order_t, uint32_t gap_size);
+       void ensure_route_presentation_info_gap (PresentationInfo::order_t, uint32_t gap_size);
        bool ignore_route_processor_changes;
 
        MidiClockTicker* midi_clock;
@@ -2007,6 +2014,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        VCAManager* _vca_manager;
 
        boost::shared_ptr<Route> get_midi_nth_route_by_id (PresentationInfo::order_t n) const;
+
+       std::string created_with;
 };