X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fsession.h;h=40ada138a6dac0f8027d0536da423afbba66110a;hb=152935e736eaf06f85bc7f5cb27337a62d95edd4;hp=937ae4fb2ef6a3ab028368124d88e1bb89677b80;hpb=82f0f3a9a76097402afae8be1c9a65d526ad8cf2;p=ardour.git diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 937ae4fb2e..40ada138a6 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -36,6 +36,8 @@ #include +#include + #include "pbd/error.h" #include "pbd/event_loop.h" #include "pbd/rcu.h" @@ -48,7 +50,6 @@ #include "midi++/types.h" #include "timecode/time.h" -#include "ltc/ltc.h" #include "ardour/ardour.h" #include "ardour/chan_count.h" @@ -128,6 +129,7 @@ class Route; class RouteGroup; class SMFSource; class Send; +class SceneChanger; class SessionDirectory; class SessionMetadata; class SessionPlaylists; @@ -140,7 +142,7 @@ class WindowsVSTPlugin; extern void setup_enum_writer (); -class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionList, public SessionEventManager +class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionList, public SessionEventManager { public: enum RecordState { @@ -193,8 +195,6 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi std::string peak_path (std::string) const; - std::string change_source_path_by_name (std::string oldpath, std::string oldname, std::string newname, bool destructive); - std::string peak_path_from_audio_path (std::string) const; std::string new_audio_source_name (const std::string&, uint32_t nchans, uint32_t chan, bool destructive); std::string new_midi_source_name (const std::string&); @@ -237,12 +237,13 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi return _bundles.reader (); } - struct RoutePublicOrderSorter { + struct LIBARDOUR_API RoutePublicOrderSorter { bool operator() (boost::shared_ptr, boost::shared_ptr b); }; + void set_order_hint (uint32_t order_hint) {_order_hint = order_hint;}; void notify_remote_id_change (); - void sync_order_keys (RouteSortOrderKey); + void sync_order_keys (); template void foreach_route (T *obj, void (T::*func)(Route&)); template void foreach_route (T *obj, void (T::*func)(boost::shared_ptr)); @@ -502,7 +503,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void timecode_time_subframes (framepos_t when, Timecode::Time&); void timecode_duration (framecnt_t, Timecode::Time&) const; - void timecode_duration_string (char *, framecnt_t) const; + void timecode_duration_string (char *, size_t len, framecnt_t) const; framecnt_t convert_to_frames (AnyTime const & position); framecnt_t any_duration_to_frames (framepos_t position, AnyTime const & duration); @@ -580,11 +581,12 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi boost::shared_ptr create_audio_source_for_session ( size_t, std::string const &, uint32_t, bool destructive); - boost::shared_ptr create_midi_source_for_session ( - Track*, std::string const &); + boost::shared_ptr create_midi_source_for_session (std::string const &); + boost::shared_ptr create_midi_source_by_stealing_name (boost::shared_ptr); boost::shared_ptr source_by_id (const PBD::ID&); - boost::shared_ptr source_by_path_and_channel (const std::string&, uint16_t); + boost::shared_ptr source_by_path_and_channel (const std::string&, uint16_t) const; + boost::shared_ptr source_by_path (const std::string&) const; uint32_t count_sources_by_origin (const std::string&); void add_playlist (boost::shared_ptr, bool unused = false); @@ -754,6 +756,10 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi /* VST support */ + static int vst_current_loading_id; + static const char* vst_can_do_strings[]; + static const int vst_can_do_string_count; + static intptr_t vst_callback ( AEffect* effect, int32_t opcode, @@ -828,7 +834,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void request_resume_timecode_transmission (); bool timecode_transmission_suspended () const; - std::string source_search_path(DataType) const; + std::vector source_search_path(DataType) const; void ensure_search_path_includes (const std::string& path, DataType type); std::list unknown_processors () const; @@ -863,32 +869,31 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi */ static PBD::Signal2 VersionMismatch; + SceneChanger* scene_changer() const { return _scene_changer; } + boost::shared_ptr ltc_input_port() const; boost::shared_ptr ltc_output_port() const; boost::shared_ptr ltc_input_io() { return _ltc_input; } boost::shared_ptr ltc_output_io() { return _ltc_output; } - MIDI::Port* midi_input_port () const; - MIDI::Port* midi_output_port () const; - MIDI::Port* mmc_output_port () const; - MIDI::Port* mmc_input_port () const; - - boost::shared_ptr midi_clock_output_port () const; - boost::shared_ptr midi_clock_input_port () const; - boost::shared_ptr mtc_output_port () const; - boost::shared_ptr mtc_input_port () const; - - MIDI::MachineControl& mmc() { return *_mmc; } + MIDI::Port* midi_input_port () const; + MIDI::Port* midi_output_port () const; + MIDI::Port* mmc_output_port () const; + MIDI::Port* mmc_input_port () const; - /* Callbacks specifically related to JACK, and called directly - * from the JACK audio backend. - */ + MIDI::Port* scene_input_port () const; + MIDI::Port* scene_output_port () const; -#ifdef HAVE_JACK_SESSION - void jack_session_event (jack_session_event_t* event); -#endif - void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); + boost::shared_ptr scene_in () const; + boost::shared_ptr scene_out () const; + + boost::shared_ptr midi_clock_output_port () const; + boost::shared_ptr midi_clock_input_port () const; + boost::shared_ptr mtc_output_port () const; + boost::shared_ptr mtc_input_port () const; + + MIDI::MachineControl& mmc() { return *_mmc; } protected: friend class AudioEngine; @@ -1266,7 +1271,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi int start_midi_thread (); - void set_play_loop (bool yn); + void set_play_loop (bool yn, double speed); void unset_play_loop (); void overwrite_some_buffers (Track *); void flush_all_inserts (); @@ -1363,9 +1368,6 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi private: SourceMap sources; - public: - SourceMap get_sources() { return sources; } - private: int load_sources (const XMLNode& node); XMLNode& get_sources_as_xml (); @@ -1603,6 +1605,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi GraphEdges _current_route_graph; uint32_t next_control_id () const; + uint32_t _order_hint; bool ignore_route_processor_changes; MidiClockTicker* midi_clock; @@ -1613,16 +1616,19 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void reconnect_ltc_input (); void reconnect_ltc_output (); - /* persistent, non-track related MIDI ports */ - MidiPortManager* _midi_ports; - MIDI::MachineControl* _mmc; - - void setup_ltc (); - void setup_click (); - void setup_click_state (const XMLNode&); - void setup_bundles (); - - static int get_session_info_from_path (XMLTree& state_tree, const std::string& xmlpath); + /* Scene Changing */ + SceneChanger* _scene_changer; + + /* persistent, non-track related MIDI ports */ + MidiPortManager* _midi_ports; + MIDI::MachineControl* _mmc; + + void setup_ltc (); + void setup_click (); + void setup_click_state (const XMLNode*); + void setup_bundles (); + + static int get_session_info_from_path (XMLTree& state_tree, const std::string& xmlpath); }; } // namespace ARDOUR