/[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 2175 by persson, Mon Apr 25 08:12:36 2011 UTC revision 2218 by iliev, Thu Jul 28 08:05:57 2011 UTC
# Line 37  Line 37 
37  #include "../gig/SmoothVolume.h"  #include "../gig/SmoothVolume.h"
38  #include "../gig/Synthesizer.h"  #include "../gig/Synthesizer.h"
39  #include "../gig/Profiler.h"  #include "../gig/Profiler.h"
40    #include "SignalUnitRack.h"
41    
42  // include the appropriate (unsigned) triangle LFO implementation  // include the appropriate (unsigned) triangle LFO implementation
43  #if CONFIG_UNSIGNED_TRIANG_ALGO == INT_MATH_SOLUTION  #if CONFIG_UNSIGNED_TRIANG_ALGO == INT_MATH_SOLUTION
# Line 82  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                
88                SignalUnitRack* const pSignalUnitRack;
89    
90              AbstractVoice();              AbstractVoice(SignalUnitRack* pRack);
91              virtual ~AbstractVoice();              virtual ~AbstractVoice();
92    
93              inline bool IsActive() { return PlaybackState; }              inline bool IsActive() { return PlaybackState; }
# Line 100  namespace LinuxSampler { Line 104  namespace LinuxSampler {
104              );              );
105    
106              virtual void Synthesize(uint Samples, sample_t* pSrc, uint Skip);              virtual void Synthesize(uint Samples, sample_t* pSrc, uint Skip);
107                
108                uint GetSampleRate() { return GetEngine()->SampleRate; }
109    
110              void processCCEvents(RTList<Event>::Iterator& itEvent, uint End);              void processCCEvents(RTList<Event>::Iterator& itEvent, uint End);
111              void processPitchEvent(RTList<Event>::Iterator& itEvent);              void processPitchEvent(RTList<Event>::Iterator& itEvent);
# Line 160  namespace LinuxSampler { Line 166  namespace LinuxSampler {
166              virtual InstrumentInfo  GetInstrumentInfo() = 0;              virtual InstrumentInfo  GetInstrumentInfo() = 0;
167    
168              /**              /**
169                 * Most of the important members of the voice are set when the voice
170                 * is triggered (like pEngineChannel, pRegion, pSample, etc).
171                 * This method is called after these members are set and before
172                 * the voice is actually triggered.
173                 * Override this method if you need to do some additional
174                 * initialization which depends on these members before the voice
175                 * is triggered.
176                 */
177                virtual void AboutToTrigger() { }
178    
179                virtual bool EG1Finished();
180    
181                /**
182               * Gets the sample cache size in bytes.               * Gets the sample cache size in bytes.
183               */               */
184              virtual unsigned long GetSampleCacheSize() = 0;              virtual unsigned long GetSampleCacheSize() = 0;
185                
186                /**
187                 * Because in most cases we cache part of the sample in RAM, if the
188                 * offset is too big (will extend beyond the RAM cache if the cache contains
189                 * the beginning of the sample) we should cache in the RAM buffer not the
190                 * beginning of the sample but a part that starts from the sample offset point.
191                 * In that case the current sample position should start from zero (Pos).
192                 * When the offset fits into RAM buffer or the whole sample is cached
193                 * in RAM, Pos should contain the actual offset.
194                 * We don't trim the sample because it might have a defined
195                 * loop start point before the start point of the playback.
196                 */
197                virtual void SetSampleStartOffset();
198    
199              /**              /**
200               * Returns the correct amplitude factor for the given \a MIDIKeyVelocity.               * Returns the correct amplitude factor for the given \a MIDIKeyVelocity.

Legend:
Removed from v.2175  
changed lines
  Added in v.2218

  ViewVC Help
Powered by ViewVC