summaryrefslogtreecommitdiff
path: root/libs/ardour/tempo.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-11-04 01:31:15 +1100
committernick_m <mainsbridge@gmail.com>2016-11-11 03:37:08 +1100
commit9674b1535841a5790805e48921908e37889cbde0 (patch)
treece87f8b548fc535c9c9319e35c9455dff5fb0197 /libs/ardour/tempo.cc
parent1fa7c0d829d673e6a1ffbb94bade9b0d60a02b44 (diff)
more documentation in tempo.cc, fix constant bug in pulse_at_tempo_locked()
Diffstat (limited to 'libs/ardour/tempo.cc')
-rw-r--r--libs/ardour/tempo.cc47
1 files changed, 24 insertions, 23 deletions
diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc
index 344fd73e7c..07c008ab7c 100644
--- a/libs/ardour/tempo.cc
+++ b/libs/ardour/tempo.cc
@@ -254,7 +254,7 @@ TempoSection::minute_at_tempo (const double& bpm, const double& p) const
return _time_at_tempo (bpm) + minute();
}
-/** returns the tempo in beats per minute at the zero-based (relative to session) pulse.
+/** returns the tempo in beats per minute at the supplied pulse.
*/
double
TempoSection::tempo_at_pulse (const double& p) const
@@ -267,9 +267,9 @@ TempoSection::tempo_at_pulse (const double& p) const
return _tempo_at_pulse (p - pulse());
}
-/** returns the zero-based pulse (relative to session)
- where the tempo in qn beats per minute occurs given frame f. frame f is only used for constant tempi.
- note that the session tempo map may have multiple beats at a given tempo.
+/** returns the pulse where the tempo in beats per minute occurs given frame f.
+ frame f is only used for constant tempi.
+ note that the session tempo map may have multiple locations where a given tempo occurs.
*/
double
TempoSection::pulse_at_tempo (const double& bpm, const double& m) const
@@ -1722,12 +1722,12 @@ TempoMap::pulse_at_tempo_locked (const Metrics& metrics, const Tempo& tempo) con
}
}
- return prev_t->minute();
+ return prev_t->pulse();
}
-/** Returns a Tempo corresponding to the supplied BBT (meter-based) beat.
- * @param beat The BBT (meter-based) beat.
- * @return the Tempo at the supplied BBT (meter-based) beat.
+/** Returns a Tempo corresponding to the supplied position in quarter-note beats.
+ * @param qn the position in quarter note beats.
+ * @return the Tempo at the supplied quarter-note.
*/
Tempo
TempoMap::tempo_at_beat (const double& beat) const
@@ -1739,9 +1739,10 @@ TempoMap::tempo_at_beat (const double& beat) const
return Tempo (prev_t->tempo_at_pulse (((beat - prev_m->beat()) / prev_m->note_divisor()) + prev_m->pulse()), prev_t->note_type());
}
-/** Returns a BBT (meter-based) beat corresponding to the supplied Tempo.
- * @param tempo The tempo.
- * @return the BBT (meter-based) beat at the supplied Tempo.
+/** Returns the position in quarter-note beats corresponding to the supplied Tempo.
+ * @param tempo the tempo.
+ * @return the position in quarter-note beats where the map bpm
+ * is equal to that of the Tempo. currently ignores note_type.
*/
double
TempoMap::beat_at_tempo (const Tempo& tempo) const
@@ -2083,6 +2084,7 @@ TempoMap::bbt_at_pulse_locked (const Metrics& metrics, const double& pulse) cons
/** Returns the BBT time corresponding to the supplied frame position.
* @param frame the position in audio samples.
+ * @return the BBT time at the frame position .
*
*/
BBT_Time
@@ -2183,8 +2185,9 @@ TempoMap::bbt_at_minute_locked (const Metrics& metrics, const double& minute) co
return ret;
}
-/** Returns the frame corresponding to the supplied BBT time.
+/** Returns the frame position corresponding to the supplied BBT time.
* @param bbt the position in BBT time.
+ * @return the frame position at bbt.
*
*/
framepos_t
@@ -2216,14 +2219,9 @@ TempoMap::minute_at_bbt_locked (const Metrics& metrics, const BBT_Time& bbt) con
/**
* Returns the quarter-note beat position corresponding to the supplied frame.
*
- * @param frame The distance in frames relative to session 0 whose quarter note distance you would like.
+ * @param frame the position in frames.
* @return The quarter-note position of the supplied frame. Ignores meter.
*
- * Plugin APIs don't count ticks in the same way PROGRAM_NAME does.
- * We use ticks per beat whereas the rest of the world uses ticks per quarter note.
- * This is more or less the VST's ppqPos (a scalar you use to obtain tick position
- * in whatever ppqn you're using).
- *
*/
double
TempoMap::quarter_note_at_frame (const framepos_t frame)
@@ -2258,10 +2256,10 @@ TempoMap::quarter_note_at_frame_rt (const framepos_t frame)
}
/**
- * Returns the frame corresponding to the supplied quarter-note beat position.
+ * Returns the frame position corresponding to the supplied quarter-note beat.
*
- * @param quarter_note The quarter-note relative to session 0 whose frame position you would like.
- * @return The frame position of the supplied quarter-note. Ignores meter.
+ * @param quarter_note the quarter-note position.
+ * @return the frame position of the supplied quarter-note. Ignores meter.
*
*
*/
@@ -2285,8 +2283,9 @@ TempoMap::minute_at_quarter_note_locked (const Metrics& metrics, const double qu
/** Returns the quarter-note beats corresponding to the supplied BBT (meter-based) beat.
* @param beat The BBT (meter-based) beat.
+ * @return The quarter-note position of the supplied BBT (meter-based) beat.
*
- * a quarter-note is the musical unit of Evoral::Beats.
+ * a quarter-note may be compared with and assigned to Evoral::Beats.
*
*/
double
@@ -2309,6 +2308,7 @@ TempoMap::quarter_note_at_beat_locked (const Metrics& metrics, const double beat
/** Returns the BBT (meter-based) beat position corresponding to the supplied quarter-note beats.
* @param quarter_note The position in quarter-note beats.
+ * @return the BBT (meter-based) beat position of the supplied quarter-note beats.
*
* a quarter-note is the musical unit of Evoral::Beats.
*
@@ -2330,9 +2330,10 @@ TempoMap::beat_at_quarter_note_locked (const Metrics& metrics, const double quar
return beat_at_pulse_locked (metrics, quarter_note / 4.0);
}
-/** Returns the distance in frames between two supplied quarter-note beats.
+/** Returns the duration in frames between two supplied quarter-note beat positions.
* @param start the first position in quarter-note beats.
* @param end the end position in quarter-note beats.
+ * @return the frame distance ober the quarter-note beats duration.
*
* use this rather than e.g.
* frame_at-quarter_note (end_beats) - frame_at_quarter_note (start_beats).