10#ifndef __SCHEMAS_PROJECT_H__
11#define __SCHEMAS_PROJECT_H__
13#include "zrythm-config.h"
19# include "gui/backend/backend/cyaml_schemas/dsp/port_connections_manager.h"
30# include "gui/backend/backend/cyaml_schemas/gui/backend/timeline.h"
34typedef enum SelectionType_v1
36 Z_PROJECT_SELECTION_TYPE_TRACKLIST_v1,
37 Z_PROJECT_SELECTION_TYPE_TIMELINE_v1,
38 Z_PROJECT_SELECTION_TYPE_INSERT_v1,
39 Z_PROJECT_SELECTION_TYPE_MIDI_FX_v1,
40 Z_PROJECT_SELECTION_TYPE_INSTRUMENT_v1,
41 Z_PROJECT_SELECTION_TYPE_MODULATOR_v1,
42 Z_PROJECT_SELECTION_TYPE_EDITOR_v1,
45static const cyaml_strval_t selection_type_strings_v1[] = {
46 {
"Tracklist", Z_PROJECT_SELECTION_TYPE_TRACKLIST_v1 },
47 {
"Timeline", Z_PROJECT_SELECTION_TYPE_TIMELINE_v1 },
48 {
"Insert", Z_PROJECT_SELECTION_TYPE_INSERT_v1 },
49 {
"MIDI FX", Z_PROJECT_SELECTION_TYPE_MIDI_FX_v1 },
50 {
"Instrument", Z_PROJECT_SELECTION_TYPE_INSTRUMENT_v1 },
51 {
"Modulator", Z_PROJECT_SELECTION_TYPE_MODULATOR_v1 },
52 {
"Editor", Z_PROJECT_SELECTION_TYPE_EDITOR_v1 },
55typedef struct Project_v1
61 Tracklist_v1 * tracklist;
62 ClipEditor_v1 * clip_editor;
63 Timeline_v1 * timeline;
64 SnapGrid_v1 * snap_grid_timeline;
65 QuantizeOptions_v1 * quantize_opts_timeline;
66 SnapGrid_v1 * snap_grid_editor;
67 QuantizeOptions_v1 * quantize_opts_editor;
68 TracklistSelections_v1 * tracklist_selections;
69 RegionLinkGroupManager_v1 * region_link_group_manager;
70 PortConnectionsManager_v1 * port_connections_manager;
71 AudioEngine_v1 * audio_engine;
72 MidiMappings_v1 * midi_mappings;
73 SelectionType_v1 last_selection;
76static const cyaml_schema_field_t project_fields_schema_v1[] = {
77 YAML_FIELD_INT (Project_v1, schema_version),
78 YAML_FIELD_STRING_PTR (Project_v1, title),
79 YAML_FIELD_STRING_PTR (Project_v1, datetime_str),
80 YAML_FIELD_STRING_PTR (Project_v1, version),
81 YAML_FIELD_MAPPING_PTR (Project_v1, tracklist, tracklist_fields_schema_v1),
82 YAML_FIELD_MAPPING_PTR (Project_v1, clip_editor, clip_editor_fields_schema_v1),
83 YAML_FIELD_MAPPING_PTR (Project_v1, timeline, timeline_fields_schema_v1),
84 YAML_FIELD_MAPPING_PTR (
87 snap_grid_fields_schema_v1),
88 YAML_FIELD_MAPPING_PTR (Project_v1, snap_grid_editor, snap_grid_fields_schema_v1),
89 YAML_FIELD_MAPPING_PTR (
91 quantize_opts_timeline,
92 quantize_options_fields_schema_v1),
93 YAML_FIELD_MAPPING_PTR (
96 quantize_options_fields_schema_v1),
97 YAML_FIELD_MAPPING_PTR (Project_v1, audio_engine, engine_fields_schema_v1),
98 YAML_FIELD_IGNORE_OPT (
"mixer_selections"),
99 YAML_FIELD_IGNORE_OPT (
"timeline_selections"),
100 YAML_FIELD_IGNORE_OPT (
"midi_arranger_selections"),
101 YAML_FIELD_IGNORE_OPT (
"automation_selections"),
102 YAML_FIELD_IGNORE_OPT (
"chord_selections"),
103 YAML_FIELD_IGNORE_OPT (
"audio_selections"),
104 YAML_FIELD_MAPPING_PTR (
106 tracklist_selections,
107 tracklist_selections_fields_schema_v1),
108 YAML_FIELD_MAPPING_PTR (
110 region_link_group_manager,
111 region_link_group_manager_fields_schema_v1),
112 YAML_FIELD_MAPPING_PTR (
114 port_connections_manager,
115 port_connections_manager_fields_schema_v1),
116 YAML_FIELD_MAPPING_PTR (Project_v1, midi_mappings, midi_mappings_fields_schema_v1),
118 YAML_FIELD_IGNORE_OPT (
"undo_manager"),
119 YAML_FIELD_ENUM (Project_v1, last_selection, selection_type_strings_v1),
124static const cyaml_schema_value_t project_schema_v1 = {
125 YAML_VALUE_PTR (Project_v1, project_fields_schema_v1),
129typedef struct Project_v5
135 Tracklist_v2 * tracklist;
136 ClipEditor_v1 * clip_editor;
137 Timeline_v1 * timeline;
138 SnapGrid_v1 * snap_grid_timeline;
139 QuantizeOptions_v1 * quantize_opts_timeline;
140 SnapGrid_v1 * snap_grid_editor;
141 QuantizeOptions_v1 * quantize_opts_editor;
142 TracklistSelections_v2 * tracklist_selections;
143 RegionLinkGroupManager_v1 * region_link_group_manager;
144 PortConnectionsManager_v1 * port_connections_manager;
145 AudioEngine_v2 * audio_engine;
146 MidiMappings_v1 * midi_mappings;
147 SelectionType_v1 last_selection;
150static const cyaml_schema_field_t project_fields_schema_v5[] = {
151 YAML_FIELD_INT (Project_v5, schema_version),
152 YAML_FIELD_STRING_PTR (Project_v5, title),
153 YAML_FIELD_STRING_PTR (Project_v5, datetime_str),
154 YAML_FIELD_STRING_PTR (Project_v5, version),
155 YAML_FIELD_MAPPING_PTR (Project_v5, tracklist, tracklist_fields_schema_v2),
156 YAML_FIELD_MAPPING_PTR (Project_v5, clip_editor, clip_editor_fields_schema_v1),
157 YAML_FIELD_MAPPING_PTR (Project_v5, timeline, timeline_fields_schema_v1),
158 YAML_FIELD_MAPPING_PTR (
161 snap_grid_fields_schema_v1),
162 YAML_FIELD_MAPPING_PTR (Project_v5, snap_grid_editor, snap_grid_fields_schema_v1),
163 YAML_FIELD_MAPPING_PTR (
165 quantize_opts_timeline,
166 quantize_options_fields_schema_v1),
167 YAML_FIELD_MAPPING_PTR (
169 quantize_opts_editor,
170 quantize_options_fields_schema_v1),
171 YAML_FIELD_MAPPING_PTR (Project_v5, audio_engine, engine_fields_schema_v2),
172 YAML_FIELD_IGNORE_OPT (
"mixer_selections"),
173 YAML_FIELD_IGNORE_OPT (
"timeline_selections"),
174 YAML_FIELD_IGNORE_OPT (
"midi_arranger_selections"),
175 YAML_FIELD_IGNORE_OPT (
"automation_selections"),
176 YAML_FIELD_IGNORE_OPT (
"chord_selections"),
177 YAML_FIELD_IGNORE_OPT (
"audio_selections"),
178 YAML_FIELD_MAPPING_PTR (
180 tracklist_selections,
181 tracklist_selections_fields_schema_v2),
182 YAML_FIELD_MAPPING_PTR (
184 region_link_group_manager,
185 region_link_group_manager_fields_schema_v1),
186 YAML_FIELD_MAPPING_PTR (
188 port_connections_manager,
189 port_connections_manager_fields_schema_v1),
190 YAML_FIELD_MAPPING_PTR (Project_v5, midi_mappings, midi_mappings_fields_schema_v1),
192 YAML_FIELD_IGNORE_OPT (
"undo_manager"),
193 YAML_FIELD_ENUM (Project_v5, last_selection, selection_type_strings_v1),
198static const cyaml_schema_value_t project_schema_v5 = {
199 YAML_VALUE_PTR (Project_v5, project_fields_schema_v5),
209zrythm::utils::string::CStringRAII
210project_v5_serialize_to_json_str (
const Project_v5 * prj);
Automation selections schema.
Region link group manager schema.
API for selections in the piano roll.
Timeline selections schema.
Tracklist selections schema.