10#ifndef __AUDIO_TEMPO_TRACK_H__
11#define __AUDIO_TEMPO_TRACK_H__
18#include <magic_enum.hpp>
26#define TEMPO_TRACK_MAX_BPM 420.f
27#define TEMPO_TRACK_MIN_BPM 40.f
28#define TEMPO_TRACK_DEFAULT_BPM 140.f
29#define TEMPO_TRACK_DEFAULT_BEATS_PER_BAR 4
30#define TEMPO_TRACK_MIN_BEATS_PER_BAR 1
31#define TEMPO_TRACK_MAX_BEATS_PER_BAR 16
32#define TEMPO_TRACK_DEFAULT_BEAT_UNIT ZBeatUnit::Z_BEAT_UNIT_4
33#define TEMPO_TRACK_MIN_BEAT_UNIT ZBeatUnit::Z_BEAT_UNIT_2
34#define TEMPO_TRACK_MAX_BEAT_UNIT ZBeatUnit::Z_BEAT_UNIT_16
36#define P_TEMPO_TRACK (TRACKLIST->tempo_track)
82tempo_track_get_current_bpm_as_str (
void * self);
104tempo_track_set_bpm_from_str (
void * _self,
const char * str);
107tempo_track_beat_unit_enum_to_int (
ZBeatUnit ebeat_unit);
110tempo_track_set_beat_unit_from_enum (
Track * self,
ZBeatUnit ebeat_unit);
113tempo_track_get_beat_unit_enum (
Track * self);
116tempo_track_beat_unit_to_enum (
int beat_unit);
119tempo_track_set_beat_unit (
Track * self,
int beat_unit);
128tempo_track_get_beats_per_bar (
Track * self);
131tempo_track_get_beat_unit (
Track * self);
The backend for a timeline track.
void tempo_track_clear(Track *self)
Removes all objects from the tempo track.
bpm_t tempo_track_get_bpm_at_pos(Track *track, Position *pos)
Returns the BPM at the given pos.
bpm_t tempo_track_get_current_bpm(Track *self)
Returns the current BPM.
void tempo_track_set_bpm(Track *self, bpm_t bpm, bpm_t start_bpm, bool temporary, bool fire_events)
Sets the BPM.
void tempo_track_init(Track *track)
Inits the tempo track.
Track * tempo_track_default(int track_pos)
Creates the default tempo track.
void tempo_track_set_beats_per_bar(Track *self, int beats_per_bar)
Updates beat unit and anything depending on it.
A Position is made up of bars.beats.sixteenths.ticks.
Track to be inserted into the Project's Tracklist.