summaryrefslogtreecommitdiff
path: root/src/pke-at-setlist-types.hpp
blob: 8e09cf015f671776d2efd5267a12b78bd28933c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#ifndef PKE_AT_PKE_AT_SETLIST_TYPES_HPP
#define PKE_AT_PKE_AT_SETLIST_TYPES_HPP

#include <pke/pke.hpp>

enum PKE_AT_EXT_MAPPING_TYPE {
	PKE_AT_EXT_MAPPING_TYPE_NONE,
	PKE_AT_EXT_MAPPING_TYPE_LONG,
	PKE_AT_EXT_MAPPING_TYPE_COUNT,
};

enum PKE_AT_EXT_MAPPING_SOURCE {
	PKE_AT_EXT_MAPPING_SOURCE_NONE,
	PKE_AT_EXT_MAPPING_SOURCE_PLANNING_CENTER_SERVICES,
	PKE_AT_EXT_MAPPING_SOURCE_COUNT,
};

struct pke_at_ext_mapping_details {
	PKE_AT_EXT_MAPPING_TYPE mapping_type;
	PKE_AT_EXT_MAPPING_SOURCE mapping_source;
	union pke_at_ext_mapping_details_extern_id {
		long id_long;
	} id;
	pk_uuid uuid;
};
struct pke_at_ext_mapping {
	struct pke_at_ext_mapping_details details;
};
struct pke_at_ext_mappings {
	pk_arr_t<struct pke_at_ext_mapping_details> details;
};

enum PKE_AT_SECTION_TYPE_INDEX {
	PKE_AT_SECTION_TYPE_INDEX_NONE,
	PKE_AT_SECTION_TYPE_INDEX_VERSE,
	PKE_AT_SECTION_TYPE_INDEX_CHORUS,
	PKE_AT_SECTION_TYPE_INDEX_BRIDGE,
	PKE_AT_SECTION_TYPE_INDEX_INTRO,
	PKE_AT_SECTION_TYPE_INDEX_OUTRO,
	PKE_AT_SECTION_TYPE_INDEX_END,
	PKE_AT_SECTION_TYPE_INDEX_ENDING = PKE_AT_SECTION_TYPE_INDEX_END,
	PKE_AT_SECTION_TYPE_INDEX_INSTRUMENTAL,
	PKE_AT_SECTION_TYPE_INDEX_INTERLUDE,
	PKE_AT_SECTION_TYPE_INDEX_REFRAIN,
	PKE_AT_SECTION_TYPE_INDEX_TAG,
	PKE_AT_SECTION_TYPE_INDEX_COUNT,
};

struct pke_at_section_type {
	enum PKE_AT_SECTION_TYPE_INDEX section_type_index = PKE_AT_SECTION_TYPE_INDEX_NONE;
	AssetKey title_key;
	AssetHandle title_handle = AssetHandle_MAX;
};

struct pke_at_section_details {
	pk_uuid song_uuid;
	uint8_t sequence;
	uint8_t beats_per_bar = 0;
	uint8_t bar_count = 0;
	enum PKE_AT_SECTION_TYPE_INDEX section_type_index = PKE_AT_SECTION_TYPE_INDEX_NONE;
};
struct pke_at_section {
	pke_at_section_details details{};
};

enum PKE_AT_KEY_INDEX {
	PKE_AT_KEY_INDEX_NONE     = 0,
	PKE_AT_KEY_INDEX_C,
	PKE_AT_KEY_INDEX_C_SHARP,
	PKE_AT_KEY_INDEX_D_FLAT,
	PKE_AT_KEY_INDEX_D,
	PKE_AT_KEY_INDEX_D_SHARP,
	PKE_AT_KEY_INDEX_E_FLAT,
	PKE_AT_KEY_INDEX_E,
	PKE_AT_KEY_INDEX_F,
	PKE_AT_KEY_INDEX_F_SHARP,
	PKE_AT_KEY_INDEX_G_FLAT,
	PKE_AT_KEY_INDEX_G,
	PKE_AT_KEY_INDEX_G_SHARP,
	PKE_AT_KEY_INDEX_A_FLAT,
	PKE_AT_KEY_INDEX_A,
	PKE_AT_KEY_INDEX_A_SHARP,
	PKE_AT_KEY_INDEX_B_FLAT,
	PKE_AT_KEY_INDEX_B,
	PKE_AT_KEY_INDEX_COUNT,
};

struct pke_at_song_details {
	pk_uuid uuid;
	enum PKE_AT_KEY_INDEX key;
	long ccli;
	pk_cstr title;
	pk_cstr arrangement;
	uint8_t bpm;
};
struct pke_at_song {
	struct pke_at_song_details details{};
	float calculated_delta = 0.f;
	pk_arr_t<pke_at_section> sections;
};

struct pke_at_setlist_details {
	pk_uuid uuid;
	pk_cstr title;
};
struct pke_at_setlist {
	struct pke_at_setlist_details details{};
	pk_arr_t<pke_at_song> tracks;
};

struct pke_at_setlist_song_details {
	pk_uuid setlist_uuid;
	pk_uuid song_uuid;
};
struct pke_at_setlist_song {
	struct pke_at_setlist_song_details details{};
};

struct pke_at_key {
	const char *name;
	float mtrnm_hz_beat;
	float mtrnm_hz_down_beat;
	AssetHandle mtrnm_beat_asset_handle = AssetHandle_MAX;
	AssetHandle mtrnm_down_beat_asset_handle = AssetHandle_MAX;
};
extern struct pke_at_key g_keys[PKE_AT_KEY_INDEX_COUNT];

#endif /* PKE_AT_PKE_AT_SETLIST_TYPES_HPP */