Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
automation_track.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2018-2022 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
9
10#ifndef __SCHEMAS_AUDIO_AUTOMATION_TRACK_H__
11#define __SCHEMAS_AUDIO_AUTOMATION_TRACK_H__
12
16
17typedef enum AutomationMode_v1
18{
19 AUTOMATION_MODE_READ_v1,
20 AUTOMATION_MODE_RECORD_v1,
21 AUTOMATION_MODE_OFF_v1,
22 NUM_AUTOMATION_MODES_v1,
23} AutomationMode_v1;
24
25static const cyaml_strval_t automation_mode_strings_v1[] = {
26 { "Read", AUTOMATION_MODE_READ_v1 },
27 { "Rec", AUTOMATION_MODE_RECORD_v1 },
28 { "Off", AUTOMATION_MODE_OFF_v1 },
29 { "<invalid>", NUM_AUTOMATION_MODES_v1 },
30};
31
32typedef enum AutomationRecordMode_v1
33{
34 AUTOMATION_RECORD_MODE_TOUCH_v1,
35 AUTOMATION_RECORD_MODE_LATCH_v1,
36 NUM_AUTOMATION_RECORD_MODES_v1,
37} AutomationRecordMode_v1;
38
39static const cyaml_strval_t automation_record_mode_strings_v1[] = {
40 { "Touch", AUTOMATION_RECORD_MODE_TOUCH_v1 },
41 { "Latch", AUTOMATION_RECORD_MODE_LATCH_v1 },
42 { "<invalid>", NUM_AUTOMATION_RECORD_MODES_v1 },
43};
44
45typedef struct AutomationTrack_v1
46{
47 int schema_version;
48 int index;
49 PortIdentifier_v1 port_id;
50 bool created;
51 ZRegion_v1 ** regions;
52 int num_regions;
53 bool visible;
54 double height;
55 AutomationMode_v1 automation_mode;
56 AutomationRecordMode_v1 record_mode;
58
59static const cyaml_schema_field_t automation_track_fields_schema_v1[] = {
60 YAML_FIELD_INT (AutomationTrack_v1, schema_version),
61 YAML_FIELD_INT (AutomationTrack_v1, index),
62 YAML_FIELD_MAPPING_EMBEDDED (
64 port_id,
65 port_identifier_fields_schema_v1),
66 YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT (
68 regions,
69 region_schema_v1),
70 YAML_FIELD_INT (AutomationTrack_v1, created),
71 YAML_FIELD_ENUM (AutomationTrack_v1, automation_mode, automation_mode_strings_v1),
72 CYAML_FIELD_ENUM (
73 "record_mode",
74 CYAML_FLAG_DEFAULT | CYAML_FLAG_OPTIONAL,
76 record_mode,
77 automation_record_mode_strings_v1,
78 CYAML_ARRAY_LEN (automation_record_mode_strings_v1)),
79 YAML_FIELD_INT (AutomationTrack_v1, visible),
80 YAML_FIELD_FLOAT (AutomationTrack_v1, height),
81
82 CYAML_FIELD_END
83};
84
85static const cyaml_schema_value_t automation_track_schema_v1 = {
86 YAML_VALUE_PTR (AutomationTrack_v1, automation_track_fields_schema_v1),
87};
88
89#endif
Automation point schema.
Port schema.
Region schema.