hydrogen 1.2.3
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-2024 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
125signals:
134 void knobChanged(MixerLine *ref, int nKnob);
135
136public slots:
137 void muteBtnClicked();
138 void soloBtnClicked();
139 void faderChanged(WidgetWithInput *ref);
140 void panChanged(WidgetWithInput *ref);
141 void knobChanged(WidgetWithInput *ref);
142 void nameClicked();
143 void nameSelected();
144
145private:
149
154
164
166};
167
169class ComponentMixerLine: public PixmapWidget, public H2Core::Object<ComponentMixerLine>
170{
172 Q_OBJECT
173
174public:
175 ComponentMixerLine(QWidget* parent, int CompoID);
177
178 void updateMixerLine();
179
180 bool isMuteClicked();
181 void setMuteClicked(bool isClicked);
182
183 bool isSoloClicked();
184 void setSoloClicked(bool isClicked);
185
186 float getVolume();
187 void setVolume(float value);
188
189 void setPeak_L( float peak );
190 float getPeak_L();
191
192 void setPeak_R( float peak );
193 float getPeak_R();
194
195 void setName(QString name) { m_pNameWidget->setText( name ); }
196 QString getName() { return m_pNameWidget->text(); }
197
199
200signals:
204
205public slots:
206 void soloBtnClicked();
207 void muteBtnClicked();
208
209 void faderChanged(WidgetWithInput *ref);
210
211
212private:
217
222
228};
229
231class MasterMixerLine: public PixmapWidget, public H2Core::Object<MasterMixerLine>
232{
234 Q_OBJECT
235
236public:
237 explicit MasterMixerLine(QWidget* parent);
239
240 void updateMixerLine();
241
242 float getVolume();
243 void setVolume(float value);
244
245 void setPeak_L(float peak);
246 float getPeak_L();
247
248 void setPeak_R(float peak);
249 float getPeak_R();
250
251
252signals:
254
255public slots:
256 void faderChanged( WidgetWithInput* pRef);
257 void rotaryChanged( WidgetWithInput *pRef );
258 void muteClicked();
259
260private:
263
267
269
275
277
281
283};
284
286class LadspaFXMixerLine : public PixmapWidget, public H2Core::Object<LadspaFXMixerLine>
287{
289 Q_OBJECT
290
291public:
292 explicit LadspaFXMixerLine(QWidget* parent);
294
295 bool isFxBypassed();
296 void setFxBypassed( bool active );
297
298 void setPeaks( float fPeak_L, float fPeak_R );
299 void getPeaks( float *fPeak_L, float *fPeak_R );
300 void setName( QString name );
301
302 float getVolume();
303 void setVolume( float value );
304
305public slots:
306 void bypassBtnClicked();
307 void editBtnClicked();
308 void rotaryChanged( WidgetWithInput* ref);
309
310signals:
314
315private:
322};
323
324
325#endif
#define H2_OBJECT(name)
Definition Object.h:224
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:195
void setPeak_R(float peak)
Button * m_pMuteBtn
Definition MixerLine.h:225
ComponentMixerLine(QWidget *parent, int CompoID)
Button * m_pSoloBtn
Definition MixerLine.h:226
void volumeChanged(ComponentMixerLine *ref)
QString getName()
Definition MixerLine.h:196
LCDDisplay * m_pPeakLCD
Definition MixerLine.h:227
InstrumentNameWidget * m_pNameWidget
Definition MixerLine.h:224
void setPeak_L(float peak)
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:320
ClickableLabel * m_pReturnLbl
Definition MixerLine.h:321
void setPeaks(float fPeak_L, float fPeak_R)
Rotary * m_pRotary
Definition MixerLine.h:319
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:317
LadspaFXMixerLine(QWidget *parent)
void rotaryChanged(WidgetWithInput *ref)
void editBtnClicked(LadspaFXMixerLine *ref)
Button * m_pEditBtn
Definition MixerLine.h:318
Fader * m_pMasterFader
Definition MixerLine.h:268
ClickableLabel * m_pSwingLbl
Definition MixerLine.h:272
void volumeChanged(MasterMixerLine *ref)
void faderChanged(WidgetWithInput *pRef)
ClickableLabel * m_pTimingLbl
Definition MixerLine.h:273
void setVolume(float value)
Rotary * m_pHumanizeTimeRotary
Definition MixerLine.h:279
void setPeak_R(float peak)
Button * m_pMuteBtn
Definition MixerLine.h:282
ClickableLabel * m_pVelocityLbl
Definition MixerLine.h:274
void rotaryChanged(WidgetWithInput *pRef)
ClickableLabel * m_pMasterLbl
Definition MixerLine.h:270
LCDDisplay * m_pPeakLCD
Definition MixerLine.h:276
MasterMixerLine(QWidget *parent)
Rotary * m_pHumanizeVelocityRotary
Definition MixerLine.h:280
Rotary * m_pSwingRotary
Definition MixerLine.h:278
void setPeak_L(float peak)
ClickableLabel * m_pHumanizeLbl
Definition MixerLine.h:271
void updateMixerLine()
A mixer strip.
Definition MixerLine.h:84
bool isMuteClicked()
void soloBtnClicked(MixerLine *ref)
void instrumentNameSelected(MixerLine *ref)
bool m_bIsSelected
Definition MixerLine.h:148
void setMuteClicked(bool isClicked)
Button * m_pPlaySampleBtn
Definition MixerLine.h:160
void instrumentNameClicked(MixerLine *ref)
float getPeak_L()
void muteBtnClicked()
void setSelected(bool bIsSelected)
Rotary * m_pPanRotary
Definition MixerLine.h:156
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:147
MixerLine(QWidget *parent, int nInstr)
Definition MixerLine.cpp:55
float getFXLevel(uint nFX)
void soloBtnClicked()
void setPeak_R(float peak)
uint m_nWidth
Definition MixerLine.h:146
Button * m_pMuteBtn
Definition MixerLine.h:158
float getPeak_R()
Button * m_pSoloBtn
Definition MixerLine.h:159
uint m_nPeakTimer
Definition MixerLine.h:151
Rotary * m_pFxRotary[MAX_FX]
Definition MixerLine.h:163
LED * m_pTriggerSampleLED
Definition MixerLine.h:161
void setPan(float value)
float m_nFalloff
Definition MixerLine.h:153
QString getName()
Definition MixerLine.h:110
LCDDisplay * m_pPeakLCD
Definition MixerLine.h:165
void knobChanged(MixerLine *ref, int nKnob)
void muteBtnClicked(MixerLine *ref)
float getVolume()
InstrumentNameWidget * m_pNameWidget
Definition MixerLine.h:157
void setActivity(uint value)
Definition MixerLine.h:116
void nameSelected()
float m_fMaxPeak
Definition MixerLine.h:152
Fader * m_pFader
Definition MixerLine.h:155
void nameClicked()
void setPeak_L(float peak)
void updateMixerLine()
uint m_nActivity
Definition MixerLine.h:150
int getActivity()
Definition MixerLine.h:115
void volumeChanged(MixerLine *ref)
LED * m_pSelectionLED
Definition MixerLine.h:162
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