10#ifndef __SCHEMAS_AUDIO_FADER_H__
11#define __SCHEMAS_AUDIO_FADER_H__
17typedef enum FaderType_v1
20 FADER_TYPE_MONITOR_v1,
21 FADER_TYPE_SAMPLE_PROCESSOR_v1,
22 FADER_TYPE_AUDIO_CHANNEL_v1,
23 FADER_TYPE_MIDI_CHANNEL_v1,
24 FADER_TYPE_GENERIC_v1,
27static const cyaml_strval_t fader_type_strings_v1[] = {
28 {
"none", FADER_TYPE_NONE_v1 },
29 {
"monitor", FADER_TYPE_MONITOR_v1 },
30 {
"sample processor", FADER_TYPE_SAMPLE_PROCESSOR_v1 },
31 {
"audio channel", FADER_TYPE_AUDIO_CHANNEL_v1 },
32 {
"midi channel", FADER_TYPE_MIDI_CHANNEL_v1 },
33 {
"generic", FADER_TYPE_GENERIC_v1 },
36typedef enum MidiFaderMode_v1
38 MIDI_FADER_MODE_VEL_MULTIPLIER_v1,
39 MIDI_FADER_MODE_CC_VOLUME_v1,
42static const cyaml_strval_t midi_fader_mode_strings_v1[] = {
43 {
"vel_multiplier", MIDI_FADER_MODE_VEL_MULTIPLIER_v1 },
44 {
"cc_volume", MIDI_FADER_MODE_CC_VOLUME_v1 },
63 MidiFaderMode_v1 midi_mode;
67static const cyaml_schema_field_t fader_fields_schema_v1[] = {
68 YAML_FIELD_INT (
Fader_v1, schema_version),
69 YAML_FIELD_ENUM (
Fader_v1, type, fader_type_strings_v1),
71 YAML_FIELD_MAPPING_PTR (
Fader_v1, amp, port_fields_schema_v1),
73 YAML_FIELD_MAPPING_PTR (
Fader_v1, balance, port_fields_schema_v1),
74 YAML_FIELD_MAPPING_PTR (
Fader_v1, mute, port_fields_schema_v1),
75 YAML_FIELD_MAPPING_PTR (
Fader_v1, solo, port_fields_schema_v1),
76 YAML_FIELD_MAPPING_PTR (
Fader_v1, listen, port_fields_schema_v1),
77 YAML_FIELD_MAPPING_PTR (
Fader_v1, mono_compat_enabled, port_fields_schema_v1),
78 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Fader_v1, midi_in, port_fields_schema_v1),
79 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Fader_v1, midi_out, port_fields_schema_v1),
80 YAML_FIELD_MAPPING_PTR_OPTIONAL (
83 stereo_ports_fields_schema_v1),
84 YAML_FIELD_MAPPING_PTR_OPTIONAL (
87 stereo_ports_fields_schema_v1),
88 YAML_FIELD_ENUM (
Fader_v1, midi_mode, midi_fader_mode_strings_v1),
89 YAML_FIELD_INT (
Fader_v1, passthrough),
94static const cyaml_schema_value_t fader_schema_v1 = {
95 YAML_VALUE_PTR (
Fader_v1, fader_fields_schema_v1),
115 MidiFaderMode_v1 midi_mode;
119static const cyaml_schema_field_t fader_fields_schema_v2[] = {
120 YAML_FIELD_INT (
Fader_v2, schema_version),
121 YAML_FIELD_ENUM (
Fader_v2, type, fader_type_strings_v1),
122 YAML_FIELD_FLOAT (
Fader_v2, volume),
123 YAML_FIELD_MAPPING_PTR (
Fader_v2, amp, port_fields_schema_v1),
125 YAML_FIELD_MAPPING_PTR (
Fader_v2, balance, port_fields_schema_v1),
126 YAML_FIELD_MAPPING_PTR (
Fader_v2, mute, port_fields_schema_v1),
127 YAML_FIELD_MAPPING_PTR (
Fader_v2, solo, port_fields_schema_v1),
128 YAML_FIELD_MAPPING_PTR (
Fader_v2, listen, port_fields_schema_v1),
129 YAML_FIELD_MAPPING_PTR (
Fader_v2, mono_compat_enabled, port_fields_schema_v1),
130 YAML_FIELD_MAPPING_PTR (
Fader_v2, swap_phase, port_fields_schema_v1),
131 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Fader_v2, midi_in, port_fields_schema_v1),
132 YAML_FIELD_MAPPING_PTR_OPTIONAL (
Fader_v2, midi_out, port_fields_schema_v1),
133 YAML_FIELD_MAPPING_PTR_OPTIONAL (
136 stereo_ports_fields_schema_v1),
137 YAML_FIELD_MAPPING_PTR_OPTIONAL (
140 stereo_ports_fields_schema_v1),
141 YAML_FIELD_ENUM (
Fader_v2, midi_mode, midi_fader_mode_strings_v1),
142 YAML_FIELD_INT (
Fader_v2, passthrough),
147static const cyaml_schema_value_t fader_schema_v2 = {
148 YAML_VALUE_PTR (
Fader_v2, fader_fields_schema_v2),
152fader_upgrade_from_v1 (
Fader_v1 * old);
L & R port, for convenience.