10#ifndef __SCHEMAS_AUDIO_TRACK_H__
11#define __SCHEMAS_AUDIO_TRACK_H__
20#include "gui/backend/backend/cyaml_schemas/dsp/track_lane.h"
25typedef enum TrackType_v1
27 TRACK_TYPE_INSTRUMENT_v1,
33 TRACK_TYPE_MODULATOR_v1,
34 TRACK_TYPE_AUDIO_BUS_v1,
35 TRACK_TYPE_AUDIO_GROUP_v1,
37 TRACK_TYPE_MIDI_BUS_v1,
38 TRACK_TYPE_MIDI_GROUP_v1,
42static const cyaml_strval_t track_type_strings_v1[] = {
43 {
"Instrument", TRACK_TYPE_INSTRUMENT_v1 },
44 {
"Audio", TRACK_TYPE_AUDIO_v1 },
45 {
"Master", TRACK_TYPE_MASTER_v1 },
46 {
"Chord", TRACK_TYPE_CHORD_v1 },
47 {
"Marker", TRACK_TYPE_MARKER_v1 },
48 {
"Tempo", TRACK_TYPE_TEMPO_v1 },
49 {
"Modulator", TRACK_TYPE_MODULATOR_v1 },
50 {
"Audio FX", TRACK_TYPE_AUDIO_BUS_v1 },
51 {
"Audio Group", TRACK_TYPE_AUDIO_GROUP_v1 },
52 {
"MIDI", TRACK_TYPE_MIDI_v1 },
53 {
"MIDI FX", TRACK_TYPE_MIDI_BUS_v1 },
54 {
"MIDI Group", TRACK_TYPE_MIDI_GROUP_v1 },
55 {
"Folder", TRACK_TYPE_FOLDER_v1 },
64 unsigned int name_hash;
66 bool automation_visible;
71 bool record_set_automatically;
78 int passthrough_midi_input;
80 bool recording_start_sent;
81 bool recording_stop_sent;
82 bool recording_paused;
85 int num_chord_regions;
98 int num_modulator_macros;
99 int num_visible_modulator_macros;
103 bool trigger_midi_activity;
104 PortType_v1 in_signal_type;
105 PortType_v1 out_signal_type;
108 bool bounce_to_master;
109 unsigned int * children;
117static const cyaml_schema_field_t track_fields_schema_v1[] = {
118 YAML_FIELD_INT (
Track_v1, schema_version),
119 YAML_FIELD_STRING_PTR (
Track_v1, name),
120 YAML_FIELD_STRING_PTR (
Track_v1, icon_name),
121 YAML_FIELD_ENUM (
Track_v1, type, track_type_strings_v1),
123 YAML_FIELD_INT (
Track_v1, lanes_visible),
124 YAML_FIELD_INT (
Track_v1, automation_visible),
126 YAML_FIELD_FLOAT (
Track_v1, main_height),
127 YAML_FIELD_INT (
Track_v1, passthrough_midi_input),
128 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Track_v1, recording, port_fields_schema_v1),
130 YAML_FIELD_MAPPING_EMBEDDED (
Track_v1, color, gdk_rgba_fields_schema),
131 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT (
Track_v1, lanes, track_lane_schema_v1),
132 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT (
Track_v1, chord_regions, region_schema_v1),
133 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT (
Track_v1, scales, scale_object_schema_v1),
134 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT (
Track_v1, markers, marker_schema_v1),
135 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Track_v1, channel, channel_fields_schema_v1),
136 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Track_v1, bpm_port, port_fields_schema_v1),
137 YAML_FIELD_MAPPING_PTR_OPTIONAL (
140 port_fields_schema_v1),
141 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Track_v1, beat_unit_port, port_fields_schema_v1),
142 YAML_FIELD_DYN_ARRAY_VAR_COUNT (
Track_v1, modulators, plugin_schema_v1),
143 YAML_FIELD_FIXED_SIZE_PTR_ARRAY_VAR_COUNT (
146 modulator_macro_processor_schema_v1),
147 YAML_FIELD_INT (
Track_v1, num_visible_modulator_macros),
148 YAML_FIELD_MAPPING_PTR (
Track_v1, processor, track_processor_fields_schema_v1),
149 YAML_FIELD_MAPPING_EMBEDDED (
151 automation_tracklist,
152 automation_tracklist_fields_schema_v1),
153 YAML_FIELD_ENUM (
Track_v1, in_signal_type, port_type_strings_v1),
154 YAML_FIELD_ENUM (
Track_v1, out_signal_type, port_type_strings_v1),
155 YAML_FIELD_UINT (
Track_v1, midi_ch),
156 YAML_FIELD_STRING_PTR (
Track_v1, comment),
157 YAML_FIELD_DYN_ARRAY_VAR_COUNT_PRIMITIVES (
160 unsigned_int_schema),
165 YAML_FIELD_INT (
Track_v1, record_set_automatically),
166 YAML_FIELD_INT (
Track_v1, drum_mode),
171static const cyaml_schema_value_t track_schema_v1 = {
172 YAML_VALUE_PTR (
Track_v1, track_fields_schema_v1),
181 unsigned int name_hash;
183 bool automation_visible;
188 bool record_set_automatically;
195 int passthrough_midi_input;
197 bool recording_start_sent;
198 bool recording_stop_sent;
199 bool recording_paused;
202 int num_chord_regions;
215 int num_modulator_macros;
216 int num_visible_modulator_macros;
220 bool trigger_midi_activity;
221 PortType_v1 in_signal_type;
222 PortType_v1 out_signal_type;
225 bool bounce_to_master;
226 unsigned int * children;
234static const cyaml_schema_field_t track_fields_schema_v2[] = {
235 YAML_FIELD_INT (
Track_v2, schema_version),
236 YAML_FIELD_STRING_PTR (
Track_v2, name),
237 YAML_FIELD_STRING_PTR (
Track_v2, icon_name),
238 YAML_FIELD_ENUM (
Track_v2, type, track_type_strings_v1),
240 YAML_FIELD_INT (
Track_v2, lanes_visible),
241 YAML_FIELD_INT (
Track_v2, automation_visible),
243 YAML_FIELD_FLOAT (
Track_v2, main_height),
244 YAML_FIELD_INT (
Track_v2, passthrough_midi_input),
245 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Track_v2, recording, port_fields_schema_v1),
247 YAML_FIELD_MAPPING_EMBEDDED (
Track_v2, color, gdk_rgba_fields_schema),
248 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT (
Track_v2, lanes, track_lane_schema_v1),
249 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT (
Track_v2, chord_regions, region_schema_v1),
250 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT (
Track_v2, scales, scale_object_schema_v1),
251 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT (
Track_v2, markers, marker_schema_v1),
252 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Track_v2, channel, channel_fields_schema_v2),
253 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Track_v2, bpm_port, port_fields_schema_v1),
254 YAML_FIELD_MAPPING_PTR_OPTIONAL (
257 port_fields_schema_v1),
258 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Track_v2, beat_unit_port, port_fields_schema_v1),
259 YAML_FIELD_DYN_ARRAY_VAR_COUNT (
Track_v2, modulators, plugin_schema_v1),
260 YAML_FIELD_FIXED_SIZE_PTR_ARRAY_VAR_COUNT (
263 modulator_macro_processor_schema_v1),
264 YAML_FIELD_INT (
Track_v2, num_visible_modulator_macros),
265 YAML_FIELD_MAPPING_PTR (
Track_v2, processor, track_processor_fields_schema_v1),
266 YAML_FIELD_MAPPING_EMBEDDED (
268 automation_tracklist,
269 automation_tracklist_fields_schema_v1),
270 YAML_FIELD_ENUM (
Track_v2, in_signal_type, port_type_strings_v1),
271 YAML_FIELD_ENUM (
Track_v2, out_signal_type, port_type_strings_v1),
272 YAML_FIELD_UINT (
Track_v2, midi_ch),
273 YAML_FIELD_STRING_PTR (
Track_v2, comment),
274 YAML_FIELD_DYN_ARRAY_VAR_COUNT_PRIMITIVES (
277 unsigned_int_schema),
282 YAML_FIELD_INT (
Track_v2, record_set_automatically),
283 YAML_FIELD_INT (
Track_v2, drum_mode),
288static const cyaml_schema_value_t track_schema_v2 = {
289 YAML_VALUE_PTR (
Track_v2, track_fields_schema_v2),
293track_upgrade_from_v1 (
Track_v1 * old);
Automation tracklist schema.
Modulator macro button processor schema.