Zrythm v2.0.0-alpha.1+31.4967fd053471
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
chord_pad_bank_operator.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "commands/chord_pad_commands.h"
7#include "dsp/chord_preset.h"
8#include "structure/project/chord_pad_bank.h"
9#include "undo/undo_stack.h"
10
11#include <QtQmlIntegration/qqmlintegration.h>
12
13namespace zrythm::actions
14{
15
16class ChordPadBankOperator : public QObject
17{
18 Q_OBJECT
19 Q_PROPERTY (
20 zrythm::structure::project::ChordPadBank * chordPadBank READ chordPadBank
21 WRITE setChordPadBank NOTIFY chordPadBankChanged)
22 Q_PROPERTY (
23 zrythm::undo::UndoStack * undoStack READ undoStack WRITE setUndoStack NOTIFY
24 undoStackChanged)
25 QML_ELEMENT
26
27public:
28 explicit ChordPadBankOperator (QObject * parent = nullptr) : QObject (parent)
29 {
30 }
31
32 structure::project::ChordPadBank * chordPadBank () const { return bank_; }
33 void setChordPadBank (structure::project::ChordPadBank * bank)
34 {
35 if (bank_ != bank)
36 {
37 bank_ = bank;
38 Q_EMIT chordPadBankChanged ();
39 }
40 }
41 Q_SIGNAL void chordPadBankChanged ();
42
43 undo::UndoStack * undoStack () const { return undo_stack_; }
44 void setUndoStack (undo::UndoStack * stack)
45 {
46 if (undo_stack_ != stack)
47 {
48 undo_stack_ = stack;
49 Q_EMIT undoStackChanged ();
50 }
51 }
52 Q_SIGNAL void undoStackChanged ();
53
54 Q_INVOKABLE void editPad (
55 int index,
56 zrythm::dsp::MusicalNote rootNote,
57 zrythm::dsp::ChordType type,
58 zrythm::dsp::ChordAccent accent,
59 int inversion,
60 bool hasBass,
61 zrythm::dsp::MusicalNote bassNote);
62 Q_INVOKABLE void addPad (
63 zrythm::dsp::MusicalNote rootNote,
64 zrythm::dsp::ChordType type,
65 zrythm::dsp::ChordAccent accent = zrythm::dsp::ChordAccent::None,
66 int inversion = 0,
67 bool hasBass = false,
68 zrythm::dsp::MusicalNote bassNote = zrythm::dsp::MusicalNote::C);
69 Q_INVOKABLE void removePad (int index);
70 Q_INVOKABLE void movePad (int from, int to);
71 Q_INVOKABLE void transposePads (bool up);
72 Q_INVOKABLE void applyPresetFromScale (
74 zrythm::dsp::MusicalNote rootNote);
75 Q_INVOKABLE void applyPreset (ChordPreset * preset);
76
77private:
79 undo::UndoStack * undo_stack_{};
80};
81
82}
A named collection of chord descriptors, optionally grouped by category.
ScaleType
Scale type (name) eg Aeolian.
A list model of chord descriptors for the chord pad panel.