Fix value ramps to reach specified upper value.
authorDavid Robillard <d@drobilla.net>
Thu, 8 Jan 2015 23:47:08 +0000 (18:47 -0500)
committerDavid Robillard <d@drobilla.net>
Thu, 8 Jan 2015 23:47:08 +0000 (18:47 -0500)
gtk2_ardour/transform_dialog.cc

index f31ac420014e70c366911d82f503006083f892f5..ac481ecfacb32dab46826a66a8260c7bf6691da9 100644 (file)
@@ -242,7 +242,7 @@ TransformDialog::ValueChooser::get(std::list<Operation>& ops)
                const double max   = std::max(a, b);
                const double range = max - min;
 
-               // "rand range * min +" (i.e. (rand * range) + min)
+               // "rand range * min +" ((rand * range) + min)
                ops.push_back(Operation(Operation::PUSH, Value(Value::RANDOM)));
                ops.push_back(Operation(Operation::PUSH, Value(range)));
                ops.push_back(Operation(Operation::MULT));
@@ -257,11 +257,13 @@ TransformDialog::ValueChooser::get(std::list<Operation>& ops)
                const double last  = max_spinner.get_value();
                const double rise  = last - first;
 
-               // "index rise * n_notes / first +" (i.e. index * rise / n_notes + first)
+               // "index rise * n_notes 1 - / first +" (index * rise / (n_notes - 1) + first)
                ops.push_back(Operation(Operation::PUSH, Value(Value::INDEX)));
                ops.push_back(Operation(Operation::PUSH, Value(rise)));
                ops.push_back(Operation(Operation::MULT));
                ops.push_back(Operation(Operation::PUSH, Value(Value::N_NOTES)));
+               ops.push_back(Operation(Operation::PUSH, Value(1)));
+               ops.push_back(Operation(Operation::SUB));
                ops.push_back(Operation(Operation::DIV));
                ops.push_back(Operation(Operation::PUSH, Value(first)));
                ops.push_back(Operation(Operation::ADD));