6#include "utils/uuid_identifiable_object.h"
7#include "utils/variant_helpers.h"
9namespace zrythm::structure::tracks
27using TrackVariant = std::variant<
40using TrackPtrVariant = to_pointer_variant<TrackVariant>;
41using TrackRefVariant = to_reference_variant<TrackVariant>;
42using TrackConstRefVariant = to_const_reference_variant<TrackVariant>;
43using TrackUniquePtrVariant = to_unique_ptr_variant<TrackVariant>;
44using OptionalTrackPtrVariant = std::optional<TrackPtrVariant>;
46using TrackUuid = utils::UuidIdentifiableObject<Track>::Uuid;
49 utils::UuidIdentifiablObjectResolver<TrackPtrVariant, TrackUuid>;
51template <
typename TrackT>
53 std::is_same_v<TrackT, MarkerTrack> || std::is_same_v<TrackT, InstrumentTrack>
54 || std::is_same_v<TrackT, MidiTrack> || std::is_same_v<TrackT, MasterTrack>
55 || std::is_same_v<TrackT, MidiGroupTrack>
56 || std::is_same_v<TrackT, AudioGroupTrack>
57 || std::is_same_v<TrackT, FolderTrack> || std::is_same_v<TrackT, MidiBusTrack>
58 || std::is_same_v<TrackT, AudioBusTrack> || std::is_same_v<TrackT, AudioTrack>
59 || std::is_same_v<TrackT, ChordTrack>
60 || std::is_same_v<TrackT, ModulatorTrack>;
62template <
typename TrackT>
64 std::is_same_v<TrackT, AudioGroupTrack>
65 || std::is_same_v<TrackT, MidiGroupTrack>
66 || std::is_same_v<TrackT, FolderTrack>;
68template <
typename TrackT>
70 std::is_same_v<TrackT, AudioTrack> || std::is_same_v<TrackT, ChordTrack>
71 || std::is_same_v<TrackT, InstrumentTrack>
72 || std::is_same_v<TrackT, MidiTrack>;
74template <
typename TrackT>
76 std::is_same_v<TrackT, InstrumentTrack> || std::is_same_v<TrackT, MidiTrack>
77 || std::is_same_v<TrackT, MasterTrack>
78 || std::is_same_v<TrackT, MidiGroupTrack>
79 || std::is_same_v<TrackT, AudioGroupTrack>
80 || std::is_same_v<TrackT, MidiBusTrack>
81 || std::is_same_v<TrackT, AudioBusTrack> || std::is_same_v<TrackT, AudioTrack>
82 || std::is_same_v<TrackT, ChordTrack>;
84template <
typename TrackT>
88template <
typename TrackT>
90 std::is_same_v<TrackT, InstrumentTrack> || std::is_same_v<TrackT, MidiTrack>;
92enum class ClipQuantizeOption : uint8_t
102Q_ENUM_NS (ClipQuantizeOption)
105DEFINE_UUID_HASH_SPECIALIZATION (zrythm::structure::tracks::TrackUuid);
An audio bus track that can be processed and has channels.
A track that can be folded and can be a target for other tracks.
Track containing AudioRegion's.
The ChordTrack class is responsible for managing the chord and scale information in the project.
A track that can contain other tracks.
A track that processes MIDI data.
A track that can host modulator plugins.
Represents a track in the project.