Merge branch 'cairocanvas' of git.ardour.org:ardour/ardour into cairocanvas
[ardour.git] / libs / ardour / ardour / session.h
index 7295828d2f9b63124e127829f133418d50fab0e4..40ada138a6dac0f8027d0536da423afbba66110a 100644 (file)
@@ -129,6 +129,7 @@ class Route;
 class RouteGroup;
 class SMFSource;
 class Send;
+class SceneChanger;
 class SessionDirectory;
 class SessionMetadata;
 class SessionPlaylists;
@@ -194,8 +195,6 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
 
        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&);
@@ -582,11 +581,12 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        boost::shared_ptr<AudioFileSource> create_audio_source_for_session (
                size_t, std::string const &, uint32_t, bool destructive);
 
-       boost::shared_ptr<MidiSource> create_midi_source_for_session (
-               Track*, std::string const &);
+       boost::shared_ptr<MidiSource> create_midi_source_for_session (std::string const &);
+       boost::shared_ptr<MidiSource> create_midi_source_by_stealing_name (boost::shared_ptr<Track>);
 
        boost::shared_ptr<Source> source_by_id (const PBD::ID&);
-       boost::shared_ptr<Source> source_by_path_and_channel (const std::string&, uint16_t);
+       boost::shared_ptr<AudioFileSource> source_by_path_and_channel (const std::string&, uint16_t) const;
+       boost::shared_ptr<MidiSource> source_by_path (const std::string&) const;
        uint32_t count_sources_by_origin (const std::string&);
 
        void add_playlist (boost::shared_ptr<Playlist>, bool unused = false);
@@ -756,6 +756,10 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
 
        /* 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,
@@ -865,23 +869,31 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
         */
         static PBD::Signal2<void,std::string,std::string> VersionMismatch;
 
+       SceneChanger* scene_changer() const { return _scene_changer; }
+
         boost::shared_ptr<Port> ltc_input_port() const;
         boost::shared_ptr<Port> ltc_output_port() const;
 
        boost::shared_ptr<IO> ltc_input_io() { return _ltc_input; }
        boost::shared_ptr<IO> 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;
+       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<MidiPort> midi_clock_output_port () const;
-    boost::shared_ptr<MidiPort> midi_clock_input_port () const;
-    boost::shared_ptr<MidiPort> mtc_output_port () const;
-    boost::shared_ptr<MidiPort> mtc_input_port () const;
+       MIDI::Port* scene_input_port () const;
+       MIDI::Port* scene_output_port () const;
 
-    MIDI::MachineControl& mmc() { return *_mmc; }
+       boost::shared_ptr<MidiPort> scene_in () const;
+       boost::shared_ptr<MidiPort> scene_out () const;
+       
+       boost::shared_ptr<MidiPort> midi_clock_output_port () const;
+       boost::shared_ptr<MidiPort> midi_clock_input_port () const;
+       boost::shared_ptr<MidiPort> mtc_output_port () const;
+       boost::shared_ptr<MidiPort> mtc_input_port () const;
+    
+       MIDI::MachineControl& mmc() { return *_mmc; }
 
   protected:
        friend class AudioEngine;
@@ -1259,7 +1271,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
 
        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 ();
@@ -1356,9 +1368,6 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
   private:
        SourceMap sources;
 
-  public:
-       SourceMap get_sources() { return sources; }
-
   private:
        int load_sources (const XMLNode& node);
        XMLNode& get_sources_as_xml ();
@@ -1607,16 +1616,19 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
         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