Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
port_fwd.h
1// SPDX-FileCopyrightText: © 2018-2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "utils/uuid_identifiable_object.h"
7#include "utils/variant_helpers.h"
8
9namespace zrythm::dsp
10{
11class Port;
12
16enum class PortFlow : std::uint8_t
17{
18 Unknown,
19 Input,
20 Output
21};
22
26enum class PortType : std::uint8_t
27{
28 Unknown,
29 Audio,
30 Midi,
31 CV
32};
33
34using PortUuid = utils::UuidIdentifiableObject<Port>::Uuid;
35
36class MidiPort;
37class AudioPort;
38class CVPort;
39using PortVariant = std::variant<MidiPort, AudioPort, CVPort>;
40using PortPtrVariant = to_pointer_variant<PortVariant>;
41
42template <typename T>
44 std::is_same_v<T, MidiPort> || std::is_same_v<T, AudioPort>
45 || std::is_same_v<T, CVPort>;
46};
47
48DEFINE_UUID_HASH_SPECIALIZATION (zrythm::dsp::PortUuid)
Audio port specifics.
Definition audio_port.h:25
Control Voltage port.
Definition cv_port.h:26
MIDI port specifics.
Definition midi_port.h:22
A base class for ports used for connecting processors in the DSP graph.
Definition port.h:30