Anklang 0.3.0-460-gc4ef46ba
ASE — Anklang Sound Engine (C++)

« « « Anklang Documentation
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Attributes | Static Protected Attributes | List of all members
Ase::TickSignature Struct Reference

Musical time signature and tick conversions. More...

#include "transport.hh"

Classes

struct  Beat
 
struct  Time
 

Public Member Functions

double samplerate () const
 
double inv_samplerate () const
 
double ticks_per_sample () const
 
int64 sample_to_tick (int64 sample) const
 
int64 sample_from_tick (int64 tick) const
 
double bpm () const
 
int32 bar_ticks () const
 
int32 beat_ticks () const
 
int64 start_offset () const
 
void set_samplerate (uint samplerate)
 Assign sample rate.
 
void set_bpm (double bpm)
 Assign tempo in beats per minute.
 
Time time_from_tick (int64 tick) const
 Calculate time from tick, requires set_bpm().
 
int64 time_to_tick (const Time &time) const
 Calculate tick from time, requires set_bpm().
 
bool set_signature (uint8 beats_per_bar, uint8 beat_unit)
 Assign time signature and offset for the signature to take effect.
 
const uint8beats_per_bar () const
 
const uint8beat_unit () const
 
int32 bar_from_tick (int64 tick) const
 Calculate bar from tick, requires set_signature().
 
int64 bar_to_tick (int32 bar) const
 Calculate tick from bar, requires set_signature().
 
Beat beat_from_tick (int64 tick) const
 Calculate beat from tick, requires set_signature().
 
int64 beat_to_tick (const Beat &beat) const
 Calculate tick from beat, requires set_signature().
 
 TickSignature (double bpm, uint8 beats_per_bar, uint8 beat_unit)
 
 TickSignature (const TickSignature &other)
 
TickSignatureoperator= (const TickSignature &src)
 

Protected Attributes

uint8 beats_per_bar_
 Upper numeral (numerator), how many beats constitute a bar.
 
uint8 beat_unit_
 Lower numeral (denominator in [1 2 4 8 16]), note value that represents one beat.
 
int32 beat_ticks_
 
int32 bar_ticks_
 
int32 samplerate_
 Sample rate (mixing frequency) in Hz.
 
double bpm_
 Current tempo in beats per minute.
 
int64 ticks_per_minute_
 
double ticks_per_second_
 
double inv_ticks_per_second_
 
double ticks_per_sample_
 
double sample_per_ticks_
 
double inv_samplerate_
 Precalculated 1.0 / samplerate.
 

Static Protected Attributes

static constexpr const int64 offset_
 

Detailed Description

Musical time signature and tick conversions.

Definition at line 61 of file transport.hh.


Class Documentation

◆ Ase::TickSignature::Beat

struct Ase::TickSignature::Beat

Definition at line 77 of file transport.hh.

Class Members
int32 bar Bar of tick position.
int8 beat Beat within bar of tick position.
double semiquaver The sixteenth with fraction within beat.

◆ Ase::TickSignature::Time

struct Ase::TickSignature::Time

Definition at line 82 of file transport.hh.

Class Members
int32 minutes Tick position in minutes.
double seconds Seconds with fraction after the minute.

Constructor & Destructor Documentation

◆ TickSignature() [1/3]

Ase::TickSignature::TickSignature ( )

Definition at line 20 of file transport.cc.

◆ TickSignature() [2/3]

Ase::TickSignature::TickSignature ( double  bpm,
uint8  beats_per_bar,
uint8  beat_unit 
)

Definition at line 28 of file transport.cc.

◆ TickSignature() [3/3]

Ase::TickSignature::TickSignature ( const TickSignature other)

Definition at line 24 of file transport.cc.

Member Function Documentation

◆ bar_from_tick()

int32 Ase::TickSignature::bar_from_tick ( int64  tick) const

Calculate bar from tick, requires set_signature().

Definition at line 136 of file transport.cc.

◆ bar_ticks()

int32 Ase::TickSignature::bar_ticks ( ) const

Definition at line 92 of file transport.hh.

◆ bar_to_tick()

int64 Ase::TickSignature::bar_to_tick ( int32  bar) const

Calculate tick from bar, requires set_signature().

Definition at line 143 of file transport.cc.

◆ beat_from_tick()

TickSignature::Beat Ase::TickSignature::beat_from_tick ( int64  tick) const

Calculate beat from tick, requires set_signature().

Definition at line 112 of file transport.cc.

References Ase::TickSignature::Beat::bar, Ase::TickSignature::Beat::beat, and Ase::TickSignature::Beat::semiquaver.

◆ beat_ticks()

int32 Ase::TickSignature::beat_ticks ( ) const

Definition at line 93 of file transport.hh.

◆ beat_to_tick()

int64 Ase::TickSignature::beat_to_tick ( const Beat beat) const

Calculate tick from beat, requires set_signature().

Definition at line 125 of file transport.cc.

References Ase::TickSignature::Beat::bar, Ase::TickSignature::Beat::beat, and Ase::TickSignature::Beat::semiquaver.

◆ beat_unit()

const uint8 & Ase::TickSignature::beat_unit ( ) const

Definition at line 101 of file transport.hh.

◆ beats_per_bar()

const uint8 & Ase::TickSignature::beats_per_bar ( ) const

Definition at line 100 of file transport.hh.

◆ bpm()

double Ase::TickSignature::bpm ( ) const

Definition at line 91 of file transport.hh.

◆ inv_samplerate()

double Ase::TickSignature::inv_samplerate ( ) const

Definition at line 87 of file transport.hh.

◆ operator=()

TickSignature & Ase::TickSignature::operator= ( const TickSignature src)

Definition at line 35 of file transport.cc.

◆ sample_from_tick()

int64 Ase::TickSignature::sample_from_tick ( int64  tick) const

Definition at line 155 of file transport.hh.

◆ sample_to_tick()

int64 Ase::TickSignature::sample_to_tick ( int64  sample) const

Definition at line 149 of file transport.hh.

◆ samplerate()

double Ase::TickSignature::samplerate ( ) const

Definition at line 86 of file transport.hh.

◆ set_bpm()

void Ase::TickSignature::set_bpm ( double  bpm)

Assign tempo in beats per minute.

Definition at line 59 of file transport.cc.

References assert_return, bpm_, ISLIKELY, samplerate_, and Ase::TRANSPORT_PPQN.

◆ set_samplerate()

void Ase::TickSignature::set_samplerate ( uint  samplerate)

Assign sample rate.

Definition at line 47 of file transport.cc.

References assert_return, bpm_, inv_samplerate_, samplerate_, and Ase::TRANSPORT_PPQN.

◆ set_signature()

bool Ase::TickSignature::set_signature ( uint8  beats_per_bar,
uint8  beat_unit 
)

Assign time signature and offset for the signature to take effect.

Definition at line 95 of file transport.cc.

References beat_unit_, beats_per_bar_, and CLAMP.

◆ start_offset()

int64 Ase::TickSignature::start_offset ( ) const

Definition at line 94 of file transport.hh.

◆ ticks_per_sample()

double Ase::TickSignature::ticks_per_sample ( ) const

Definition at line 88 of file transport.hh.

◆ time_from_tick()

TickSignature::Time Ase::TickSignature::time_from_tick ( int64  tick) const

Calculate time from tick, requires set_bpm().

Definition at line 74 of file transport.cc.

References Ase::TickSignature::Time::minutes, and Ase::TickSignature::Time::seconds.

◆ time_to_tick()

int64 Ase::TickSignature::time_to_tick ( const Time time) const

Calculate tick from time, requires set_bpm().

Definition at line 85 of file transport.cc.

References time().

Member Data Documentation

◆ bar_ticks_

int32 Ase::TickSignature::bar_ticks_
protected

Definition at line 67 of file transport.hh.

◆ beat_ticks_

int32 Ase::TickSignature::beat_ticks_
protected

Definition at line 66 of file transport.hh.

◆ beat_unit_

uint8 Ase::TickSignature::beat_unit_
protected

Lower numeral (denominator in [1 2 4 8 16]), note value that represents one beat.

Definition at line 65 of file transport.hh.

Referenced by set_signature().

◆ beats_per_bar_

uint8 Ase::TickSignature::beats_per_bar_
protected

Upper numeral (numerator), how many beats constitute a bar.

Definition at line 64 of file transport.hh.

Referenced by set_signature().

◆ bpm_

double Ase::TickSignature::bpm_
protected

Current tempo in beats per minute.

Definition at line 69 of file transport.hh.

Referenced by set_bpm(), and set_samplerate().

◆ inv_samplerate_

double Ase::TickSignature::inv_samplerate_
protected

Precalculated 1.0 / samplerate.

Definition at line 75 of file transport.hh.

Referenced by set_samplerate().

◆ inv_ticks_per_second_

double Ase::TickSignature::inv_ticks_per_second_
protected

Definition at line 72 of file transport.hh.

◆ offset_

constexpr const int64 Ase::TickSignature::offset_
staticconstexprprotected

Definition at line 63 of file transport.hh.

◆ sample_per_ticks_

double Ase::TickSignature::sample_per_ticks_
protected

Definition at line 74 of file transport.hh.

◆ samplerate_

int32 Ase::TickSignature::samplerate_
protected

Sample rate (mixing frequency) in Hz.

Definition at line 68 of file transport.hh.

Referenced by set_bpm(), and set_samplerate().

◆ ticks_per_minute_

int64 Ase::TickSignature::ticks_per_minute_
protected

Definition at line 70 of file transport.hh.

◆ ticks_per_sample_

double Ase::TickSignature::ticks_per_sample_
protected

Definition at line 73 of file transport.hh.

◆ ticks_per_second_

double Ase::TickSignature::ticks_per_second_
protected

Definition at line 71 of file transport.hh.


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