MCPcopy Create free account
hub / github.com/DamRsn/NeuralNote / _quantizeTime

Method _quantizeTime

NeuralNote/Source/TimeQuantizeOptions.cpp:205–234  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

203}
204
205double TimeQuantizeOptions::_quantizeTime(
206 double inEventTime, double inBPM, double inTimeDivision, double inStartTimeQN, float inQuantizationForce)
207{
208 jassert(inEventTime >= 0.0);
209 const double seconds_per_qn = 60.0 / inBPM;
210
211 const double division_duration = inTimeDivision * 4.0 * seconds_per_qn;
212
213 // Set previous bar start of recording start as new time origin.
214 double new_time_origin = inStartTimeQN * seconds_per_qn;
215 double shifted_time = inEventTime + new_time_origin;
216
217 double time_since_previous_division = std::fmod(shifted_time, division_duration);
218
219 // Get the time of the first division tick before the note start
220 double previous_division_time = shifted_time - time_since_previous_division;
221
222 double target_time = time_since_previous_division < division_duration / 2.0
223 ? previous_division_time
224 : previous_division_time + division_duration;
225
226 jassert(shifted_time >= previous_division_time && shifted_time < previous_division_time + division_duration);
227
228 double quantized_shifted_time = jmap(static_cast<double>(inQuantizationForce), shifted_time, target_time);
229
230 // Re-shift
231 double quantized_time = quantized_shifted_time - new_time_origin;
232
233 return quantized_time;
234}
235
236void TimeQuantizeOptions::valueTreePropertyChanged(ValueTree& treeWhosePropertyHasChanged, const Identifier& property)
237{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected