blob: 2b7d6fc94a123eee57ee50b081e5a1093b5c4fea (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#ifndef EFFECTCHAINMANAGER_H
#define EFFECTCHAINMANAGER_H
#include <QObject>
#include <QList>
#include <QHash>
#include "preferences/usersettings.h"
#include "effects/effectchain.h"
#include "effects/effectrack.h"
#include "engine/channelhandle.h"
#include "util/class.h"
#include "util/xml.h"
class EffectsManager;
// A class for keeping track of all the user's EffectChains. Eventually will
// serialize/deserialize the EffectChains from storage but for Effects v1 we are
// hard-coding the available chains.
class EffectChainManager : public QObject {
Q_OBJECT
public:
EffectChainManager(UserSettingsPointer pConfig,
EffectsManager* pEffectsManager);
virtual ~EffectChainManager();
void registerInputChannel(const ChannelHandleAndGroup& handleGroup);
const QSet<ChannelHandleAndGroup>& registeredInputChannels() const {
return m_registeredInputChannels;
}
void registerOutputChannel(const ChannelHandleAndGroup& handleGroup);
const QSet<ChannelHandleAndGroup>& registeredOutputChannels() const {
return m_registeredOutputChannels;
}
StandardEffectRackPointer addStandardEffectRack();
StandardEffectRackPointer getStandardEffectRack(int rack);
EqualizerRackPointer addEqualizerRack();
EqualizerRackPointer getEqualizerRack(int rack);
QuickEffectRackPointer addQuickEffectRack();
QuickEffectRackPointer getQuickEffectRack(int rack);
OutputEffectRackPointer addOutputsEffectRack();
OutputEffectRackPointer getMasterEffectRack();
EffectRackPointer getEffectRack(const QString& group);
void addEffectChain(EffectChainPointer pEffectChain);
void removeEffectChain(EffectChainPointer pEffectChain);
// To support cycling through effect chains, there is a global ordering of
// chains. These methods allow you to get the next or previous chain given
// your current chain.
// TODO(rryan): Prevent double-loading of a chain into a slot?
EffectChainPointer getNextEffectChain(EffectChainPointer pEffectChain);
EffectChainPointer getPrevEffectChain(EffectChainPointer pEffectChain);
bool saveEffectChains();
void loadEffectChains();
// Reloads all effect to the slots to update parameter assignments
void refeshAllRacks();
static const int kNumStandardEffectChains = 4;
bool isAdoptMetaknobValueEnabled() const;
private:
QString debugString() const {
return "EffectChainManager";
}
UserSettingsPointer m_pConfig;
EffectsManager* m_pEffectsManager;
QList<StandardEffectRackPointer> m_standardEffectRacks;
QList<EqualizerRackPointer> m_equalizerEffectRacks;
QList<QuickEffectRackPointer> m_quickEffectRacks;
OutputEffectRackPointer m_pOutputEffectRack;
QHash<QString, EffectRackPointer> m_effectRacksByGroup;
QList<EffectChainPointer> m_effectChains;
QSet<ChannelHandleAndGroup> m_registeredInputChannels;
QSet<ChannelHandleAndGroup> m_registeredOutputChannels;
DISALLOW_COPY_AND_ASSIGN(EffectChainManager);
};
#endif /* EFFECTCHAINMANAGER_H */
|