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

Diff of /linuxsampler/trunk/src/engines/common/AbstractVoice.h

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

revision 2216 by iliev, Mon Jul 25 17:21:16 2011 UTC revision 2298 by iliev, Fri Dec 9 17:04:24 2011 UTC
# Line 83  namespace LinuxSampler { Line 83  namespace LinuxSampler {
83          public:          public:
84              type_t       Type;         ///< Voice Type (bit field, a voice may have several types)              type_t       Type;         ///< Voice Type (bit field, a voice may have several types)
85              int          MIDIKey;      ///< MIDI key number of the key that triggered the voice              int          MIDIKey;      ///< MIDI key number of the key that triggered the voice
86                uint8_t      MIDIVelocity; ///< MIDI velocity of the key that triggered the voice
87                uint8_t      MIDIPan;      ///< the current MIDI pan value
88                
89                SignalUnitRack* const pSignalUnitRack;
90    
91              AbstractVoice();              AbstractVoice(SignalUnitRack* pRack);
92              virtual ~AbstractVoice();              virtual ~AbstractVoice();
93    
94              inline bool IsActive() { return PlaybackState; }              inline bool IsActive() { return PlaybackState; }
# Line 100  namespace LinuxSampler { Line 104  namespace LinuxSampler {
104                  int                     iKeyGroup                  int                     iKeyGroup
105              );              );
106    
107                /** Invoked when the voice is freed - gone from active to inactive. */
108                virtual void VoiceFreed() { }
109    
110              virtual void Synthesize(uint Samples, sample_t* pSrc, uint Skip);              virtual void Synthesize(uint Samples, sample_t* pSrc, uint Skip);
111                            
112              uint GetSampleRate() { return GetEngine()->SampleRate; }              uint GetSampleRate() { return GetEngine()->SampleRate; }
113                            
114              virtual SignalUnitRack* GetSignalUnitRack() { return NULL; }              uint8_t GetControllerValue(uint8_t Controller) {
115                    return (Controller > 128) ? 0 : pEngineChannel->ControllerTable[Controller];
116                }
117    
118              void processCCEvents(RTList<Event>::Iterator& itEvent, uint End);              void processCCEvents(RTList<Event>::Iterator& itEvent, uint End);
119              void processPitchEvent(RTList<Event>::Iterator& itEvent);              void processPitchEvent(RTList<Event>::Iterator& itEvent);
# Line 113  namespace LinuxSampler { Line 122  namespace LinuxSampler {
122              void processGroupEvents(RTList<Event>::Iterator& itEvent, uint End);              void processGroupEvents(RTList<Event>::Iterator& itEvent, uint End);
123              void UpdatePortamentoPos(Pool<Event>::Iterator& itNoteOffEvent);              void UpdatePortamentoPos(Pool<Event>::Iterator& itNoteOffEvent);
124              void Kill(Pool<Event>::Iterator& itKillEvent);              void Kill(Pool<Event>::Iterator& itKillEvent);
125                void CreateEq();
126    
127              bool                Orphan;             ///< true if this voice is playing a sample from an instrument that is unloaded. When the voice dies, the sample (and dimension region) will be handed back to the instrument resource manager.              bool                Orphan;             ///< true if this voice is playing a sample from an instrument that is unloaded. When the voice dies, the sample (and dimension region) will be handed back to the instrument resource manager.
128              playback_state_t    PlaybackState;      ///< When a sample will be triggered, it will be first played from RAM cache and after a couple of sample points it will switch to disk streaming and at the end of a disk stream we have to add null samples, so the interpolator can do it's work correctly              playback_state_t    PlaybackState;      ///< When a sample will be triggered, it will be first played from RAM cache and after a couple of sample points it will switch to disk streaming and at the end of a disk stream we have to add null samples, so the interpolator can do it's work correctly
# Line 158  namespace LinuxSampler { Line 168  namespace LinuxSampler {
168              gig::SynthesisParam         finalSynthesisParameters;              gig::SynthesisParam         finalSynthesisParameters;
169              gig::Loop                   loop;              gig::Loop                   loop;
170              RTList<Event>*              pGroupEvents;        ///< Events directed to an exclusive group              RTList<Event>*              pGroupEvents;        ///< Events directed to an exclusive group
171                
172                EqSupport* pEq;         ///< Used for per voice equalization
173                bool       bEqSupport;
174                
175                void PrintEqInfo() {
176                    if (!bEqSupport || pEq == NULL) {
177                        dmsg(1,("EQ support: no\n"));
178                    } else {
179                        pEq->PrintInfo();
180                    }
181                }
182    
183              virtual AbstractEngine* GetEngine() = 0;              virtual AbstractEngine* GetEngine() = 0;
184              virtual SampleInfo      GetSampleInfo() = 0;              virtual SampleInfo      GetSampleInfo() = 0;

Legend:
Removed from v.2216  
changed lines
  Added in v.2298

  ViewVC Help
Powered by ViewVC