Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
midi_mapping_action.h
1// SPDX-FileCopyrightText: © 2020-2022, 2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "dsp/parameter.h"
7#include "gui/backend/backend/actions/undoable_action.h"
8#include "utils/icloneable.h"
9#include "utils/types.h"
10
11namespace zrythm::gui::actions
12{
13
17class MidiMappingAction : public QObject, public UndoableAction
18{
19 Q_OBJECT
20 QML_ELEMENT
21 DEFINE_UNDOABLE_ACTION_QML_PROPERTIES (MidiMappingAction)
22
23public:
24 enum class Type
25 {
26 Bind,
27 Unbind,
28 Enable,
29 Disable,
30 };
31
32public:
33 MidiMappingAction (QObject * parent = nullptr);
34
40 MidiMappingAction (int idx_to_enable_or_disable, bool enable);
41
45 MidiMappingAction (int idx_to_unbind);
46
55 std::array<midi_byte_t, 3> buf,
56 std::optional<utils::Utf8String> device_id,
57 const dsp::ProcessorParameter &dest_port);
58
59 QString to_string () const override;
60
61 friend void init_from (
62 MidiMappingAction &obj,
63 const MidiMappingAction &other,
64 utils::ObjectCloneType clone_type);
65
66private:
67 void init_loaded_impl () override { }
68 void perform_impl () override;
69 void undo_impl () override;
70
71 void bind_or_unbind (bool bind);
72
73public:
75 int idx_ = -1;
76
78 Type type_{};
79
80 std::optional<dsp::ProcessorParameter::Uuid> dest_port_id_;
81
82 std::optional<utils::Utf8String> dev_id_;
83
84 std::array<midi_byte_t, 3> buf_{};
85};
86
87}; // namespace zrythm::gui::actions
Processor parameter that accepts automation and modulation sources and integrates with QML and the DS...
Definition parameter.h:225
MidiMappingAction(std::array< midi_byte_t, 3 > buf, std::optional< utils::Utf8String > device_id, const dsp::ProcessorParameter &dest_port)
Construct a new action for binding a MIDI mapping.
QString to_string() const override
Stringizes the action to be used in Undo/Redo buttons.
MidiMappingAction(int idx_to_enable_or_disable, bool enable)
Create a new action for enabling/disabling a MIDI mapping.
int idx_
Index of mapping, if enable/disable.
MidiMappingAction(int idx_to_unbind)
Construct a new action for unbinding a MIDI mapping.