Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
modulator_inner.h
1// SPDX-FileCopyrightText: © 2020-2021, 2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __GUI_WIDGETS_MODULATOR_INNER_H__
5#define __GUI_WIDGETS_MODULATOR_INNER_H__
6
7#include "common/utils/types.h"
8#include "gui/backend/gtk_widgets/gtk_wrapper.h"
9
10#define MODULATOR_INNER_WIDGET_TYPE (modulator_inner_widget_get_type ())
11G_DECLARE_FINAL_TYPE (
12 ModulatorInnerWidget,
13 modulator_inner_widget,
14 Z,
15 MODULATOR_INNER_WIDGET,
16 GtkBox)
17
18TYPEDEF_STRUCT_UNDERSCORED (KnobWithNameWidget);
19TYPEDEF_STRUCT_UNDERSCORED (LiveWaveformWidget);
20TYPEDEF_STRUCT_UNDERSCORED (ModulatorWidget);
21TYPEDEF_STRUCT_UNDERSCORED (PortConnectionsPopoverWidget);
22class Port;
23
24using ModulatorInnerWidget = struct _ModulatorInnerWidget
25{
26 GtkBox parent_instance;
27
28 GtkBox * toolbar;
29
30 GtkToggleButton * show_hide_ui_btn;
31
32 GtkBox * controls_box;
33 GtkBox * waveforms_box;
34
35 std::vector<KnobWithNameWidget *> knobs;
36
38 GtkOverlay * waveform_overlays[16];
39 GtkButton * waveform_automate_buttons[16];
40 LiveWaveformWidget * waveforms[16];
41 int num_waveforms;
42
43 Port * ports[16];
44
46 ModulatorWidget * parent;
47
48 PortConnectionsPopoverWidget * connections_popover;
49};
50
51void
52modulator_inner_widget_refresh (ModulatorInnerWidget * self);
53
57ModulatorInnerWidget *
58modulator_inner_widget_new (ModulatorWidget * parent);
59
60#endif
struct _LiveWaveformWidget { GtkDrawingArea parent_instance; LiveWaveformType type; int draw_border; std::unique_ptr< juce::AudioSampleBuffer > buffer; AudioPort *port;} LiveWaveformWidget
Live waveform display like LMMS.
A vertical box with a knob at the top and a name at the bottom.