/[svn]/linuxsampler/trunk/src/EventListeners.h
ViewVC logotype

Contents of /linuxsampler/trunk/src/EventListeners.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1541 - (show annotations) (download) (as text)
Tue Dec 4 18:09:26 2007 UTC (11 years, 10 months ago) by iliev
File MIME type: text/x-c++hdr
File size: 10227 byte(s)
- Added support for monitoring the total number of active disk streams
  (new LSCP commands: GET TOTAL_STREAM_COUNT,
  SUBSCRIBE TOTAL_STREAM_COUNT, UNSUBSCRIBE TOTAL_STREAM_COUNT)

1 /***************************************************************************
2 * *
3 * Copyright (C) 2007 Grigor Iliev *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the Free Software *
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
18 * MA 02110-1301 USA *
19 ***************************************************************************/
20
21 #ifndef __LS_EVENTLISTENERS_H__
22 #define __LS_EVENTLISTENERS_H__
23
24 #include <vector>
25 #include "common/global.h"
26
27 namespace LinuxSampler {
28
29 template<class L>
30 class ListenerList {
31 public:
32 /**
33 * Registers the specified listener for receiving event messages.
34 */
35 void AddListener(L l) {
36 vListenerList.push_back(l);
37 }
38
39 /**
40 * Removes the specified listener.
41 */
42 void RemoveListener(L l) {
43 typename std::vector<L>::iterator it;
44 it = vListenerList.begin();
45 for (; it != vListenerList.end(); it++) {
46 if (*it == l) {
47 vListenerList.erase(it);
48 return;
49 }
50 }
51 }
52
53 /**
54 * Removes all listeners.
55 */
56 void RemoveAllListeners() {
57 vListenerList.clear();
58 }
59
60 /**
61 * Gets the number of the registered listeners.
62 */
63 int GetListenerCount() {
64 return vListenerList.size();
65 }
66
67 /**
68 * Gets the listener at the specified position.
69 * @param index The position of the listener to return.
70 */
71 L GetListener(int index) {
72 return vListenerList.at(index);
73 }
74
75 private:
76 std::vector<L> vListenerList;
77 };
78
79 /**
80 * This class is used as a listener, which is notified
81 * when the number of sampler channels is changed.
82 */
83 class ChannelCountListener {
84 public:
85 /**
86 * Invoked when the number of sampler channels has changed.
87 * @param NewCount The new number of sampler channels.
88 */
89 virtual void ChannelCountChanged(int NewCount) = 0;
90 };
91
92 /**
93 * This class is used as a listener, which is notified
94 * when the number of audio output devices is changed.
95 */
96 class AudioDeviceCountListener {
97 public:
98 /**
99 * Invoked when the number of audio output devices has changed.
100 * @param NewCount The new number of audio output devices.
101 */
102 virtual void AudioDeviceCountChanged(int NewCount) = 0;
103 };
104
105 /**
106 * This class is used as a listener, which is notified
107 * when the number of MIDI input devices is changed.
108 */
109 class MidiDeviceCountListener {
110 public:
111 /**
112 * Invoked when the number of MIDI input devices has changed.
113 * @param NewCount The new number of MIDI input devices.
114 */
115 virtual void MidiDeviceCountChanged(int NewCount) = 0;
116 };
117
118 /**
119 * This class is used as a listener, which is notified when the number
120 * of MIDI instruments on a particular MIDI instrument map is changed.
121 */
122 class MidiInstrumentCountListener {
123 public:
124 /**
125 * Invoked when the number of MIDI instruments has changed.
126 * @param MapId The numerical ID of the MIDI instrument map.
127 * @param NewCount The new number of MIDI instruments.
128 */
129 virtual void MidiInstrumentCountChanged(int MapId, int NewCount) = 0;
130 };
131
132 /**
133 * This class is used as a listener, which is notified
134 * when a MIDI instrument in a MIDI instrument map is changed.
135 */
136 class MidiInstrumentInfoListener {
137 public:
138 /**
139 * Invoked when a MIDI instrument in a MIDI instrument map is changed.
140 * @param MapId The numerical ID of the MIDI instrument map.
141 * @param Bank The index of the MIDI bank, containing the instrument.
142 * @param Program The MIDI program number of the instrument.
143 */
144 virtual void MidiInstrumentInfoChanged(int MapId, int Bank, int Program) = 0;
145 };
146
147 /**
148 * This class is used as a listener, which is notified
149 * when the number of MIDI instrument maps is changed.
150 */
151 class MidiInstrumentMapCountListener {
152 public:
153 /**
154 * Invoked when the number of MIDI instrument maps has changed.
155 * @param NewCount The new number of MIDI instruments.
156 */
157 virtual void MidiInstrumentMapCountChanged(int NewCount) = 0;
158 };
159
160 /**
161 * This class is used as a listener, which is notified
162 * when the settings of a MIDI instrument map are changed.
163 */
164 class MidiInstrumentMapInfoListener {
165 public:
166 /**
167 * Invoked when the settings of a MIDI instrument map are changed.
168 * @param MapId The numerical ID of the MIDI instrument map.
169 */
170 virtual void MidiInstrumentMapInfoChanged(int MapId) = 0;
171 };
172
173 /**
174 * This class is used as a listener, which is notified when the number
175 * of effect sends on a particular sampler channel is changed.
176 */
177 class FxSendCountListener {
178 public:
179 /**
180 * Invoked when the number of effect sends
181 * on the specified sampler channel has changed.
182 * @param ChannelId The numerical ID of the sampler channel.
183 * @param NewCount The new number of effect sends.
184 */
185 virtual void FxSendCountChanged(int ChannelId, int NewCount) = 0;
186 };
187
188 /**
189 * This class is used as a listener, which is notified when the number
190 * of active voices in a particular sampler channel is changed.
191 */
192 class VoiceCountListener {
193 public:
194 /**
195 * Invoked when the number of active voices
196 * on the specified sampler channel has changed.
197 * @param ChannelId The numerical ID of the sampler channel.
198 * @param NewCount The new number of active voices.
199 */
200 virtual void VoiceCountChanged(int ChannelId, int NewCount) = 0;
201 };
202
203 /**
204 * This class is used as a listener, which is notified when the number
205 * of active disk streams in a particular sampler channel is changed.
206 */
207 class StreamCountListener {
208 public:
209 /**
210 * Invoked when the number of active disk streams
211 * on the specified sampler channel has changed.
212 * @param ChannelId The numerical ID of the sampler channel.
213 * @param NewCount The new number of active disk streams.
214 */
215 virtual void StreamCountChanged(int ChannelId, int NewCount) = 0;
216 };
217
218 /**
219 * This class is used as a listener, which is notified when the fill state
220 * of the disk stream buffers on a particular sampler channel is changed.
221 */
222 class BufferFillListener {
223 public:
224 /**
225 * Invoked when the fill state of the disk stream
226 * buffers on the specified sampler channel is changed.
227 * @param ChannelId The numerical ID of the sampler channel.
228 * @param FillData The buffer fill data for the specified sampler channel.
229 */
230 virtual void BufferFillChanged(int ChannelId, String FillData) = 0;
231 };
232
233 /**
234 * This class is used as a listener, which is notified
235 * when the total number of active streams is changed.
236 */
237 class TotalStreamCountListener {
238 public:
239 /**
240 * Invoked when the total number of active streams is changed.
241 * @param NewCount The new number of active streams.
242 */
243 virtual void TotalStreamCountChanged(int NewCount) = 0;
244 };
245
246 /**
247 * This class is used as a listener, which is notified
248 * when the total number of active voices is changed.
249 */
250 class TotalVoiceCountListener {
251 public:
252 /**
253 * Invoked when the total number of active voices is changed.
254 * @param NewCount The new number of active voices.
255 */
256 virtual void TotalVoiceCountChanged(int NewCount) = 0;
257 };
258
259 /**
260 * This class is used as a listener, which is notified
261 * when the engine type of a particular sampler channel is changed.
262 */
263 class EngineChangeListener {
264 public:
265 /**
266 * Invoked when the engine type of the
267 * specified sampler channel is changed.
268 * @param ChannelId The numerical ID of the sampler
269 * channel, which engine type has been changed.
270 */
271 virtual void EngineChanged(int ChannelId) = 0;
272 };
273 }
274 #endif

  ViewVC Help
Powered by ViewVC