| 117 | } |
| 118 | |
| 119 | std::vector<Notes::Event> TimeQuantizeOptions::quantize(const std::vector<Notes::Event>& inNoteEvents) const |
| 120 | { |
| 121 | if (!mParameters.enable) { |
| 122 | return inNoteEvents; |
| 123 | } |
| 124 | |
| 125 | std::vector<Notes::Event> out_events; |
| 126 | |
| 127 | const double bpm = mTimeQuantizeInfo.bpm; |
| 128 | // Offset from previous bar start |
| 129 | const double start_pos_qn = mTimeQuantizeInfo.getStartQn() - mTimeQuantizeInfo.getStartLastBarQn(); |
| 130 | |
| 131 | const double time_division = TimeQuantizeUtils::TimeDivisionsDouble.at(static_cast<size_t>(mParameters.division)); |
| 132 | |
| 133 | for (const auto& event: inNoteEvents) { |
| 134 | double duration = event.endTime - event.startTime; |
| 135 | jassert(duration > 0); |
| 136 | double new_start_time = |
| 137 | _quantizeTime(event.startTime, bpm, time_division, start_pos_qn, mParameters.quantizationForce); |
| 138 | double new_end_time = new_start_time + duration; |
| 139 | |
| 140 | Notes::Event quantized_event = event; |
| 141 | quantized_event.startTime = new_start_time; |
| 142 | quantized_event.endTime = new_end_time; |
| 143 | out_events.push_back(quantized_event); |
| 144 | } |
| 145 | |
| 146 | return out_events; |
| 147 | } |
| 148 | |
| 149 | void TimeQuantizeOptions::clear() |
| 150 | { |
no test coverage detected