diff --git a/libs/ardour/ardour/srcfilesource.h b/libs/ardour/ardour/srcfilesource.h index 9df4327656..dbf6ab1be7 100644 --- a/libs/ardour/ardour/srcfilesource.h +++ b/libs/ardour/ardour/srcfilesource.h @@ -42,7 +42,7 @@ public: float sample_rate () const { return _session.nominal_sample_rate(); } - timepos_t natural_position() const { return _source->natural_position() * _ratio;} + timepos_t natural_position() const { return _source->natural_position().scale (_ratio); } samplecnt_t readable_length_samples() const { assert (_source->length().time_domain() == Temporal::AudioTime); return _source->length().samples () * _ratio; } timepos_t length () const { assert (_source->length().time_domain() == Temporal::AudioTime); return timepos_t ((samplepos_t) (_source->length().samples () * _ratio)); } diff --git a/libs/ardour/lua_api.cc b/libs/ardour/lua_api.cc index 4c54124a18..e8af47d75e 100644 --- a/libs/ardour/lua_api.cc +++ b/libs/ardour/lua_api.cc @@ -1245,7 +1245,7 @@ LuaAPI::Rubberband::finalize () ar->set_ancestral_data (timepos_t (_read_start), timecnt_t (_read_len), _stretch_ratio, _pitch_ratio); ar->set_master_sources (_region->master_sources ()); ar->set_position (timepos_t (_region->position_sample ())); - ar->set_length (ar->length () * _stretch_ratio); // XXX + ar->set_length (ar->length ().scale (_stretch_ratio)); // XXX if (_stretch_ratio != 1.0) { // TODO: apply mapping ar->envelope ()->x_scale (_stretch_ratio); diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc index 2a9ef58378..90ba0109e1 100644 --- a/libs/ardour/luabindings.cc +++ b/libs/ardour/luabindings.cc @@ -587,8 +587,6 @@ LuaBindings::common (lua_State* L) .addConstructor () .addOperator ("__add", CPPOPERATOR(Temporal::timepos_t, +)) //.addOperator ("__mod", CPPOPERATOR2(Temporal::timepos_t, Temporal::timepos_t, Temporal::timecnt_t, %)) - .addOperator ("__mul", CPPOPERATOR2(Temporal::timepos_t, Temporal::timepos_t, Temporal::ratio_t , *)) - .addOperator ("__div", CPPOPERATOR2(Temporal::timepos_t, Temporal::timepos_t, Temporal::ratio_t , /)) .addOperator ("__lt", CPPCOMPERATOR(Temporal::timepos_t, <)) .addOperator ("__le", CPPCOMPERATOR(Temporal::timepos_t, <=)) .addOperator ("__eq", CPPCOMPERATOR(Temporal::timepos_t, ==)) @@ -605,6 +603,7 @@ LuaBindings::common (lua_State* L) .addFunction ("ticks", &Temporal::timepos_t::ticks) .addFunction ("beats", &Temporal::timepos_t::beats) .addFunction ("str", &Temporal::timepos_t::str) + .addFunction ("scale", &Temporal::timepos_t::scale) .addMetamethod ("__tostring", &Temporal::timepos_t::str) .endClass () @@ -613,8 +612,6 @@ LuaBindings::common (lua_State* L) .addOperator ("__add", CPPOPERATOR(Temporal::timecnt_t, +)) .addOperator ("__sub", CPPOPERATOR(Temporal::timecnt_t, -)) .addOperator ("__mod", CPPOPERATOR(Temporal::timecnt_t, %)) - .addOperator ("__mul", CPPOPERATOR2(Temporal::timecnt_t, Temporal::timecnt_t, Temporal::ratio_t , *)) - .addOperator ("__div", CPPOPERATOR2(Temporal::timecnt_t, Temporal::timecnt_t, Temporal::ratio_t , /)) .addOperator ("__lt", CPPCOMPERATOR(Temporal::timecnt_t, <)) .addOperator ("__le", CPPCOMPERATOR(Temporal::timecnt_t, <=)) .addOperator ("__eq", CPPCOMPERATOR(Temporal::timecnt_t, ==)) @@ -639,6 +636,7 @@ LuaBindings::common (lua_State* L) .addFunction ("beats", &Temporal::timecnt_t::beats) .addFunction ("ticks", &Temporal::timecnt_t::ticks) .addFunction ("str", &Temporal::timecnt_t::str) + .addFunction ("scale", &Temporal::timecnt_t::scale) .addMetamethod ("__tostring", &Temporal::timecnt_t::str) .endClass () diff --git a/libs/ardour/midi_stretch.cc b/libs/ardour/midi_stretch.cc index aa6bc18bf5..fb4ae9f11a 100644 --- a/libs/ardour/midi_stretch.cc +++ b/libs/ardour/midi_stretch.cc @@ -121,7 +121,7 @@ MidiStretch::run (boost::shared_ptr r, Progress*) /* set length of new region to precisely match source length */ - results[0]->set_length (region->length() * _request.time_fraction); + results[0]->set_length (region->length().scale (_request.time_fraction)); return ret; } diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 15ae115bcd..692ba17fe9 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -717,7 +717,7 @@ Playlist::add_region (boost::shared_ptr region, timepos_t const & positi timecnt_t length; if (floor (times) != times) { - length = region->length() * (times - floor (times)); + length = region->length().scale (times - floor (times)); string name; RegionFactory::region_name (name, region->name (), false); @@ -1308,7 +1308,7 @@ Playlist::duplicate (boost::shared_ptr region, timepos_t & position, tim } if (floor (times) != times) { - timecnt_t length = region->length() * (times - floor (times)); + timecnt_t length = region->length().scale (times - floor (times)); string name; RegionFactory::region_name (name, region->name(), false); @@ -1389,7 +1389,7 @@ Playlist::duplicate_ranges (std::list& ranges, float times) while (itimes--) { for (list::iterator i = ranges.begin (); i != ranges.end (); ++i) { boost::shared_ptr pl = copy ((*i).start(), (*i).length (), true); - paste (pl, (*i).start() + (offset * count), 1.0f); + paste (pl, (*i).start() + (offset.scale (count)), 1.0f); } ++count; } diff --git a/libs/evoral/ControlList.cc b/libs/evoral/ControlList.cc index c8246ecc51..9fd72421a9 100644 --- a/libs/evoral/ControlList.cc +++ b/libs/evoral/ControlList.cc @@ -360,7 +360,7 @@ void ControlList::_x_scale (ratio_t const & factor) { for (iterator i = _events.begin(); i != _events.end(); ++i) { - (*i)->when = (*i)->when.operator* (factor); + (*i)->when = (*i)->when.scale (factor); } mark_dirty ();