Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
ext_port.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2019-2022 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __SCHEMAS_AUDIO_EXT_PORT_H__
5#define __SCHEMAS_AUDIO_EXT_PORT_H__
6
12
13#include "utils/types.h"
14#include "utils/yaml.h"
15
16typedef enum ExtPortType_v1
17{
18 EXT_PORT_TYPE_JACK_v1,
19 EXT_PORT_TYPE_ALSA_v1,
20 EXT_PORT_TYPE_WINDOWS_MME_v1,
21 EXT_PORT_TYPE_RTMIDI_v1,
22 EXT_PORT_TYPE_RTAUDIO_v1,
23} ExtPortType_v1;
24
25static const cyaml_strval_t ext_port_type_strings_v1[] = {
26 { "JACK", EXT_PORT_TYPE_JACK_v1 },
27 { "ALSA", EXT_PORT_TYPE_ALSA_v1 },
28 { "Windows MME", EXT_PORT_TYPE_WINDOWS_MME_v1 },
29 { "RtMidi", EXT_PORT_TYPE_RTMIDI_v1 },
30 { "RtAudio", EXT_PORT_TYPE_RTAUDIO_v1 },
31};
32
33typedef struct ExtPort_v1
34{
35 int schema_version;
36 void * jport;
37 char * full_name;
38 char * short_name;
39 char * alias1;
40 char * alias2;
41 int num_aliases;
42 void * mme_dev;
43 unsigned int rtaudio_channel_idx;
44 char * rtaudio_dev_name;
45 unsigned int rtaudio_id;
46 bool rtaudio_is_input;
47 bool rtaudio_is_duplex;
48 void * rtaudio_dev;
49 unsigned int rtmidi_id;
50 void * rtmidi_dev;
51 ExtPortType_v1 type;
52 bool is_midi;
53 int hw_processor_index;
54 bool active;
55 void * port;
57
58static const cyaml_schema_field_t ext_port_fields_schema_v1[] = {
59 YAML_FIELD_INT (ExtPort_v1, schema_version),
60 YAML_FIELD_STRING_PTR (ExtPort_v1, full_name),
61 YAML_FIELD_STRING_PTR_OPTIONAL (ExtPort_v1, short_name),
62 YAML_FIELD_STRING_PTR_OPTIONAL (ExtPort_v1, alias1),
63 YAML_FIELD_STRING_PTR_OPTIONAL (ExtPort_v1, alias2),
64 YAML_FIELD_STRING_PTR_OPTIONAL (ExtPort_v1, rtaudio_dev_name),
65 YAML_FIELD_INT (ExtPort_v1, num_aliases),
66 YAML_FIELD_INT (ExtPort_v1, is_midi),
67 YAML_FIELD_ENUM (ExtPort_v1, type, ext_port_type_strings_v1),
68 YAML_FIELD_UINT (ExtPort_v1, rtaudio_channel_idx),
69
70 CYAML_FIELD_END
71};
72
73static const cyaml_schema_value_t ext_port_schema_v1 = {
74 YAML_VALUE_PTR (ExtPort_v1, ext_port_fields_schema_v1),
75};
76
77#endif
Custom types.
YAML utils.