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 Input,
19 Output
20};
21
25enum class PortType : std::uint8_t
26{
27 Audio,
28 Midi,
29 CV
30};
31
32using PortUuid = utils::UuidIdentifiableObject<Port>::Uuid;
33
34class MidiPort;
35class AudioPort;
36class CVPort;
37using PortVariant = std::variant<MidiPort, AudioPort, CVPort>;
38using PortPtrVariant = to_pointer_variant<PortVariant>;
39
40template <typename T>
42 std::is_same_v<T, MidiPort> || std::is_same_v<T, AudioPort>
43 || std::is_same_v<T, CVPort>;
44};
45
46DEFINE_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