1 // qsamplerFxSend.h
2 //
3 /****************************************************************************
4    Copyright (C) 2004-2019, rncbc aka Rui Nuno Capela. All rights reserved.
5    Copyright (C) 2008, Christian Schoenebeck
6 
7    This program is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License
9    as published by the Free Software Foundation; either version 2
10    of the License, or (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License along
18    with this program; if not, write to the Free Software Foundation, Inc.,
19    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 
21 *****************************************************************************/
22 
23 #ifndef __qsamplerFxSend_h
24 #define __qsamplerFxSend_h
25 
26 #include <QStringList>
27 #include <QMap>
28 #include <QList>
29 
30 namespace QSampler {
31 
32 // Typedef'd QMap.
33 typedef QMap<int, int> FxSendRoutingMap;
34 
35 class FxSend {
36 public:
37 	// retrieve existing FX send
38 	FxSend(int SamplerChannelID, int FxSendID);
39 
40 	// create a new FX send
41 	FxSend(int SamplerChannelID);
42 
43 	~FxSend();
44 
45 	int id() const;
46 
47 	// whether FX send exists on sampler side yet
48 	bool isNew() const;
49 
50 	// whether scheduled for deletion
51 	bool deletion() const;
52 	void setDeletion(bool bDelete);
53 
54 	bool isModified() const;
55 
56 	void setName(const QString& sName);
57 	const QString& name() const;
58 
59 	void setSendDepthMidiCtrl(int iMidiController);
60 	int sendDepthMidiCtrl() const;
61 
62 	void setCurrentDepth(float depth);
63 	float currentDepth() const;
64 
65 	// Audio routing accessors.
66 	int  audioChannel(int iAudioSrc) const;
67 	bool setAudioChannel(int iAudioSrc, int iAudioDst);
68 	// The audio routing map itself.
69 	const FxSendRoutingMap& audioRouting() const;
70 
71 	bool getFromSampler();
72 	bool applyToSampler();
73 
74 	static QList<int> allFxSendsOfSamplerChannel(int samplerChannelID);
75 
76 private:
77 	int m_iSamplerChannelID;
78 	int m_iFxSendID;
79 	bool m_bDelete;
80 	bool m_bModified;
81 
82 	QString m_FxSendName;
83 	int m_MidiCtrl;
84 	float m_Depth;
85 	FxSendRoutingMap m_AudioRouting;
86 };
87 
88 } // namespace QSampler
89 
90 #endif  // __qsamplerFxSend_h
91 
92 // end of __qsamplerFxSend.h
93