17namespace tracktion {
inline namespace core
43 template<
typename Type>
49 template<
typename T1,
typename T2>
60 template<
typename IntType>
82inline namespace literals
85[[ nodiscard ]]
constexpr TimePosition operator""_tp (
long double seconds);
88[[ nodiscard ]]
constexpr TimePosition operator""_tp (
unsigned long long seconds);
109 template<
typename Type>
115 template<
typename T1,
typename T2>
126 template<
typename IntType>
133 double seconds = 0.0;
148inline namespace literals
151[[ nodiscard ]]
constexpr TimeDuration operator""_td (
long double seconds);
154[[ nodiscard ]]
constexpr TimeDuration operator""_td (
unsigned long long seconds);
162template<
typename Type>
169template<
typename Type>
179template<
typename Type>
186template<
typename Type>
273 constexpr double inBeats()
const;
276 double numBeats = 0.0;
291inline namespace literals
294[[ nodiscard ]]
constexpr BeatPosition operator""_bp (
long double beats);
297[[ nodiscard ]]
constexpr BeatPosition operator""_bp (
unsigned long long beats);
325 constexpr double inBeats()
const;
328 double numBeats = 0.0;
343inline namespace literals
346[[ nodiscard ]]
constexpr BeatDuration operator""_bd (
long double beats);
349[[ nodiscard ]]
constexpr BeatDuration operator""_bd (
unsigned long long beats);
369template<
typename Type>
376template<
typename Type>
437template<
typename Type>
439 : seconds (
std::chrono::duration<
double> (duration).count())
443template<
typename T1,
typename T2>
445 : seconds (
std::chrono::duration<
double> (duration).count())
453 pos.seconds =
static_cast<double> (positionInSeconds);
457template<
typename IntType>
480 return static_cast<int64_t> ((p.inSeconds() * sampleRate)
481 + (p.inSeconds() >= 0.0 ? 0.5 : -0.5));
489inline namespace literals
491inline constexpr TimePosition operator""_tp (
long double seconds)
496inline constexpr TimePosition
operator""_tp (
unsigned long long seconds)
503template<
typename Type>
505 : seconds (
std::chrono::duration<
double> (duration).count())
509template<
typename T1,
typename T2>
511 : seconds (
std::chrono::duration<
double> (duration).count())
519 pos.seconds =
static_cast<double> (positionInSeconds);
523template<
typename IntType>
546 return static_cast<int64_t> ((p.inSeconds() * sampleRate)
547 + (p.inSeconds() >= 0.0 ? 0.5 : -0.5));
555inline namespace literals
557inline constexpr TimeDuration operator""_td (
long double seconds)
562inline constexpr TimeDuration
operator""_td (
unsigned long long seconds)
594template<
typename Type>
600template<
typename Type>
606template<
typename Type>
612template<
typename Type>
669 pos.numBeats =
static_cast<double> (positionInBeats);
683inline namespace literals
685inline constexpr BeatPosition operator""_bp (
long double beats)
690inline constexpr BeatPosition
operator""_bp (
unsigned long long beats)
703 pos.numBeats =
static_cast<double> (durationInBeats);
732inline namespace literals
734inline constexpr BeatDuration operator""_bd (
long double beats)
739inline constexpr BeatDuration
operator""_bd (
unsigned long long beats)
786template<
typename Type>
797template<
typename Type>
int roundToInt(const FloatType value) noexcept
BeatPosition roundToNearestBeat(BeatPosition)
Rounds a BeatPosition to the nearest whole beat.
constexpr int64_t toSamples(TimePosition, double sampleRate)
Converts a TimePosition to a number of samples.
constexpr TimePosition toPosition(TimeDuration)
Converts a TimeDuration to a TimePosition.
constexpr TimeDuration toDuration(TimePosition)
Converts a TimePosition to a TimeDuration.
Represents a duration in beats.
constexpr BeatDuration & operator=(const BeatDuration &)=default
Creates a copy of another BeatDuration.
constexpr BeatDuration()=default
Creates a position at a beat of 0.
constexpr double inBeats() const
Returns the position as a number of beats.
static constexpr BeatDuration fromBeats(T durationInBeats)
Create a BeatPosition from a number of beats.
constexpr BeatDuration(const BeatDuration &)=default
Creates a copy of another BeatDuration.
Represents a position in beats.
constexpr double inBeats() const
Returns the position as a number of beats.
constexpr BeatPosition()=default
Creates a position at a beat of 0.
static constexpr BeatPosition fromBeats(T positionInBeats)
Create a BeatPosition from a number of beats.
constexpr BeatPosition(const BeatPosition &)=default
Creates a copy of another BeatPosition.
constexpr BeatPosition & operator=(const BeatPosition &)=default
Creates a copy of another BeatPosition.
Represents a duration in real-life time.
constexpr TimeDuration & operator=(const TimeDuration &)=default
Creates a copy of another TimeDuration.
static constexpr TimeDuration fromSeconds(T positionInSeconds)
Create a TimeDuration from a number of seconds.
static constexpr TimeDuration fromSamples(IntType numSamples, double sampleRate)
Create a TimeDuration from a number of samples and a sample rate.
constexpr TimeDuration(const TimeDuration &)=default
Creates a copy of another TimeDuration.
constexpr TimeDuration()=default
Creates a position at a time of 0.
constexpr double inSeconds() const
Returns the TimeDuration as a number of seconds.
Represents a position in real-life time.
constexpr TimePosition & operator=(const TimePosition &)=default
Creates a copy of another TimePosition.
constexpr TimePosition(const TimePosition &)=default
Creates a copy of another TimePosition.
static constexpr TimePosition fromSeconds(T positionInSeconds)
Create a TimePosition from a number of seconds.
constexpr double inSeconds() const
Returns the TimePosition as a number of seconds.
constexpr TimePosition()=default
Creates a position at a time of 0.
static constexpr TimePosition fromSamples(IntType numSamples, double sampleRate)
Create a TimePosition from a number of samples and a sample rate.