Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::dsp::BasicTimelineTick< Q > Struct Template Reference

Absolute positions on the project's musical timeline. More...

#include <src/dsp/tick_types.h>

Public Member Functions

constexpr BasicTimelineTick (const BasicTimelineTick &)=default
constexpr BasicTimelineTick (BasicTimelineTick &&) noexcept=default
constexpr BasicTimelineTick & operator= (const BasicTimelineTick &)=default
constexpr BasicTimelineTick & operator= (BasicTimelineTick &&) noexcept=default
template<typename Q2>
constexpr BasicTimelineTick (Q2 q)
 Construct from any au quantity convertible to Q.
template<typename Q2>
constexpr BasicTimelineTick (const BasicTimelineTick< Q2 > &other)
 Implicit widening (e.g. int→double) — au allows it.
bool operator== (const BasicTimelineTick &) const =default
auto operator<=> (const BasicTimelineTick &) const =default
BasicTimelineTick operator+ (const BasicTimelineTick &o) const
BasicTimelineTick operator- (const BasicTimelineTick &o) const
BasicTimelineTick & operator+= (const BasicTimelineTick &o)
BasicTimelineTick & operator-= (const BasicTimelineTick &o)
BasicTimelineTick operator- () const
constexpr double operator/ (const BasicTimelineTick &o) const
 Dimensionless ratio of two equal-domain quantities (this / o).
constexpr BasicTimelineTick operator* (double scalar) const
 Scale by a dimensionless factor.
asQuantity () const
double asDouble () const

Data Fields

value_ {}

Friends

constexpr BasicTimelineTick operator* (double scalar, const BasicTimelineTick &t)
 Symmetric scalar multiplication (factor * quantity).

Detailed Description

template<typename Q>
struct zrythm::dsp::BasicTimelineTick< Q >

Absolute positions on the project's musical timeline.

Convert from ContentTick ONLY via ContentTimeWarp::contentToTimeline().

au deliberately does not support "kind" types (same dimension, same magnitude, different logical domain). This wrapper provides that safety: BasicTimelineTick and BasicContentTick are unrelated types with no implicit conversion between them, so mixing them is a compile error.

Cross-precision conversion (int→double within the same domain) delegates entirely to au: au allows implicit int→double (lossless). Narrowing (double→int) is not provided — use .asDouble() if you need the raw value.

Template Parameters
QThe underlying au tick quantity type (e.g. units::precise_tick_t for double precision, units::tick_t for integer precision).

Definition at line 32 of file tick_types.h.

Constructor & Destructor Documentation

◆ BasicTimelineTick() [1/2]

template<typename Q>
template<typename Q2>
zrythm::dsp::BasicTimelineTick< Q >::BasicTimelineTick ( Q2 q)
inlineexplicitconstexpr

Construct from any au quantity convertible to Q.

Definition at line 47 of file tick_types.h.

◆ BasicTimelineTick() [2/2]

template<typename Q>
template<typename Q2>
zrythm::dsp::BasicTimelineTick< Q >::BasicTimelineTick ( const BasicTimelineTick< Q2 > & other)
inlineconstexpr

Implicit widening (e.g. int→double) — au allows it.

Definition at line 56 of file tick_types.h.

Member Function Documentation

◆ asDouble()

template<typename Q>
double zrythm::dsp::BasicTimelineTick< Q >::asDouble ( ) const
inline

Definition at line 109 of file tick_types.h.

◆ asQuantity()

template<typename Q>
Q zrythm::dsp::BasicTimelineTick< Q >::asQuantity ( ) const
inline

Definition at line 108 of file tick_types.h.

◆ operator*()

template<typename Q>
BasicTimelineTick zrythm::dsp::BasicTimelineTick< Q >::operator* ( double scalar) const
inlineconstexpr

Scale by a dimensionless factor.

Definition at line 95 of file tick_types.h.

◆ operator+()

template<typename Q>
BasicTimelineTick zrythm::dsp::BasicTimelineTick< Q >::operator+ ( const BasicTimelineTick< Q > & o) const
inline

Definition at line 66 of file tick_types.h.

◆ operator+=()

template<typename Q>
BasicTimelineTick & zrythm::dsp::BasicTimelineTick< Q >::operator+= ( const BasicTimelineTick< Q > & o)
inline

Definition at line 74 of file tick_types.h.

◆ operator-() [1/2]

template<typename Q>
BasicTimelineTick zrythm::dsp::BasicTimelineTick< Q >::operator- ( ) const
inline

Definition at line 84 of file tick_types.h.

◆ operator-() [2/2]

template<typename Q>
BasicTimelineTick zrythm::dsp::BasicTimelineTick< Q >::operator- ( const BasicTimelineTick< Q > & o) const
inline

Definition at line 70 of file tick_types.h.

◆ operator-=()

template<typename Q>
BasicTimelineTick & zrythm::dsp::BasicTimelineTick< Q >::operator-= ( const BasicTimelineTick< Q > & o)
inline

Definition at line 79 of file tick_types.h.

◆ operator/()

template<typename Q>
double zrythm::dsp::BasicTimelineTick< Q >::operator/ ( const BasicTimelineTick< Q > & o) const
inlineconstexpr

Dimensionless ratio of two equal-domain quantities (this / o).

Definition at line 89 of file tick_types.h.

◆ operator*

template<typename Q>
BasicTimelineTick operator* ( double scalar,
const BasicTimelineTick< Q > & t )
friend

Symmetric scalar multiplication (factor * quantity).

Definition at line 102 of file tick_types.h.

Field Documentation

◆ value_

template<typename Q>
Q zrythm::dsp::BasicTimelineTick< Q >::value_ {}

Definition at line 34 of file tick_types.h.


The documentation for this struct was generated from the following file: