16 dsp::MusicalNote rootNote = dsp::MusicalNote::C;
17 dsp::ChordType type = dsp::ChordType::None;
18 dsp::ChordAccent accent = dsp::ChordAccent::None;
20 std::optional<dsp::MusicalNote> bass = std::nullopt;
25 d.rootNote (), d.chordType (), d.chordAccent (), d.inversion (),
26 d.hasBass () ? std::optional (d.bassNote ()) : std::nullopt
32 d.setRootNote (rootNote);
33 d.setChordType (type);
34 d.setChordAccent (accent);
35 d.setInversion (inversion);
36 if (bass.has_value ())
38 d.setBassNote (*bass);
127class ReplaceAllChordPadsCommand :
public QUndoCommand
130 ReplaceAllChordPadsCommand (
132 std::vector<ChordPadState> after,
133 const QString &text = QObject::tr (
"Replace Chord Pads"))
134 : QUndoCommand (text), bank_ (bank), after_ (std::move (after))
136 const auto count = bank.rowCount ();
137 before_.reserve (count);
138 for (
int i = 0; i < count; ++i)
140 before_.push_back (ChordPadState::from_descriptor (*bank.chordAt (i)));
144 void redo ()
override;
145 void undo ()
override;
148 static void apply_states (
150 const std::vector<ChordPadState> &states);
153 std::vector<ChordPadState> before_;
154 std::vector<ChordPadState> after_;