Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
midi_mapping_action.h
1// SPDX-FileCopyrightText: © 2020-2022 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __UNDO_MIDI_MAPPING_ACTION_H__
5#define __UNDO_MIDI_MAPPING_ACTION_H__
6
8#include "dsp/ext_port.h"
9#include "dsp/midi_mapping.h"
10#include "dsp/port_identifier.h"
11#include "utils/types.h"
12
19typedef enum MidiMappingActionType
20{
21 MIDI_MAPPING_ACTION_BIND,
22 MIDI_MAPPING_ACTION_UNBIND,
23 MIDI_MAPPING_ACTION_ENABLE,
24 MIDI_MAPPING_ACTION_DISABLE,
25} MidiMappingActionType;
26
30typedef struct MidiMappingAction
31{
32 UndoableAction parent_instance;
33
35 int idx;
36
38 MidiMappingActionType type;
39
40 PortIdentifier * dest_port_id;
41
42 ExtPort * dev_port;
43
44 midi_byte_t buf[3];
45
47
48void
49midi_mapping_action_init_loaded (MidiMappingAction * self);
50
54WARN_UNUSED_RESULT UndoableAction *
55midi_mapping_action_new_enable (int idx, bool enable, GError ** error);
56
60WARN_UNUSED_RESULT UndoableAction *
62 midi_byte_t * buf,
63 ExtPort * device_port,
64 Port * dest_port,
65 GError ** error);
66
70WARN_UNUSED_RESULT UndoableAction *
71midi_mapping_action_new_unbind (int idx, GError ** error);
72
73NONNULL MidiMappingAction *
74midi_mapping_action_clone (const MidiMappingAction * src);
75
79bool
80midi_mapping_action_perform_enable (int idx, bool enable, GError ** error);
81
85bool
87 midi_byte_t * buf,
88 ExtPort * device_port,
89 Port * dest_port,
90 GError ** error);
91
95bool
96midi_mapping_action_perform_unbind (int idx, GError ** error);
97
98int
99midi_mapping_action_do (MidiMappingAction * self, GError ** error);
100
101int
102midi_mapping_action_undo (MidiMappingAction * self, GError ** error);
103
104char *
105midi_mapping_action_stringize (MidiMappingAction * self);
106
107void
108midi_mapping_action_free (MidiMappingAction * self);
109
114#endif
External ports.
bool midi_mapping_action_perform_unbind(int idx, GError **error)
Wrapper of midi_mapping_action_new_unbind().
bool midi_mapping_action_perform_enable(int idx, bool enable, GError **error)
Wrapper of midi_mapping_action_new_enable().
bool midi_mapping_action_perform_bind(midi_byte_t *buf, ExtPort *device_port, Port *dest_port, GError **error)
Wrapper of midi_mapping_action_new_bind().
WARN_UNUSED_RESULT UndoableAction * midi_mapping_action_new_bind(midi_byte_t *buf, ExtPort *device_port, Port *dest_port, GError **error)
Creates a new action.
WARN_UNUSED_RESULT UndoableAction * midi_mapping_action_new_enable(int idx, bool enable, GError **error)
Creates a new action.
WARN_UNUSED_RESULT UndoableAction * midi_mapping_action_new_unbind(int idx, GError **error)
Creates a new action.
uint8_t midi_byte_t
MIDI byte.
Definition types.h:32
Mapping MIDI CC to controls.
Port identifier.
External port.
Definition ext_port.h:69
MIDI mapping action.
int idx
Index of mapping, if enable/disable.
MidiMappingActionType type
Action type.
Struct used to identify Ports in the project.
Must ONLY be created via port_new()
Definition port.h:139
Base struct to be inherited by implementing undoable actions.
Custom types.
Undoable actions.