hydrogen 1.2.6
MixerLine.h
Go to the documentation of this file.
1/*
2 * Hydrogen
3 * Copyright(c) 2002-2008 by Alex >Comix< Cominu [comix@users.sourceforge.net]
4 * Copyright(c) 2008-2025 The hydrogen development team [hydrogen-devel@lists.sourceforge.net]
5 *
6 * http://www.hydrogen-music.org
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY, without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see https://www.gnu.org/licenses
20 *
21 */
22#ifndef MIXERLINE_H
23#define MIXERLINE_H
24
25#include <QtGui>
26#include <QtWidgets>
27
28#include <core/Object.h>
29#include <core/Globals.h>
31
32class Fader;
33class MasterFader;
34class PanFader;
35class Button;
36class InstrumentPropertiesDialog;
38class LCDDisplay;
39class Rotary;
40class WidgetWithInput;
41class LED;
42class ClickableLabel;
43
46
48class InstrumentNameWidget : public PixmapWidget, public H2Core::Object<InstrumentNameWidget>, protected WidgetWithScalableFont<8, 10, 12>
49{
51 Q_OBJECT
52
53public:
54 explicit InstrumentNameWidget(QWidget* parent);
56
57 void setText(QString text);
58 QString text();
59
60 void mousePressEvent( QMouseEvent * e ) override;
61 void mouseDoubleClickEvent( QMouseEvent * e ) override;
62
63public slots:
65
66signals:
67 void clicked();
69
70protected:
71 virtual void paintEvent(QPaintEvent *ev) override;
72
73private:
76 QString m_sInstrName;
77};
78
82
83class MixerLine: public PixmapWidget, public H2Core::Object<MixerLine>
84{
86 Q_OBJECT
87
88public:
89 MixerLine(QWidget* parent, int nInstr);
90 ~MixerLine();
91
92 void updateMixerLine();
93
94 bool isMuteClicked();
95 void setMuteClicked(bool isClicked);
96
97 bool isSoloClicked();
98 void setSoloClicked(bool isClicked);
99
100 float getVolume();
101 void setVolume(float value);
102
103 void setPeak_L( float peak );
104 float getPeak_L();
105
106 void setPeak_R( float peak );
107 float getPeak_R();
108
109 void setName(QString name) { m_pNameWidget->setText( name ); }
110 QString getName() { return m_pNameWidget->text(); }
111
112 float getPan();
113 void setPan(float value);
114
115 int getActivity() { return m_nActivity; }
116 void setActivity( uint value ) { m_nActivity = value; }
117
118 void setPlayClicked( bool clicked );
119
120 void setFXLevel( uint nFX, float fValue );
121 float getFXLevel( uint nFX );
122
123 void setSelected( bool bIsSelected );
124
125 static constexpr int nWidth = 56;
126 static constexpr int nHeight = 254;
127
128signals:
137 void knobChanged(MixerLine *ref, int nKnob);
138
139public slots:
140 void muteBtnClicked();
141 void soloBtnClicked();
142 void faderChanged(WidgetWithInput *ref);
143 void panChanged(WidgetWithInput *ref);
144 void knobChanged(WidgetWithInput *ref);
145 void nameClicked();
146 void nameSelected();
147
148private:
152
157
167
169};
170
172class ComponentMixerLine: public PixmapWidget, public H2Core::Object<ComponentMixerLine>
173{
175 Q_OBJECT
176
177public:
178 ComponentMixerLine(QWidget* parent, int CompoID);
180
181 void updateMixerLine();
182
183 bool isMuteClicked();
184 void setMuteClicked(bool isClicked);
185
186 bool isSoloClicked();
187 void setSoloClicked(bool isClicked);
188
189 float getVolume();
190 void setVolume(float value);
191
192 void setPeak_L( float peak );
193 float getPeak_L();
194
195 void setPeak_R( float peak );
196 float getPeak_R();
197
198 void setName(QString name) { m_pNameWidget->setText( name ); }
199 QString getName() { return m_pNameWidget->text(); }
200
202
203 static constexpr int nWidth = 56;
204 static constexpr int nHeight = 254;
205
206signals:
210
211public slots:
212 void soloBtnClicked();
213 void muteBtnClicked();
214
215 void faderChanged(WidgetWithInput *ref);
216
217
218private:
223
228
234};
235
237class MasterMixerLine: public PixmapWidget, public H2Core::Object<MasterMixerLine>
238{
240 Q_OBJECT
241
242public:
243 explicit MasterMixerLine(QWidget* parent);
245
246 void updateMixerLine();
247
248 float getVolume();
249 void setVolume(float value);
250
251 void setPeak_L(float peak);
252 float getPeak_L();
253
254 void setPeak_R(float peak);
255 float getPeak_R();
256
257 static constexpr int nWidth = 126;
258 static constexpr int nHeight = 284;
259
260
261signals:
263
264public slots:
265 void faderChanged( WidgetWithInput* pRef);
266 void rotaryChanged( WidgetWithInput *pRef );
267 void muteClicked();
268
269private:
272
276
278
284
286
290
292};
293
295class LadspaFXMixerLine : public PixmapWidget, public H2Core::Object<LadspaFXMixerLine>
296{
298 Q_OBJECT
299
300public:
301 explicit LadspaFXMixerLine(QWidget* parent);
303
304 bool isFxBypassed();
305 void setFxBypassed( bool active );
306
307 void setPeaks( float fPeak_L, float fPeak_R );
308 void getPeaks( float *fPeak_L, float *fPeak_R );
309 void setName( QString name );
310
311 float getVolume();
312 void setVolume( float value );
313
314public slots:
315 void bypassBtnClicked();
316 void editBtnClicked();
317 void rotaryChanged( WidgetWithInput* ref);
318
319signals:
323
324private:
331};
332
333
334#endif
#define H2_OBJECT(name)
Definition Object.h:227
Generic Button with SVG icons or text.
Definition Button.h:60
Custom QLabel that emits a signal when clicked.
void soloBtnClicked(ComponentMixerLine *ref)
void setMuteClicked(bool isClicked)
void setSoloClicked(bool isClicked)
void setVolume(float value)
void muteBtnClicked(ComponentMixerLine *ref)
void faderChanged(WidgetWithInput *ref)
void setName(QString name)
Definition MixerLine.h:198
void setPeak_R(float peak)
Button * m_pMuteBtn
Definition MixerLine.h:231
ComponentMixerLine(QWidget *parent, int CompoID)
Button * m_pSoloBtn
Definition MixerLine.h:232
void volumeChanged(ComponentMixerLine *ref)
QString getName()
Definition MixerLine.h:199
LCDDisplay * m_pPeakLCD
Definition MixerLine.h:233
static constexpr int nWidth
Definition MixerLine.h:203
InstrumentNameWidget * m_pNameWidget
Definition MixerLine.h:230
void setPeak_L(float peak)
static constexpr int nHeight
Definition MixerLine.h:204
Custom fader widget.
Definition Fader.h:44
Changes
Bitwise or-able options showing which part of the Preferences were altered using the PreferencesDialo...
void mousePressEvent(QMouseEvent *e) override
InstrumentNameWidget(QWidget *parent)
void onPreferencesChanged(H2Core::Preferences::Changes changes)
void mouseDoubleClickEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *ev) override
void setText(QString text)
Non-interactive display used for both numerical values and the status display.
Definition LCDDisplay.h:40
LED identicating a user selection.
Definition LED.h:43
LCDDisplay * m_pNameLCD
Definition MixerLine.h:329
ClickableLabel * m_pReturnLbl
Definition MixerLine.h:330
void setPeaks(float fPeak_L, float fPeak_R)
Rotary * m_pRotary
Definition MixerLine.h:328
void volumeChanged(LadspaFXMixerLine *ref)
void setVolume(float value)
void setName(QString name)
void setFxBypassed(bool active)
void bypassBtnClicked(LadspaFXMixerLine *ref)
void getPeaks(float *fPeak_L, float *fPeak_R)
Button * m_pBypassBtn
Definition MixerLine.h:326
LadspaFXMixerLine(QWidget *parent)
void rotaryChanged(WidgetWithInput *ref)
void editBtnClicked(LadspaFXMixerLine *ref)
Button * m_pEditBtn
Definition MixerLine.h:327
Fader * m_pMasterFader
Definition MixerLine.h:277
ClickableLabel * m_pSwingLbl
Definition MixerLine.h:281
void volumeChanged(MasterMixerLine *ref)
void faderChanged(WidgetWithInput *pRef)
ClickableLabel * m_pTimingLbl
Definition MixerLine.h:282
void setVolume(float value)
Rotary * m_pHumanizeTimeRotary
Definition MixerLine.h:288
void setPeak_R(float peak)
Button * m_pMuteBtn
Definition MixerLine.h:291
ClickableLabel * m_pVelocityLbl
Definition MixerLine.h:283
void rotaryChanged(WidgetWithInput *pRef)
ClickableLabel * m_pMasterLbl
Definition MixerLine.h:279
LCDDisplay * m_pPeakLCD
Definition MixerLine.h:285
MasterMixerLine(QWidget *parent)
static constexpr int nWidth
Definition MixerLine.h:257
Rotary * m_pHumanizeVelocityRotary
Definition MixerLine.h:289
Rotary * m_pSwingRotary
Definition MixerLine.h:287
void setPeak_L(float peak)
static constexpr int nHeight
Definition MixerLine.h:258
ClickableLabel * m_pHumanizeLbl
Definition MixerLine.h:280
void updateMixerLine()
bool isMuteClicked()
void soloBtnClicked(MixerLine *ref)
void instrumentNameSelected(MixerLine *ref)
bool m_bIsSelected
Definition MixerLine.h:151
void setMuteClicked(bool isClicked)
Button * m_pPlaySampleBtn
Definition MixerLine.h:163
void instrumentNameClicked(MixerLine *ref)
float getPeak_L()
void muteBtnClicked()
void setSelected(bool bIsSelected)
Rotary * m_pPanRotary
Definition MixerLine.h:159
void setSoloClicked(bool isClicked)
void setPlayClicked(bool clicked)
void panChanged(MixerLine *ref)
void setFXLevel(uint nFX, float fValue)
void noteOffClicked(MixerLine *ref)
void noteOnClicked(MixerLine *ref)
void setVolume(float value)
bool isSoloClicked()
void faderChanged(WidgetWithInput *ref)
float getPan()
void setName(QString name)
Definition MixerLine.h:109
uint m_nHeight
Definition MixerLine.h:150
MixerLine(QWidget *parent, int nInstr)
Definition MixerLine.cpp:48
float getFXLevel(uint nFX)
void soloBtnClicked()
void setPeak_R(float peak)
uint m_nWidth
Definition MixerLine.h:149
Button * m_pMuteBtn
Definition MixerLine.h:161
float getPeak_R()
Button * m_pSoloBtn
Definition MixerLine.h:162
uint m_nPeakTimer
Definition MixerLine.h:154
Rotary * m_pFxRotary[MAX_FX]
Definition MixerLine.h:166
LED * m_pTriggerSampleLED
Definition MixerLine.h:164
void setPan(float value)
float m_nFalloff
Definition MixerLine.h:156
QString getName()
Definition MixerLine.h:110
LCDDisplay * m_pPeakLCD
Definition MixerLine.h:168
void knobChanged(MixerLine *ref, int nKnob)
void muteBtnClicked(MixerLine *ref)
float getVolume()
static constexpr int nWidth
Definition MixerLine.h:125
InstrumentNameWidget * m_pNameWidget
Definition MixerLine.h:160
void setActivity(uint value)
Definition MixerLine.h:116
void nameSelected()
float m_fMaxPeak
Definition MixerLine.h:155
Fader * m_pFader
Definition MixerLine.h:158
void nameClicked()
void setPeak_L(float peak)
static constexpr int nHeight
Definition MixerLine.h:126
void updateMixerLine()
uint m_nActivity
Definition MixerLine.h:153
int getActivity()
Definition MixerLine.h:115
void volumeChanged(MixerLine *ref)
LED * m_pSelectionLED
Definition MixerLine.h:165
PixmapWidget(QWidget *pParent)
Custom rotary widget.
Definition Rotary.h:45
Base class for active user input widget, which are not based on a high-level Qt widget.
Widget is affected by the "Font size" settings in the PreferencesDialog.
#define MAX_FX
Maximum number of effects.
Definition config.dox:83