Loading...
Searching...
No Matches
MoveNotes.hpp
1#pragma once
2#include <Midi/Commands/CommandFactory.hpp>
3#include <Midi/MidiNote.hpp>
4
5#include <score/model/path/Path.hpp>
6#include <score/tools/Unused.hpp>
7
8#include <QVector>
9
10namespace Midi
11{
12class ProcessModel;
13
14class MoveNotes final : public score::Command
15{
16 SCORE_COMMAND_DECL(Midi::CommandFactoryName(), MoveNotes, "Move notes")
17public:
19 const ProcessModel& model, const std::vector<Id<Note>>& to_move, int note_delta,
20 double t_delta);
21
22 void undo(const score::DocumentContext& ctx) const override;
23 void redo(const score::DocumentContext& ctx) const override;
24
25 void update(unused_t, unused_t, int note_delta, double t_delta);
26
27protected:
28 void serializeImpl(DataStreamInput& s) const override;
29 void deserializeImpl(DataStreamOutput& s) override;
30
31private:
32 void updateRange();
33
34 Path<ProcessModel> m_model;
35 std::vector<std::pair<Id<Note>, NoteData>> m_before, m_after;
37 std::pair<int, int> m_rangeBefore{}, m_rangeAfter{};
38};
39
41{
42 SCORE_COMMAND_DECL(Midi::CommandFactoryName(), ChangeNotesVelocity, "Change velocity")
43public:
45 const ProcessModel& model, const std::vector<Id<Note>>& to_update,
46 double vel_delta);
47
48 void undo(const score::DocumentContext& ctx) const override;
49 void redo(const score::DocumentContext& ctx) const override;
50
51 void update(unused_t, unused_t, double vel_delta);
52
53protected:
54 void serializeImpl(DataStreamInput& s) const override;
55 void deserializeImpl(DataStreamOutput& s) override;
56
57private:
58 Path<ProcessModel> m_model;
59 std::vector<std::pair<Id<Note>, NoteData>> m_before, m_after;
60};
61}
Definition MoveNotes.hpp:41
Definition MoveNotes.hpp:15
Definition MidiProcess.hpp:15
The Path class is a typesafe wrapper around ObjectPath.
Definition Path.hpp:52
The id_base_t class.
Definition Identifier.hpp:59
The Command class.
Definition Command.hpp:34
Definition DataStreamHelpers.hpp:99
Definition DataStreamHelpers.hpp:103
Definition MidiNote.hpp:12
Definition DocumentContext.hpp:18
Definition Unused.hpp:3