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

Diff of /linuxsampler/trunk/src/engines/sfz/SfzSignalUnitRack.h

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

revision 2218 by iliev, Thu Jul 28 08:05:57 2011 UTC revision 2219 by iliev, Thu Jul 28 12:35:49 2011 UTC
# Line 26  Line 26 
26  #include "../common/SignalUnitRack.h"  #include "../common/SignalUnitRack.h"
27  #include "EG.h"  #include "EG.h"
28  #include "EGADSR.h"  #include "EGADSR.h"
29    #include "../common/AbstractVoice.h"
30    
31  namespace LinuxSampler { namespace sfz {  namespace LinuxSampler { namespace sfz {
32      const int MaxUnitCount = 1000;      const int MaxUnitCount = 1000;
# Line 52  namespace LinuxSampler { namespace sfz { Line 53  namespace LinuxSampler { namespace sfz {
53      };      };
54            
55      template <class T>      template <class T>
56      class EGUnit : public SfzSignalUnit {      class EGUnit: public SfzSignalUnit {
57          public:          public:
58              ::sfz::EG* pEGInfo;              ::sfz::EG* pEGInfo;
59              T EG;              T EG;
60    
61              EGUnit(SfzSignalUnitRack* rack): SfzSignalUnit(rack), pEGInfo(NULL) { }              EGUnit(SfzSignalUnitRack* rack): SfzSignalUnit(rack), pEGInfo(NULL) { }
62              EGUnit(const EGUnit& Unit): SfzSignalUnit(Unit.pRack) { Copy(Unit); }              EGUnit(const EGUnit& Unit): SfzSignalUnit(Unit) { Copy(Unit); }
63              void operator=(const EGUnit& Unit) { Copy(Unit); }              void operator=(const EGUnit& Unit) { Copy(Unit); }
64                            
65              void Copy(const EGUnit& Unit) {              void Copy(const EGUnit& Unit) {
# Line 113  namespace LinuxSampler { namespace sfz { Line 114  namespace LinuxSampler { namespace sfz {
114              virtual void Trigger();              virtual void Trigger();
115      };      };
116            
117        class LFOUnit: public SfzSignalUnit {
118            public:
119                ::sfz::LFO* pLfoInfo;
120                LFOSigned lfo;
121                
122                LFOUnit(SfzSignalUnitRack* rack): SfzSignalUnit(rack), pLfoInfo(NULL), lfo(1200.0f) { }
123                LFOUnit(const LFOUnit& Unit): SfzSignalUnit(Unit), lfo(1200.0f) { Copy(Unit); }
124                void operator=(const LFOUnit& Unit) { Copy(Unit); }
125                
126                void Copy(const LFOUnit& Unit) {
127                    pLfoInfo = Unit.pLfoInfo;
128                    
129                    SfzSignalUnit::Copy(Unit);
130                }
131                
132                virtual bool  Active() { return true; }
133                virtual void  Trigger();
134                virtual void  Increment();
135                virtual float GetLevel() { return Level; }
136        };
137        
138        class LFOv2Unit: public LFOUnit {
139            public:
140                LFOv2Unit(SfzSignalUnitRack* rack): LFOUnit(rack) { }
141                
142                virtual void Trigger();
143        };
144        
145            
146            
147      class EndpointUnit : public EndpointSignalUnit {      class EndpointUnit : public EndpointSignalUnit {
# Line 130  namespace LinuxSampler { namespace sfz { Line 159  namespace LinuxSampler { namespace sfz {
159              virtual float GetFilterCutoff();              virtual float GetFilterCutoff();
160              virtual float GetPitch();              virtual float GetPitch();
161              virtual float GetResonance();              virtual float GetResonance();
162                virtual float GetPan();
163                            
164              SfzSignalUnitRack* const GetRack();              SfzSignalUnitRack* const GetRack();
165                
166                virtual float CalculateResonance(float res) {
167                    return GetResonance() + res;
168                }
169      };      };
170            
171            
# Line 148  namespace LinuxSampler { namespace sfz { Line 182  namespace LinuxSampler { namespace sfz {
182              // used for optimization - contains only the ones that are modulating pitch              // used for optimization - contains only the ones that are modulating pitch
183              FixedArray<EGv2Unit*> pitchEGs;              FixedArray<EGv2Unit*> pitchEGs;
184                            
185                
186                FixedArray<LFOv2Unit*> LFOs;
187                
188                // used for optimization - contains only the ones that are modulating filter cutoff
189                FixedArray<LFOv2Unit*> filLFOs;
190                
191                // used for optimization - contains only the ones that are modulating resonance
192                FixedArray<LFOv2Unit*> resLFOs;
193                
194                // used for optimization - contains only the ones that are modulating pan
195                FixedArray<LFOv2Unit*> panLFOs;
196                
197    
198          public:          public:
199              Voice* const pVoice;              Voice* const pVoice;

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

  ViewVC Help
Powered by ViewVC