/[svn]/linuxsampler/trunk/src/engines/FxSend.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/FxSend.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1040 by schoenebeck, Wed Feb 7 15:41:31 2007 UTC revision 2137 by schoenebeck, Mon Oct 4 12:20:23 2010 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6   *   Copyright (C) 2005 - 2007 Christian Schoenebeck                       *   *   Copyright (C) 2005 - 2010 Christian Schoenebeck                       *
7   *                                                                         *   *                                                                         *
8   *   This library is free software; you can redistribute it and/or modify  *   *   This library is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 38  namespace LinuxSampler { Line 38  namespace LinuxSampler {
38      /** @brief Engine Channel Effect Send      /** @brief Engine Channel Effect Send
39       *       *
40       * This class is used to manage effect sends on Engine Channels. An effect       * This class is used to manage effect sends on Engine Channels. An effect
41       * send is used to route sampler channel's audio signals to sampler       * send is used to route sampler channel's audio signals to either sampler
42       * external effect processors. Each effect send entity can define an       * external effect processors (by routing the effect send to dedicated
43       * arbitrary MIDI controller number which can alter the effect send's       * audio output channels of the sampler channel's audio output device) or
44       * send level.       * to sampler internal effect processors (send effects). Each effect send
45         * entity can define an arbitrary MIDI controller number which can alter
46         * the effect send's send level.
47         *
48         * Regarding sampler internal effects: See AudioOutputDevice regarding
49         * management of send effects, since send effects only live in the context
50         * of exactly @e ONE AudioOutputDevice.
51       *       *
52       * Note: effect sends cannot be routed to a different AudioOutputDevice       * Note: effect sends cannot be routed to a different AudioOutputDevice
53       * than assigned to the FxSend's EngineChannel. Also note that an effect       * than assigned to the FxSend's EngineChannel. Also note that an effect
# Line 67  namespace LinuxSampler { Line 73  namespace LinuxSampler {
73              FxSend(EngineChannel* pEngineChannel, uint8_t MidiCtrl, String Name = "") throw (Exception);              FxSend(EngineChannel* pEngineChannel, uint8_t MidiCtrl, String Name = "") throw (Exception);
74    
75              /**              /**
76                 * Index of the send effect chain this FX send is routed to or
77                 * -1 if FX send is not routed to a send effect.
78                 */
79                int DestinationEffectChain() const;
80    
81                /**
82                 * Index of the send effect of the send effect chain given by
83                 * DestinationEffectChain(), in case FX send is routed to
84                 * a send effect or -1 otherwise. This is the effect chain
85                 * position, not the effect ID!
86                 */
87                int DestinationEffectChainPosition() const;
88    
89                /**
90                 * Route this FX send to the given send effect given by index
91                 * @a iChainPos of the send effect chain given by @a iChain .
92                 *
93                 * If you want to remove the routing of an FX send, currently
94                 * directed to a send effect processor, and want to route it
95                 * directly to an audio output device channel instead, then set
96                 * both arguments to @c -1 .
97                 *
98                 * @throw Exception - if given effect chain or effect chain position
99                 *                    doesn't exist
100                 *
101                 * @see AudioOutputDevice::SendEffectChain()
102                 */
103                void SetDestinationEffect(int iChain, int iChainPos) throw (Exception);
104    
105                /**
106                 * @deprecated This method will be removed, use DestinationEffectChain() instead!
107                 */
108                int DestinationMasterEffectChain() const DEPRECATED_API;
109    
110                /**
111                 * @deprecated This method will be removed, use DestinationEffectChainPosition() instead!
112                 */
113                int DestinationMasterEffect() const DEPRECATED_API;
114    
115                /**
116                 * @deprecated This method will be removed, use SetDestinationEffect() instead!
117                 */
118                void SetDestinationMasterEffect(int iChain, int iChainPos) throw (Exception) DEPRECATED_API;
119    
120                /**
121               * Returns the audio output device's audio channel to which effect               * Returns the audio output device's audio channel to which effect
122               * send's channel \a SrcChan is currently routed to.               * send's channel \a SrcChan is currently routed to.
123               */               */
124              int DestinationChannel(int SrcChan);              int DestinationChannel(int SrcChan);
125    
126              /**              /**
127               * Alters the routing of an audio channel.               * Alters the routing of an audio channel. By default all audio
128                 * channels of an effect send are routed in consecutive same order
129                 * to its destination. You can use this method to change this
130                 * default routing. If this effect send is routed to an internel
131                 * effect, then @a DstChan is the input channel of that destination
132                 * effect. Otherwise, if this effect send is not routed to an
133                 * internal effect, then @a DstChan is the output channel of the
134                 * sampler channel's audio output device.
135               *               *
136               * @param SrcChan - the effect send's source channel               * @param SrcChan - the effect send's source channel
137               * @param DstChan - the audio output device's destination channel               * @param DstChan - the audio output device's destination channel
138                 *                  or send effect's input channel
139               * @throws Exception - in case arguments out of range               * @throws Exception - in case arguments out of range
140               */               */
141              void SetDestinationChannel(int SrcChan, int DstChan) throw (Exception);              void SetDestinationChannel(int SrcChan, int DstChan) throw (Exception);
# Line 135  namespace LinuxSampler { Line 194  namespace LinuxSampler {
194              String Name();              String Name();
195    
196              /**              /**
197                 * Sets the name of this effect send entity.
198                 * @param Name The new name of this effect send entity.
199                 */
200                void SetName(String Name);
201    
202                /**
203               * Returns the (at least sampler-channel-) unique ID of the               * Returns the (at least sampler-channel-) unique ID of the
204               * effect send instance. This is actually not used by the engine               * effect send instance. This is actually not used by the engine
205               * at all. It is at the moment only used by the LSCP server to               * at all. It is at the moment only used by the LSCP server to
# Line 142  namespace LinuxSampler { Line 207  namespace LinuxSampler {
207               */               */
208              uint Id();              uint Id();
209    
210                /**
211                 * Determines whether the effect send's settings are changed.
212                 */
213                bool IsInfoChanged();
214    
215                /**
216                 * Sets whether the effect send's settings are changed.
217                 */
218                void SetInfoChanged(bool b);
219    
220          protected:          protected:
221              EngineChannel*   pEngineChannel;              EngineChannel*   pEngineChannel;
222                int              iDestinationEffectChain;
223                int              iDestinationEffectChainPos;
224              std::vector<int> Routing;              std::vector<int> Routing;
225              uint8_t          MidiFxSendController;              uint8_t          MidiFxSendController;
226              String           sName;              String           sName;
227              uint             iId;              uint             iId;
228              float            fLevel;              float            fLevel;
229                bool             bInfoChanged;  // Determines whether there are changes to the settings.
230      };      };
231    
232  } // namespace LinuxSampler  } // namespace LinuxSampler

Legend:
Removed from v.1040  
changed lines
  Added in v.2137

  ViewVC Help
Powered by ViewVC