Adding sends/port inserts to MIDI tracks (not actually working yet though)
authorDavid Robillard <d@drobilla.net>
Thu, 31 Aug 2006 06:59:14 +0000 (06:59 +0000)
committerDavid Robillard <d@drobilla.net>
Thu, 31 Aug 2006 06:59:14 +0000 (06:59 +0000)
git-svn-id: svn://localhost/ardour2/branches/midi@877 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/redirect_box.cc
libs/ardour/ardour/io.h
libs/ardour/io.cc
libs/ardour/meter.cc
libs/ardour/redirect.cc
libs/ardour/route.cc

index 2f612bd5531babb5fc0c3fc9656ef4789aa40173..642e863ddbbd38eea5c85c401242e79b77afc800 100644 (file)
@@ -448,6 +448,7 @@ void
 RedirectBox::choose_send ()
 {
        boost::shared_ptr<Send> send (new Send (_session, _placement));
+       send->set_default_type(_route->default_type());
 
        /* XXX need redirect lock on route */
 
index 670718bb4ead64e26c0118367166425417f6b328..ef0ab6c4657477502691afb33e331aca498d8969 100644 (file)
@@ -94,7 +94,8 @@ class IO : public PBD::StatefulDestructible, public ARDOUR::StateManager
        void set_output_minimum (int n);
        void set_output_maximum (int n);
 
-       DataType default_type() const { return _default_type; }
+       DataType default_type() const         { return _default_type; }
+       void     set_default_type(DataType t) { _default_type = t; }
 
        const string& name() const { return _name; }
        virtual int set_name (string str, void *src);
index a555793d80f0f478e05a321df7f74233a195ccd8..00c0f4e168ebc1580ab5fb8dc9ec8c131866dd92 100644 (file)
@@ -106,14 +106,27 @@ IO::IO (Session& s, string name,
          _default_type(default_type),
          _gain_control (*this),
          _gain_automation_curve (0.0, 2.0, 1.0),
-         _input_minimum (_default_type, input_min),
-         _input_maximum (_default_type, input_max),
-         _output_minimum (_default_type, output_min),
-         _output_maximum (_default_type, output_max)
+         _input_minimum (ChanCount::ZERO),
+         _input_maximum (ChanCount::INFINITE),
+         _output_minimum (ChanCount::ZERO),
+         _output_maximum (ChanCount::INFINITE)
 {
        _panner = new Panner (name, _session);
        _meter = new PeakMeter (_session);
 
+       if (input_min > 0) {
+               _input_minimum = ChanCount(_default_type, input_min);
+       }
+       if (input_max >= 0) {
+               _input_maximum = ChanCount(_default_type, input_max);
+       }
+       if (output_min > 0) {
+               _output_minimum = ChanCount(_default_type, output_min);
+       }
+       if (output_max >= 0) {
+               _output_maximum = ChanCount(_default_type, output_max);
+       }
+
        _gain = 1.0;
        _desired_gain = 1.0;
        _input_connection = 0;
index c574ff0bdb7482dbb4a2eefb7e67728156506344..c685b03943e4026233058bd52553ca88ec37e48b 100644 (file)
@@ -61,6 +61,11 @@ PeakMeter::setup (const ChanCount& in)
 {
        uint32_t limit = in.get(DataType::AUDIO);
 
+       while (_peak_power.size() > limit) {
+               _peak_power.pop_back();
+               _visible_peak_power.pop_back();
+       }
+
        while (_peak_power.size() < limit) {
                _peak_power.push_back (0);
                _visible_peak_power.push_back (0);
index 1ab2f91cf0a8cbdd1e1435ece13fab8017ad6a57..05c07accb7a01880bc5a9339bae72d0df8074fdb 100644 (file)
@@ -45,8 +45,8 @@ const string Redirect::state_node_name = "Redirect";
 sigc::signal<void,Redirect*> Redirect::RedirectCreated;
 
 Redirect::Redirect (Session& s, const string& name, Placement p,
-
-                   int input_min, int input_max, int output_min, int output_max)
+                    int input_min, int input_max,
+                    int output_min, int output_max)
        : IO (s, name, input_min, input_max, output_min, output_max)
 {
        _placement = p;
index 1dbaebcb910ae37740ff9490ec3452846dcb0555..e0b890340ac2e6d36ccdaad7cfb8325a5fb9f662 100644 (file)
@@ -759,6 +759,8 @@ Route::add_redirect (boost::shared_ptr<Redirect> redirect, void *src, uint32_t*
                boost::shared_ptr<PluginInsert> pi;
                boost::shared_ptr<PortInsert> porti;
 
+               redirect->set_default_type(_default_type);
+
                ChanCount potential_max_streams;
 
                if ((pi = boost::dynamic_pointer_cast<PluginInsert>(redirect)) != 0) {