Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
singleton_tracks.h
1// SPDX-FileCopyrightText: © 2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "structure/tracks/track.h"
7
8namespace zrythm::structure::tracks
9{
10class ChordTrack;
11class ModulatorTrack;
12class MasterTrack;
13class MarkerTrack;
14
18class SingletonTracks : public QObject
19{
20 Q_OBJECT
21 Q_PROPERTY (
22 zrythm::structure::tracks::ChordTrack * chordTrack READ chordTrack WRITE
23 setChordTrack NOTIFY chordTrackChanged)
24 Q_PROPERTY (
26 modulatorTrack WRITE setModulatorTrack NOTIFY modulatorTrackChanged)
27 Q_PROPERTY (
28 zrythm::structure::tracks::MasterTrack * masterTrack READ masterTrack WRITE
29 setMasterTrack NOTIFY masterTrackChanged)
30 Q_PROPERTY (
31 zrythm::structure::tracks::MarkerTrack * markerTrack READ markerTrack WRITE
32 setMarkerTrack NOTIFY markerTrackChanged)
33 QML_ELEMENT
34 QML_UNCREATABLE ("")
35
36public:
37 SingletonTracks (QObject * parent = nullptr) : QObject (parent) { }
38
39 ChordTrack * chordTrack () const { return chord_track_; }
40 ModulatorTrack * modulatorTrack () const { return modulator_track_; }
41 MasterTrack * masterTrack () const { return master_track_; }
42 MarkerTrack * markerTrack () const { return marker_track_; }
43
44 void setChordTrack (ChordTrack * track)
45 {
46 if (chord_track_ != track)
47 {
48 chord_track_ = track;
49 Q_EMIT chordTrackChanged ();
50 }
51 }
52
53 void setModulatorTrack (ModulatorTrack * track)
54 {
55 if (modulator_track_ != track)
56 {
57 modulator_track_ = track;
58 Q_EMIT modulatorTrackChanged ();
59 }
60 }
61
62 void setMasterTrack (MasterTrack * track)
63 {
64 if (master_track_ != track)
65 {
66 master_track_ = track;
67 Q_EMIT masterTrackChanged ();
68 }
69 }
70
71 void setMarkerTrack (MarkerTrack * track)
72 {
73 if (marker_track_ != track)
74 {
75 marker_track_ = track;
76 Q_EMIT markerTrackChanged ();
77 }
78 }
79
80Q_SIGNALS:
81 void chordTrackChanged ();
82 void modulatorTrackChanged ();
83 void masterTrackChanged ();
84 void markerTrackChanged ();
85
86private:
87 QPointer<ChordTrack> chord_track_;
88 QPointer<ModulatorTrack> modulator_track_;
89 QPointer<MasterTrack> master_track_;
90 QPointer<MarkerTrack> marker_track_;
91};
92}
The ChordTrack class is responsible for managing the chord and scale information in the project.
Definition chord_track.h:21
A track that can host modulator plugins.