Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::dsp::AtomicPosition Class Reference

Thread-safe position storage with automatic musical/absolute time conversion. More...

#include <src/dsp/atomic_position.h>

Data Structures

struct  TimeConversionFunctions

Public Member Functions

 AtomicPosition (const TimeConversionFunctions &conversion_funcs) noexcept
 Construct a new AtomicPosition object.
auto get_current_mode () const
 Get current storage format (musical ticks or absolute seconds).
void set_mode (TimeFormat format)
 Change storage format with automatic value conversion.
void set_ticks (units::precise_tick_t ticks)
 Set position in musical ticks.
void set_seconds (units::precise_second_t seconds)
 Set position in absolute seconds.
units::precise_tick_t get_ticks () const
 Get position in musical ticks (converts if necessary).
units::precise_second_t get_seconds () const
 Get position in absolute seconds (converts if necessary).
units::sample_t get_samples () const
 Helper method to get the position as samples.
void set_samples (units::precise_sample_t samples)
const auto & time_conversion_functions () const

Friends

void to_json (nlohmann::json &j, const AtomicPosition &pos)
void from_json (const nlohmann::json &j, AtomicPosition &pos)

Detailed Description

Thread-safe position storage with automatic musical/absolute time conversion.

Maintains a position value that can be stored in either:

  • Musical time (ticks)
  • Absolute time (seconds)

Automatically converts between formats when the storage mode changes or when accessing in a different format than currently stored. Relies on a TempoMap for conversions between musical and absolute time domains.

Definition at line 76 of file atomic_position.h.

Constructor & Destructor Documentation

◆ AtomicPosition()

zrythm::dsp::AtomicPosition::AtomicPosition ( const TimeConversionFunctions & conversion_funcs)
inlinenoexcept

Construct a new AtomicPosition object.

Parameters
tempo_mapReference to tempo map for time conversions.

Definition at line 120 of file atomic_position.h.

Member Function Documentation

◆ get_current_mode()

auto zrythm::dsp::AtomicPosition::get_current_mode ( ) const
inline

Get current storage format (musical ticks or absolute seconds).

Definition at line 127 of file atomic_position.h.

◆ get_samples()

units::sample_t zrythm::dsp::AtomicPosition::get_samples ( ) const
inline

Helper method to get the position as samples.

Definition at line 221 of file atomic_position.h.

◆ get_seconds()

units::precise_second_t zrythm::dsp::AtomicPosition::get_seconds ( ) const
inline

Get position in absolute seconds (converts if necessary).

Definition at line 210 of file atomic_position.h.

◆ get_ticks()

units::precise_tick_t zrythm::dsp::AtomicPosition::get_ticks ( ) const
inline

Get position in musical ticks (converts if necessary).

Definition at line 199 of file atomic_position.h.

◆ set_mode()

void zrythm::dsp::AtomicPosition::set_mode ( TimeFormat format)
inline

Change storage format with automatic value conversion.

Parameters
formatNew storage format (TimeFormat::Musical or TimeFormat::Absolute)

Converts the stored value to match the new format:

  • Musical -> Absolute: Converts ticks to seconds
  • Absolute -> Musical: Converts seconds to ticks
Warning
This is NOT thread-safe. Ensure that no other thread is writing to the position while this function is called.

Definition at line 144 of file atomic_position.h.

◆ set_samples()

void zrythm::dsp::AtomicPosition::set_samples ( units::precise_sample_t samples)
inline

Definition at line 232 of file atomic_position.h.

◆ set_seconds()

void zrythm::dsp::AtomicPosition::set_seconds ( units::precise_second_t seconds)
inline

Set position in absolute seconds.

Converts to ticks if currently in Musical mode.

Definition at line 184 of file atomic_position.h.

◆ set_ticks()

void zrythm::dsp::AtomicPosition::set_ticks ( units::precise_tick_t ticks)
inline

Set position in musical ticks.

Converts to seconds if currently in Absolute mode.

Definition at line 165 of file atomic_position.h.

◆ time_conversion_functions()

const auto & zrythm::dsp::AtomicPosition::time_conversion_functions ( ) const
inline

Definition at line 237 of file atomic_position.h.


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