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

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

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

revision 2600 by schoenebeck, Sat Jun 7 00:16:03 2014 UTC revision 2931 by schoenebeck, Sat Jul 9 14:38:33 2016 UTC
# Line 35  Line 35 
35  #include "../common/ResourceManager.h"  #include "../common/ResourceManager.h"
36  #include "../drivers/audio/AudioOutputDevice.h"  #include "../drivers/audio/AudioOutputDevice.h"
37  #include "common/Event.h"  #include "common/Event.h"
38    #include "common/Note.h"
39  #include "common/SignalUnitRack.h"  #include "common/SignalUnitRack.h"
40  #include "common/InstrumentScriptVM.h"  #include "common/InstrumentScriptVM.h"
41    
# Line 74  namespace LinuxSampler { Line 75  namespace LinuxSampler {
75              /**              /**
76               * Returns event with the given event ID.               * Returns event with the given event ID.
77               */               */
78              RTList<Event>::Iterator EventByID(int id) {              RTList<Event>::Iterator EventByID(event_id_t id) {
79                  return pEventPool->fromID(id);                  return pEventPool->fromID(id);
80              }              }
81    
82                virtual NoteBase* NoteByID(note_id_t id) = 0;
83    
84              float Random() {              float Random() {
85                  RandomSeed = RandomSeed * 1103515245 + 12345; // classic pseudo random number generator                  RandomSeed = RandomSeed * 1103515245 + 12345; // classic pseudo random number generator
86                  return RandomSeed / 4294967296.0f;                  return RandomSeed / 4294967296.0f;
# Line 98  namespace LinuxSampler { Line 101  namespace LinuxSampler {
101              static const FloatTable PanCurve;       ///< Table that maps pan control change values 0..128 to right channel amplitude. Unity gain is at 64 (center).              static const FloatTable PanCurve;       ///< Table that maps pan control change values 0..128 to right channel amplitude. Unity gain is at 64 (center).
102              static const FloatTable CrossfadeCurve; ///< Table that maps crossfade control change values 0..127 to amplitude. Unity gain is at 127.              static const FloatTable CrossfadeCurve; ///< Table that maps crossfade control change values 0..127 to amplitude. Unity gain is at 127.
103    
104                static float PanCurveValueNorm(float pan, int channel);
105    
106              AudioOutputDevice* pAudioOutputDevice;              AudioOutputDevice* pAudioOutputDevice;
107                            
108              //TODO: should be protected              //TODO: should be protected
109              AudioChannel* pDedicatedVoiceChannelLeft;  ///< encapsulates a special audio rendering buffer (left) for rendering and routing audio on a per voice basis (this is a very special case and only used for voices which lie on a note which was set with individual, dedicated FX send level)              AudioChannel* pDedicatedVoiceChannelLeft;  ///< encapsulates a special audio rendering buffer (left) for rendering and routing audio on a per voice basis (this is a very special case and only used for voices which lie on a note which was set with individual, dedicated FX send level)
110              AudioChannel* pDedicatedVoiceChannelRight; ///< encapsulates a special audio rendering buffer (right) for rendering and routing audio on a per voice basis (this is a very special case and only used for voices which lie on a note which was set with individual, dedicated FX send level)              AudioChannel* pDedicatedVoiceChannelRight; ///< encapsulates a special audio rendering buffer (right) for rendering and routing audio on a per voice basis (this is a very special case and only used for voices which lie on a note which was set with individual, dedicated FX send level)
111    
             typedef ResourceConsumer<VMParserContext> ScriptConsumer;  
   
             class ScriptResourceManager : public ResourceManager<String, VMParserContext> {  
                 protected:  
                     // implementation of derived abstract methods from 'ResourceManager'  
                     virtual VMParserContext* Create(String Key, ScriptConsumer* pConsumer, void*& pArg);  
                     virtual void         Destroy(VMParserContext* pResource, void* pArg);  
                     virtual void         OnBorrow(VMParserContext* pResource, ScriptConsumer* pConsumer, void*& pArg) {} // ignore  
                 public:  
                     ScriptResourceManager(AbstractEngine* parent) : parent(parent) {}  
                     virtual ~ScriptResourceManager() {}  
                 private:  
                     AbstractEngine* parent;  
             } scripts;  
   
112              friend class AbstractVoice;              friend class AbstractVoice;
113              friend class AbstractEngineChannel;              friend class AbstractEngineChannel;
114              template<class V, class R, class I> friend class EngineChannelBase;              template<class V, class R, class I> friend class EngineChannelBase;
115              template<class EC, class R, class S, class D> friend class VoiceBase;              template<class EC, class R, class S, class D> friend class VoiceBase;
116    
117          protected:          //protected:
118              ArrayList<EngineChannel*>  engineChannels; ///< All engine channels of a Engine instance.              ArrayList<EngineChannel*>  engineChannels; ///< All engine channels of a Engine instance.
119              ConditionServer            EngineDisabled;              ConditionServer            EngineDisabled;
120              int8_t                     ScaleTuning[12];    ///< contains optional detune factors (-64..+63 cents) for all 12 semitones of an octave              int8_t                     ScaleTuning[12];    ///< contains optional detune factors (-64..+63 cents) for all 12 semitones of an octave
# Line 163  namespace LinuxSampler { Line 153  namespace LinuxSampler {
153              virtual void ProcessControlChange(EngineChannel* pEngineChannel, Pool<Event>::Iterator& itControlChangeEvent) = 0;              virtual void ProcessControlChange(EngineChannel* pEngineChannel, Pool<Event>::Iterator& itControlChangeEvent) = 0;
154              virtual void ProcessChannelPressure(EngineChannel* pEngineChannel, Pool<Event>::Iterator& itChannelPressureEvent) = 0;              virtual void ProcessChannelPressure(EngineChannel* pEngineChannel, Pool<Event>::Iterator& itChannelPressureEvent) = 0;
155              virtual void ProcessPolyphonicKeyPressure(EngineChannel* pEngineChannel, Pool<Event>::Iterator& itNotePressureEvent) = 0;              virtual void ProcessPolyphonicKeyPressure(EngineChannel* pEngineChannel, Pool<Event>::Iterator& itNotePressureEvent) = 0;
156                virtual void ProcessReleaseTrigger(EngineChannel* pEngineChannel, RTList<Event>::Iterator& itEvent) = 0;
157              virtual int  GetMinFadeOutSamples() = 0;              virtual int  GetMinFadeOutSamples() = 0;
158              virtual InstrumentScriptVM* CreateInstrumentScriptVM();              virtual note_id_t LaunchNewNote(LinuxSampler::EngineChannel* pEngineChannel, Event* pNoteOnEvent) = 0;
159                virtual void CreateInstrumentScriptVM();
160    
161          private:          private:
162              static std::map<Format, std::map<AudioOutputDevice*,AbstractEngine*> > engines;              static std::map<Format, std::map<AudioOutputDevice*,AbstractEngine*> > engines;

Legend:
Removed from v.2600  
changed lines
  Added in v.2931

  ViewVC Help
Powered by ViewVC