/[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 1789 by iliev, Sat Nov 1 19:01:27 2008 UTC revision 2121 by schoenebeck, Tue Sep 14 17:09:08 2010 UTC
# Line 1  Line 1 
1  /***************************************************************************  /***************************************************************************
2   *                                                                         *   *                                                                         *
3   *   Copyright (C) 2005 - 2008 Christian Schoenebeck                       *   *   Copyright (C) 2005 - 2010 Christian Schoenebeck                       *
4   *                                                                         *   *                                                                         *
5   *   This program is free software; you can redistribute it and/or modify  *   *   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  *   *   it under the terms of the GNU General Public License as published by  *
# Line 22  Line 22 
22  #define __LS_ENGINECHANNEL_H__  #define __LS_ENGINECHANNEL_H__
23    
24  #include "../EventListeners.h"  #include "../EventListeners.h"
 #include "../common/atomic.h"  
25  #include "../drivers/audio/AudioOutputDevice.h"  #include "../drivers/audio/AudioOutputDevice.h"
26  #include "../drivers/midi/midi.h"  #include "../drivers/midi/midi.h"
27  #include "../drivers/midi/MidiInputDevice.h"  #include "../drivers/midi/MidiInputDevice.h"
# Line 70  namespace LinuxSampler { Line 69  namespace LinuxSampler {
69              virtual void    SendPitchbend(int Pitch, int32_t FragmentPos) = 0;              virtual void    SendPitchbend(int Pitch, int32_t FragmentPos) = 0;
70              virtual void    SendControlChange(uint8_t Controller, uint8_t Value) = 0;              virtual void    SendControlChange(uint8_t Controller, uint8_t Value) = 0;
71              virtual void    SendControlChange(uint8_t Controller, uint8_t Value, int32_t FragmentPos) = 0;              virtual void    SendControlChange(uint8_t Controller, uint8_t Value, int32_t FragmentPos) = 0;
72                virtual void    SendProgramChange(uint8_t Program) = 0;
73              virtual bool    StatusChanged(bool bNewStatus = false) = 0;              virtual bool    StatusChanged(bool bNewStatus = false) = 0;
74              virtual float   Volume() = 0;              virtual float   Volume() = 0;
75              virtual void    Volume(float f) = 0;              virtual void    Volume(float f) = 0;
# Line 250  namespace LinuxSampler { Line 250  namespace LinuxSampler {
250               * Reset to no RPN controller currently selected.               * Reset to no RPN controller currently selected.
251               */               */
252              void ResetMidiRpnController();              void ResetMidiRpnController();
253                
254                /**
255                 * Set MIDI Non-Registered Parameter Number (NRPN) Controller
256                 * (upper 8 bits / coarse).
257                 */
258                void SetMidiNrpnControllerMsb(uint8_t CtrlMSB);
259    
260                /**
261                 * Set MIDI Non-Registered Parameter Number (NRPN) Controller
262                 * (lower 8 bits / fine).
263                 */
264                void SetMidiNrpnControllerLsb(uint8_t CtrlLSB);
265    
266                /**
267                 * Reset to no NRPN controller currently selected.
268                 */
269                void ResetMidiNrpnController();
270    
271               /**               /**
272               * Registers the specified listener to be notified when the number               * Registers the specified listener to be notified when the number
273               * of effect sends on this channel is changed.               * of effect sends on this channel is changed.
# Line 283  namespace LinuxSampler { Line 300  namespace LinuxSampler {
300              int GetMidiRpnController();              int GetMidiRpnController();
301    
302              /**              /**
303                 * Get currently selected MIDI Non-Registered Parameter Number
304                 * (NRPN) Controller, this method will return the already merged
305                 * value (MSB and LSB value).
306                 *
307                 * @e WARNING: you have to call @c ResetMidiNrpnController()
308                 * after using this value, otherwise all subsequent MIDI CC #6
309                 * (Data) messages are interpreted as NRPN controller value
310                 * messages.
311                 *
312                 * @returns currently selected NRPN controller number, a negative
313                 *          value if no NRPN controller currently selected
314                 */
315                int GetMidiNrpnController();
316    
317                /**
318               * Gets the current number of active voices.               * Gets the current number of active voices.
319               */               */
320              uint GetVoiceCount();              uint GetVoiceCount();
# Line 303  namespace LinuxSampler { Line 335  namespace LinuxSampler {
335              void SetDiskStreamCount(uint Streams);              void SetDiskStreamCount(uint Streams);
336    
337              SamplerChannel* GetSamplerChannel();              SamplerChannel* GetSamplerChannel();
338                
339              void SetSamplerChannel(SamplerChannel* pChannel);              void SetSamplerChannel(SamplerChannel* pChannel);
340    
341              /** Returns the sampler to which this channel belongs */              /** Returns the sampler to which this channel belongs */
342              Sampler* GetSampler();              Sampler* GetSampler();
343    
344                /**
345                 * Performs a program change on the channel.
346                 *
347                 * This method is not real-time safe.
348                 */
349                void ExecuteProgramChange(uint8_t Program);
350    
351          protected:          protected:
352              EngineChannel();              EngineChannel();
353              virtual ~EngineChannel() {}; // MUST only be destroyed by EngineChannelFactory              virtual ~EngineChannel(); // MUST only be destroyed by EngineChannelFactory
354    
355              /**              /**
356               * Notifies listeners that the number of effect sends               * Notifies listeners that the number of effect sends
# Line 324  namespace LinuxSampler { Line 363  namespace LinuxSampler {
363              friend class EngineChannelFactory;              friend class EngineChannelFactory;
364    
365          private:          private:
366              int     iMute;              struct private_data_t;
367              bool    bSolo;              private_data_t* const p;
             uint8_t uiMidiProgram;  
             uint8_t uiMidiBankMsb;  
             uint8_t uiMidiBankLsb;  
             uint8_t uiMidiRpnMsb; ///< MIDI Registered Parameter Number (upper 8 bits / coarse)  
             uint8_t uiMidiRpnLsb; ///< MIDI Registered Parameter Number (lower 8 bits / fine)  
             bool    bMidiBankMsbReceived;  
             bool    bMidiBankLsbReceived;  
             bool    bProgramChangeReceived;  
             bool    bMidiRpnReceived;  
             int     iMidiInstrumentMap;  
             atomic_t voiceCount;  
             atomic_t diskStreamCount;  
             SamplerChannel* pSamplerChannel;  
             ListenerList<FxSendCountListener*> llFxSendCountListeners;  
368      };      };
369    
370  } // namespace LinuxSampler  } // namespace LinuxSampler

Legend:
Removed from v.1789  
changed lines
  Added in v.2121

  ViewVC Help
Powered by ViewVC