Loading...
Searching...
No Matches
ScaleNotes.hpp
1#pragma once
2#include <Midi/Commands/CommandFactory.hpp>
3#include <Midi/MidiNote.hpp>
4
5#include <score/command/AggregateCommand.hpp>
6#include <score/model/path/Path.hpp>
7
8namespace Midi
9{
10class ProcessModel;
11
12class ScaleNotes final : public score::Command
13{
14 SCORE_COMMAND_DECL(Midi::CommandFactoryName(), ScaleNotes, "Scale notes")
15public:
17 const ProcessModel& model, const std::vector<Id<Note>>& to_move, double delta);
18
19 void undo(const score::DocumentContext& ctx) const override;
20 void redo(const score::DocumentContext& ctx) const override;
21
22protected:
23 void serializeImpl(DataStreamInput& s) const override;
24 void deserializeImpl(DataStreamOutput& s) override;
25
26private:
27 Path<ProcessModel> m_model;
30 std::vector<std::pair<Id<Note>, std::pair<double, double>>> m_durations;
31};
32
33// sclaes the whole process
34class RescaleMidi final : public score::Command
35{
36 SCORE_COMMAND_DECL(Midi::CommandFactoryName(), RescaleMidi, "Rescale midi")
37public:
38 RescaleMidi(const ProcessModel& model, double delta);
39
40 void undo(const score::DocumentContext& ctx) const override;
41 void redo(const score::DocumentContext& ctx) const override;
42
43protected:
44 void serializeImpl(DataStreamInput& s) const override;
45 void deserializeImpl(DataStreamOutput& s) override;
46
47private:
48 Path<ProcessModel> m_model;
49 std::vector<std::pair<Id<Note>, NoteData>> m_old;
50 double m_delta{};
51};
53{
54 SCORE_COMMAND_DECL(Midi::CommandFactoryName(), RescaleAllMidi, "Rescale all midi")
55public:
56};
57}
Definition MidiProcess.hpp:15
Definition ScaleNotes.hpp:53
Definition ScaleNotes.hpp:35
Definition ScaleNotes.hpp:13
The Path class is a typesafe wrapper around ObjectPath.
Definition Path.hpp:52
The id_base_t class.
Definition Identifier.hpp:59
Allows for grouping of multiple commands in a single one.
Definition AggregateCommand.hpp:15
The Command class.
Definition Command.hpp:34
Definition DataStreamHelpers.hpp:99
Definition DataStreamHelpers.hpp:103
Definition MidiNote.hpp:12
Definition DocumentContext.hpp:18