logic to copy audio region fade in/fade out into compound regions (one-way for now)
[ardour.git] / libs / ardour / ardour / panner.h
index b989dca41d5f030f714bec7966ce57fbeddf661b..f7e533cd6a18a0bd8c20b09dc31628ce880b3428 100644 (file)
@@ -48,6 +48,8 @@ class Panner : public PBD::Stateful, public PBD::ScopedConnectionList
        Panner (boost::shared_ptr<Pannable>);
        ~Panner ();
 
+        virtual boost::shared_ptr<Speakers> get_speakers() const { return boost::shared_ptr<Speakers>(); }
+
         virtual ChanCount in() const = 0;
         virtual ChanCount out() const = 0;
 
@@ -78,14 +80,13 @@ class Panner : public PBD::Stateful, public PBD::ScopedConnectionList
         virtual double width () const { return 0.0; }
         virtual double elevation () const { return 0.0; }
 
-        virtual void reset() {}
+        virtual PBD::AngularVector signal_position (uint32_t) const { return PBD::AngularVector(); }
 
+        virtual void reset() {}
+        
        virtual bool bypassed() const { return _bypassed; }
        virtual void set_bypassed (bool yn);
 
-       virtual bool is_mono () const { return _mono; }
-       virtual void set_mono (bool);
-
        void      set_automation_state (AutoState);
        AutoState automation_state() const;
        void      set_automation_style (AutoStyle);
@@ -128,8 +129,7 @@ class Panner : public PBD::Stateful, public PBD::ScopedConnectionList
         *  @param nframes Number of frames in the input.
          *
          *  Derived panners can choose to implement these if they need to gain more control over the panning algorithm.
-         *  the default is to (1) check if _mono is true, and if so, just deliver .. (2) otherwise, call
-         *  distribute_one() or distribute_one_automated() on each input buffer to deliver it to each output 
+         *  the default is to call distribute_one() or distribute_one_automated() on each input buffer to deliver it to each output 
          *  buffer.
          * 
          *  If a panner does not need to override this default behaviour, it can just implement
@@ -140,8 +140,7 @@ class Panner : public PBD::Stateful, public PBD::ScopedConnectionList
                                            framepos_t start, framepos_t end, pframes_t nframes,
                                            pan_t** buffers);
 
-       PBD::Signal0<void> Changed;      /* for positional info */
-       PBD::Signal0<void> StateChanged; /* for mute, mono */
+       PBD::Signal0<void> StateChanged;
 
        int set_state (const XMLNode&, int version);
        virtual XMLNode& state (bool full_state) = 0;
@@ -162,12 +161,10 @@ class Panner : public PBD::Stateful, public PBD::ScopedConnectionList
 
   protected:
         boost::shared_ptr<Pannable> _pannable;
-        bool        _mono;
         bool        _bypassed;
 
        XMLNode& get_state ();
 
-
        virtual void distribute_one (AudioBuffer&, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which) = 0;
        virtual void distribute_one_automated (AudioBuffer&, BufferSet& obufs,
                                                framepos_t start, framepos_t end, pframes_t nframes,
@@ -181,7 +178,7 @@ extern "C" {
             std::string name;
             int32_t in;
             int32_t out;
-            ARDOUR::Panner* (*factory)(boost::shared_ptr<ARDOUR::Pannable>, ARDOUR::Speakers&);
+            ARDOUR::Panner* (*factory)(boost::shared_ptr<ARDOUR::Pannable>, boost::shared_ptr<ARDOUR::Speakers>);
         };
 }