Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
region.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#ifndef __SCHEMAS_AUDIO_REGION_H__
10#define __SCHEMAS_AUDIO_REGION_H__
11
18#include "utils/yaml.h"
19
20typedef enum RegionMusicalMode_v1
21{
22 REGION_MUSICAL_MODE_INHERIT_v1,
23 REGION_MUSICAL_MODE_OFF_v1,
24 REGION_MUSICAL_MODE_ON_v1,
25} RegionMusicalMode_v1;
26
27static const cyaml_strval_t region_musical_mode_strings_v1[] = {
28 { "Inherit", REGION_MUSICAL_MODE_INHERIT_v1 },
29 { "Off", REGION_MUSICAL_MODE_OFF_v1 },
30 { "On", REGION_MUSICAL_MODE_ON_v1 },
31};
32
33typedef struct ZRegion_v1
34{
36 int schema_version;
38 char * name;
39 MidiNote_v1 ** midi_notes;
40 int num_midi_notes;
41 int pool_id;
42 float gain;
43 RegionMusicalMode_v1 musical_mode;
44 AutomationPoint_v1 ** aps;
45 int num_aps;
46 ChordObject_v1 ** chord_objects;
47 int num_chord_objects;
49
50static const cyaml_schema_field_t region_fields_schema_v1[] = {
51 YAML_FIELD_INT (ZRegion_v1, schema_version),
52 YAML_FIELD_MAPPING_EMBEDDED (ZRegion_v1, base, arranger_object_fields_schema_v1),
53 YAML_FIELD_MAPPING_EMBEDDED (ZRegion_v1, id, region_identifier_fields_schema_v1),
54 YAML_FIELD_STRING_PTR (ZRegion_v1, name),
55 YAML_FIELD_INT (ZRegion_v1, pool_id),
56 YAML_FIELD_FLOAT (ZRegion_v1, gain),
57 CYAML_FIELD_SEQUENCE_COUNT (
58 "midi_notes",
59 CYAML_FLAG_POINTER | CYAML_FLAG_OPTIONAL,
61 midi_notes,
62 num_midi_notes,
63 &midi_note_schema_v1,
64 0,
65 CYAML_UNLIMITED),
66 CYAML_FIELD_SEQUENCE_COUNT (
67 "aps",
68 CYAML_FLAG_POINTER | CYAML_FLAG_OPTIONAL,
70 aps,
71 num_aps,
72 &automation_point_schema_v1,
73 0,
74 CYAML_UNLIMITED),
75 CYAML_FIELD_SEQUENCE_COUNT (
76 "chord_objects",
77 CYAML_FLAG_POINTER | CYAML_FLAG_OPTIONAL,
79 chord_objects,
80 num_chord_objects,
81 &chord_object_schema_v1,
82 0,
83 CYAML_UNLIMITED),
84 YAML_FIELD_IGNORE_OPT ("color"),
85 YAML_FIELD_IGNORE_OPT ("use_color"),
86 YAML_FIELD_ENUM (ZRegion_v1, musical_mode, region_musical_mode_strings_v1),
87
88 CYAML_FIELD_END
89};
90
91static const cyaml_schema_value_t region_schema_v1 = {
92 YAML_VALUE_PTR_NULLABLE (ZRegion_v1, region_fields_schema_v1),
93};
94
95#endif
Automation point schema.
Chord object schema.
MIDI note schema.
Arranger object schema.
Position schema.
Region identifier schema.
YAML utils.