hydrogen 1.2.6
Mixer.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
23
24#ifndef MIXER_H
25#define MIXER_H
26
27#include <QtGui>
28#include <QtWidgets>
29
30#include <core/Object.h>
32#include <core/Globals.h>
33#include "../EventListener.h"
34
35class Button;
36class MixerLine;
38class MasterMixerLine;
40class PixmapWidget;
41
43class Mixer : public QWidget, public EventListener, public H2Core::Object<Mixer>
44{
46 Q_OBJECT
47 public:
48 explicit Mixer(QWidget* parent);
49 ~Mixer();
50
51 void showEvent ( QShowEvent *ev ) override;
52 void hideEvent ( QHideEvent *ev ) override;
53 void resizeEvent ( QResizeEvent *ev ) override;
54 void soloClicked(uint nLine);
55 bool isSoloClicked(uint nLine);
56
57 void getPeaksInMixerLine( uint nMixerLine, float& fPeak_L, float& fPeak_R );
58
59 public slots:
60 void noteOnClicked(MixerLine* ref);
61 void noteOffClicked(MixerLine* ref);
62 void muteClicked(MixerLine* ref);
64 void soloClicked(MixerLine* ref);
66 void volumeChanged(MixerLine* ref);
68 void panChanged(MixerLine* ref);
69 void knobChanged(MixerLine* ref, int nKnob);
71 void nameClicked(MixerLine* ref);
72 void nameSelected(MixerLine* ref);
73 void updateMixer();
74 void showFXPanelClicked();
80 void closeEvent(QCloseEvent *event) override;
82
83 private:
84 QHBoxLayout * m_pFaderHBox;
86
87 QScrollArea* m_pFaderScrollArea;
92
93 QWidget * m_pFaderPanel;
95 std::map<int, ComponentMixerLine*> m_pComponentMixerLine;
96
98
100
101 uint findMixerLineByRef(MixerLine* ref);
105
106 // Implements EventListener interface
107 virtual void noteOnEvent( int nInstrument ) override;
108 // ~ Implements EventListener interface
109
110};
111
112
113
114#endif
#define H2_OBJECT(name)
Definition Object.h:227
Generic Button with SVG icons or text.
Definition Button.h:60
Changes
Bitwise or-able options showing which part of the Preferences were altered using the PreferencesDialo...
A mixer strip.
Definition MixerLine.h:84
void hideEvent(QHideEvent *ev) override
hide event
Definition Mixer.cpp:716
void openMixerSettingsDialog()
Definition Mixer.cpp:905
QScrollArea * m_pFaderScrollArea
Definition Mixer.h:87
PixmapWidget * m_pFXFrame
Definition Mixer.h:97
QTimer * m_pUpdateTimer
Definition Mixer.h:99
QWidget * m_pFaderPanel
Definition Mixer.h:93
void masterVolumeChanged(MasterMixerLine *)
Definition Mixer.cpp:418
uint findCompoMixerLineByRef(ComponentMixerLine *ref)
Definition Mixer.cpp:397
LadspaFXMixerLine * m_pLadspaFXLine[MAX_FX]
Definition Mixer.h:85
void panChanged(MixerLine *ref)
Definition Mixer.cpp:739
void noteOffClicked(MixerLine *ref)
Play sample button, right-clicked (note off)
Definition Mixer.cpp:366
void noteOnClicked(MixerLine *ref)
Definition Mixer.cpp:340
void resizeEvent(QResizeEvent *ev) override
Definition Mixer.cpp:793
MixerLine * m_pMixerLine[MAX_INSTRUMENTS]
Definition Mixer.h:94
void onPreferencesChanged(H2Core::Preferences::Changes changes)
Definition Mixer.cpp:911
void muteClicked(MixerLine *ref)
Definition Mixer.cpp:237
void showPeaksBtnClicked()
Definition Mixer.cpp:811
Button * m_pOpenMixerSettingsBtn
Definition Mixer.h:90
void closeEvent(QCloseEvent *event) override
Definition Mixer.cpp:215
void getPeaksInMixerLine(uint nMixerLine, float &fPeak_L, float &fPeak_R)
Definition Mixer.cpp:888
virtual void noteOnEvent(int nInstrument) override
Definition Mixer.cpp:779
~Mixer()
Definition Mixer.cpp:189
bool isSoloClicked(uint nLine)
Definition Mixer.cpp:327
void ladspaEditBtnClicked(LadspaFXMixerLine *ref)
Definition Mixer.cpp:847
void showEvent(QShowEvent *ev) override
show event
Definition Mixer.cpp:707
Button * m_pShowFXPanelBtn
Definition Mixer.h:88
MasterMixerLine * m_pMasterLine
Definition Mixer.h:91
std::map< int, ComponentMixerLine * > m_pComponentMixerLine
Definition Mixer.h:95
MixerLine * createMixerLine(int)
Definition Mixer.cpp:194
void showFXPanelClicked()
Definition Mixer.cpp:798
void nameSelected(MixerLine *ref)
Definition Mixer.cpp:731
void knobChanged(MixerLine *ref, int nKnob)
Definition Mixer.cpp:751
void ladspaBypassBtnClicked(LadspaFXMixerLine *ref)
Definition Mixer.cpp:826
void nameClicked(MixerLine *ref)
Definition Mixer.cpp:723
uint findMixerLineByRef(MixerLine *ref)
Definition Mixer.cpp:386
Mixer(QWidget *parent)
Definition Mixer.cpp:47
void soloClicked(uint nLine)
used in PatternEditorInstrumentList
Definition Mixer.cpp:309
void updateMixer()
Definition Mixer.cpp:429
Button * m_pShowPeaksBtn
Definition Mixer.h:89
void ladspaVolumeChanged(LadspaFXMixerLine *ref)
Definition Mixer.cpp:863
void volumeChanged(MixerLine *ref)
Definition Mixer.cpp:409
QHBoxLayout * m_pFaderHBox
Definition Mixer.h:84
ComponentMixerLine * createComponentMixerLine(int)
Definition Mixer.cpp:221
#define MAX_INSTRUMENTS
Maximum number of instruments allowed in Hydrogen.
Definition config.dox:70
#define MAX_FX
Maximum number of effects.
Definition config.dox:83