Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
tempo_track.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2019-2020 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
10#ifndef __AUDIO_TEMPO_TRACK_H__
11#define __AUDIO_TEMPO_TRACK_H__
12
13#include <stdint.h>
14
15#include "dsp/track.h"
16#include "utils/types.h"
17
24#define TEMPO_TRACK_MAX_BPM 420.f
25#define TEMPO_TRACK_MIN_BPM 40.f
26#define TEMPO_TRACK_DEFAULT_BPM 140.f
27#define TEMPO_TRACK_DEFAULT_BEATS_PER_BAR 4
28#define TEMPO_TRACK_MIN_BEATS_PER_BAR 1
29#define TEMPO_TRACK_MAX_BEATS_PER_BAR 16
30#define TEMPO_TRACK_DEFAULT_BEAT_UNIT Z_BEAT_UNIT_4
31#define TEMPO_TRACK_MIN_BEAT_UNIT Z_BEAT_UNIT_2
32#define TEMPO_TRACK_MAX_BEAT_UNIT Z_BEAT_UNIT_16
33
34#define P_TEMPO_TRACK (TRACKLIST->tempo_track)
35
39typedef enum ZBeatUnit
40{
41 Z_BEAT_UNIT_2,
42 Z_BEAT_UNIT_4,
43 Z_BEAT_UNIT_8,
44 Z_BEAT_UNIT_16
45} ZBeatUnit;
46
50Track *
51tempo_track_default (int track_pos);
52
56void
58
64void
66
72
78
79const char *
80tempo_track_get_current_bpm_as_str (void * self);
81
93void
95 Track * self,
96 bpm_t bpm,
97 bpm_t start_bpm,
98 bool temporary,
99 bool fire_events);
100
101void
102tempo_track_set_bpm_from_str (void * _self, const char * str);
103
104int
105tempo_track_beat_unit_enum_to_int (ZBeatUnit ebeat_unit);
106
107void
108tempo_track_set_beat_unit_from_enum (Track * self, ZBeatUnit ebeat_unit);
109
111tempo_track_get_beat_unit_enum (Track * self);
112
114tempo_track_beat_unit_to_enum (int beat_unit);
115
116void
117tempo_track_set_beat_unit (Track * self, int beat_unit);
118
122void
123tempo_track_set_beats_per_bar (Track * self, int beats_per_bar);
124
125int
126tempo_track_get_beats_per_bar (Track * self);
127
128int
129tempo_track_get_beat_unit (Track * self);
130
135#endif
The backend for a timeline track.
ZBeatUnit
Beat unit.
Definition tempo_track.h:40
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.
float bpm_t
The BPM type.
Definition types.h:50
A Position is made up of bars.beats.sixteenths.ticks.
Definition position.h:126
Track to be inserted into the Project's Tracklist.
Definition track.h:177
Custom types.