38 Quantize::Quantize (
bool snap_start,
bool snap_end,
39 double start_grid,
double end_grid,
40 float strength,
float swing,
float threshold)
41 : _snap_start (snap_start)
42 , _snap_end (snap_end)
43 , _start_grid(start_grid)
45 , _strength (strength/100.0)
46 , _swing (swing/100.0)
47 , _threshold (threshold)
67 const double offset = round_pos - position.
to_double();
82 double new_end = round (((*i)->end_time().to_double() - offset) /
_end_grid) *
_end_grid + offset;
84 if (
_swing > 0.0 && !even) {
92 new_start = new_start + (2.0/3.0 *
_swing * (next_grid - new_start));
93 new_end = new_end + (2.0/3.0 *
_swing * (next_grid - new_start));
95 }
else if (
_swing < 0.0 && !even) {
103 new_start = new_start - (2.0/3.0 *
_swing * (new_start - prev_grid));
104 new_end = new_end - (2.0/3.0 *
_swing * (new_start - prev_grid));
108 double delta = new_start - (*i)->time().to_double();
114 (*i)->time() + delta);
119 delta = new_end - (*i)->end_time().to_double();
std::multiset< NotePtr, EarlierNoteComparator > Notes
Command * operator()(boost::shared_ptr< ARDOUR::MidiModel >, Evoral::Beats position, std::vector< Evoral::Sequence< Evoral::Beats >::Notes > &)
void change(const NotePtr note, Property prop, uint8_t new_value)
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > position
const_iterator begin(Time t=Time(), bool force_discrete=false, const std::set< Evoral::Parameter > &f=std::set< Evoral::Parameter >(), const std::set< WeakNotePtr > *active_notes=NULL) const
LIBEVORAL_API uint64_t Beats