there is no curve for identical note_types_per_minute values.
authornick_m <mainsbridge@gmail.com>
Sun, 18 Dec 2016 16:23:33 +0000 (03:23 +1100)
committernick_m <mainsbridge@gmail.com>
Sun, 18 Dec 2016 16:23:33 +0000 (03:23 +1100)
libs/ardour/tempo.cc

index 9f724a3dca2db46cd75596ba5897a5172dc3019d..f5b75eb5ee80566082daa2bb1313cc263c0e5a2e 100644 (file)
@@ -426,6 +426,10 @@ https://www.zhdk.ch/fileadmin/data_subsites/data_icst/Downloads/Timegrid/ICST_Te
 double
 TempoSection::compute_c_func_pulse (const double& end_npm, const double& end_pulse) const
 {
+       if (note_types_per_minute() == end_npm) {
+               return 0.0;
+       }
+
        double const log_tempo_ratio = log (end_npm / note_types_per_minute());
        return (note_types_per_minute() * expm1 (log_tempo_ratio)) / ((end_pulse - pulse()) * _note_type);
 }
@@ -438,6 +442,10 @@ TempoSection::compute_c_func_pulse (const double& end_npm, const double& end_pul
 double
 TempoSection::compute_c_func_minute (const double& end_npm, const double& end_minute) const
 {
+       if (note_types_per_minute() == end_npm) {
+               return 0.0;
+       }
+
        return c_func (end_npm, end_minute - minute());
 }