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

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

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

revision 889 by schoenebeck, Sat Jul 1 13:34:18 2006 UTC revision 973 by schoenebeck, Fri Dec 15 21:40:27 2006 UTC
# Line 47  namespace LinuxSampler { Line 47  namespace LinuxSampler {
47      class EngineChannel {      class EngineChannel {
48          public:          public:
49    
             EngineChannel();  
   
50              /////////////////////////////////////////////////////////////////              /////////////////////////////////////////////////////////////////
51              // abstract methods              // abstract methods
52              //     (these have to be implemented by the descendant)              //     (these have to be implemented by the descendant)
# Line 57  namespace LinuxSampler { Line 55  namespace LinuxSampler {
55              virtual void    LoadInstrument() = 0;              virtual void    LoadInstrument() = 0;
56              virtual void    Reset() = 0;              virtual void    Reset() = 0;
57              virtual void    SendNoteOn(uint8_t Key, uint8_t Velocity) = 0;              virtual void    SendNoteOn(uint8_t Key, uint8_t Velocity) = 0;
58                virtual void    SendNoteOn(uint8_t Key, uint8_t Velocity, int32_t FragmentPos) = 0;
59              virtual void    SendNoteOff(uint8_t Key, uint8_t Velocity) = 0;              virtual void    SendNoteOff(uint8_t Key, uint8_t Velocity) = 0;
60                virtual void    SendNoteOff(uint8_t Key, uint8_t Velocity, int32_t FragmentPos) = 0;
61              virtual void    SendPitchbend(int Pitch) = 0;              virtual void    SendPitchbend(int Pitch) = 0;
62                virtual void    SendPitchbend(int Pitch, int32_t FragmentPos) = 0;
63              virtual void    SendControlChange(uint8_t Controller, uint8_t Value) = 0;              virtual void    SendControlChange(uint8_t Controller, uint8_t Value) = 0;
64                virtual void    SendControlChange(uint8_t Controller, uint8_t Value, int32_t FragmentPos) = 0;
65              virtual bool    StatusChanged(bool bNewStatus = false) = 0;              virtual bool    StatusChanged(bool bNewStatus = false) = 0;
66              virtual float   Volume() = 0;              virtual float   Volume() = 0;
67              virtual void    Volume(float f) = 0;              virtual void    Volume(float f) = 0;
# Line 111  namespace LinuxSampler { Line 113  namespace LinuxSampler {
113               */               */
114              bool GetSolo();              bool GetSolo();
115    
116                /**
117                 * Returns current MIDI program (change) number of this
118                 * EngineChannel.
119                 */
120                uint8_t GetMidiProgram();
121    
122                /**
123                 * Change EngineChannel's MIDI program.
124                 */
125                void SetMidiProgram(uint8_t Program);
126    
127                /**
128                 * Returns current MIDI bank MSB (coarse) number of this
129                 * EngineChannel.
130                 */
131                uint8_t GetMidiBankMsb();
132    
133                /**
134                 * Change current MIDI bank MSB (coarse) number of this
135                 * EngineChannel.
136                 */
137                void SetMidiBankMsb(uint8_t BankMSB);
138    
139                /**
140                 * Returns current MIDI bank LSB (fine) number of this
141                 * EngineChannel.
142                 */
143                uint8_t GetMidiBankLsb();
144    
145                /**
146                 * Change current MIDI bank LSB (fine) number of this
147                 * EngineChannel.
148                 */
149                void SetMidiBankLsb(uint8_t BankLSB);
150    
151                /**
152                 * Returns true if this EngineChannel is using no MIDI
153                 * instrument map at all, that is if it will ignore all MIDI
154                 * program change messages.
155                 *
156                 * @see UsesDefaultMidiInstrumentMap()
157                 * @see GetMidiInstrumentMap()
158                 */
159                bool UsesNoMidiInstrumentMap();
160    
161                /**
162                 * Returns true if this EngineChannel is using the default MIDI
163                 * instrument map for handling MIDI program changes.
164                 *
165                 * @see UsesNoMidiInstrumentMap()
166                 * @see GetMidiInstrumentMap()
167                 */
168                bool UsesDefaultMidiInstrumentMap();
169    
170                /**
171                 * Returns ID of the MIDI instrument map currently used by this
172                 * EngineChannel to handle MIDI program changes. You should
173                 * always call @c UsesNoMidiInstrumentMap() and
174                 * @c UsesDefaultMidiInstrumentMap() before calling this method
175                 * to check if this EngineChannel is probably using the default
176                 * map or no map at all, because in these two particular cases
177                 * this method would throw an exception!
178                 *
179                 * @throws Exception - if EngineChannel is set to no map at all
180                 *                     or is set to the default map
181                 * @see UsesNoMidiInstrumentMap()
182                 * @see UsesDefaultMidiInstrumentMap()
183                 */
184                int GetMidiInstrumentMap() throw (Exception);
185    
186                /**
187                 * Let this EngineChannel use no MIDI instrument map at all,
188                 * that is to let it ignore all MIDI program change messages.
189                 *
190                 * @see SetMidiInstrumentMapToDefault()
191                 * @see SetMidiInstrumentMap()
192                 */
193                void SetMidiInstrumentMapToNone();
194    
195                /**
196                 * Let this EngineChannel use the default MIDI instrument map to
197                 * handle MIDI program changes.
198                 *
199                 * @see SetMidiInstrumentMapToNone()
200                 * @see SetMidiInstrumentMap()
201                 */
202                void SetMidiInstrumentMapToDefault();
203    
204                /**
205                 * Set a specific MIDI instrument map this EngineChannel should
206                 * use to handle MIDI program changes.
207                 *
208                 * @see SetMidiInstrumentMapToNone()
209                 * @see SetMidiInstrumentMapToDefault()
210                 *
211                 * @throws Exception - in case given map does not exist
212                 */
213                void SetMidiInstrumentMap(int MidiMap) throw (Exception);
214    
215              int iSamplerChannelIndex; ///< FIXME: nasty hack, might be removed (should be 'virtual EngineChannel* EngineChannel() = 0;', but due to cyclic dependencies only a void* solution would be possible ATM)              int iSamplerChannelIndex; ///< FIXME: nasty hack, might be removed (should be 'virtual EngineChannel* EngineChannel() = 0;', but due to cyclic dependencies only a void* solution would be possible ATM)
216    
217          protected:          protected:
218                EngineChannel();
219              virtual ~EngineChannel() {}; // MUST only be destroyed by EngineChannelFactory              virtual ~EngineChannel() {}; // MUST only be destroyed by EngineChannelFactory
220              friend class EngineChannelFactory;              friend class EngineChannelFactory;
221    
222          private:          private:
223              int  iMute;              int     iMute;
224              bool bSolo;              bool    bSolo;
225                uint8_t uiMidiProgram;
226                uint8_t uiMidiBankMsb;
227                uint8_t uiMidiBankLsb;
228                bool    bMidiBankMsbReceived;
229                bool    bMidiBankLsbReceived;
230                bool    bProgramChangeReceived;
231                int     iMidiInstrumentMap;
232      };      };
233    
234  } // namespace LinuxSampler  } // namespace LinuxSampler

Legend:
Removed from v.889  
changed lines
  Added in v.973

  ViewVC Help
Powered by ViewVC