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

Diff of /linuxsampler/trunk/src/engines/sf2/SF2SignalUnitRack.h

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

revision 2205 by iliev, Mon Jul 11 17:52:01 2011 UTC revision 3614 by schoenebeck, Tue Oct 1 09:11:27 2019 UTC
# Line 2  Line 2 
2   *                                                                         *   *                                                                         *
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2011 Grigor Iliev                                       *   *   Copyright (C) 2011 - 2012 Grigor Iliev                                *
6   *                                                                         *   *                                                                         *
7   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
8   *   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 28  Line 28 
28  #include "../common/AbstractVoice.h"  #include "../common/AbstractVoice.h"
29    
30  namespace LinuxSampler { namespace sf2 {  namespace LinuxSampler { namespace sf2 {
31        const int MaxUnitCount = 5;
32            
33      class Voice;      class Voice;
34        class SF2SignalUnitRack;
35            
36      class EGUnit : public SignalUnitBase<Voice>, public ::LinuxSampler::sfz::EGADSR {      class SFSignalUnit: public SignalUnit {
37          public:          public:
38              virtual bool  Active() { return active(); }              Voice* pVoice;
39              virtual float GetLevel() { return getLevel(); }  
40              virtual void  EnterReleaseStage();              SFSignalUnit(SF2SignalUnitRack* rack);
41              virtual void  CancelRelease();      };
42        
43        class EGUnit : public SFSignalUnit, public ::LinuxSampler::sfz::EGADSR {
44            public:
45                EGUnit(SF2SignalUnitRack* rack): SFSignalUnit(rack) { }
46    
47                virtual bool  Active() OVERRIDE { return active(); }
48                virtual float GetLevel() OVERRIDE { return getLevel(); }
49                virtual void  EnterReleaseStage() OVERRIDE;
50                virtual void  CancelRelease() OVERRIDE;
51      };      };
52    
53      class VolEGUnit : public EGUnit {      class VolEGUnit : public EGUnit {
54          public:          public:
55              virtual void  Trigger();              VolEGUnit(SF2SignalUnitRack* rack): EGUnit(rack) { }
56              virtual void  Increment();  
57                virtual void  Trigger() OVERRIDE;
58                virtual void  Increment() OVERRIDE;
59      };      };
60    
61      class ModEGUnit : public EGUnit {      class ModEGUnit : public EGUnit {
62          public:          public:
63              virtual void  Trigger();              ModEGUnit(SF2SignalUnitRack* rack): EGUnit(rack) { }
64              virtual void  Increment();  
65                virtual void  Trigger() OVERRIDE;
66                virtual void  Increment() OVERRIDE;
67      };      };
68    
69      class VibLfoUnit : public SignalUnitBase<Voice>, public LFOSigned {      class ModLfoUnit : public SFSignalUnit, public LFOTriangleSigned {
70          public:          public:
71              VibLfoUnit(): LFOSigned(1200.0f) { }              ModLfoUnit(SF2SignalUnitRack* rack): SFSignalUnit(rack), LFOTriangleSigned(1200.0f) { }
72              virtual bool  Active() { return true; }              virtual bool  Active() OVERRIDE { return true; }
73              virtual void  Trigger();              virtual void  Trigger() OVERRIDE;
74              virtual void  Increment();              virtual void  Increment() OVERRIDE;
75              virtual float GetLevel() { return Level; }              virtual float GetLevel() OVERRIDE { return Level; }
76        };
77    
78        class VibLfoUnit : public SFSignalUnit, public LFOTriangleSigned {
79            public:
80                VibLfoUnit(SF2SignalUnitRack* rack): SFSignalUnit(rack), LFOTriangleSigned(1200.0f) { }
81                virtual bool  Active() OVERRIDE { return true; }
82                virtual void  Trigger() OVERRIDE;
83                virtual void  Increment() OVERRIDE;
84                virtual float GetLevel() OVERRIDE { return Level; }
85      };      };
86            
87      class EndpointUnit : public EndpointSignalUnitBase<Voice> {      class EndpointUnit : public EndpointSignalUnit {
88          public:          public:
89              EndpointUnit() { }              Voice* pVoice;
90    
91                Parameter *prmVolEg, *prmModEgPitch, *prmModEgCutoff, *prmModLfoVol,
92                          *prmModLfoPitch, *prmModLfoCutoff, *prmVibLfo;
93    
94                EndpointUnit(SF2SignalUnitRack* rack);
95    
96              virtual void Trigger();              virtual void Trigger() OVERRIDE;
97    
98              /** The endpoint should be active until the volume EG is active. */              /** The endpoint should be active until the volume EG is active. */
99              virtual bool Active();              virtual bool Active() OVERRIDE;
100                            
101              virtual float GetVolume();              virtual float GetVolume() OVERRIDE;
102              virtual float GetFilterCutoff();              virtual float GetFilterCutoff() OVERRIDE;
103              virtual float GetPitch();              virtual float GetPitch() OVERRIDE;
104              virtual float GetResonance();              virtual float GetResonance() OVERRIDE;
105                virtual float GetPan() OVERRIDE { return 0; }
106                virtual uint8_t CalculatePan(int pan) OVERRIDE { return pan; }
107      };      };
108            
109      class SF2SignalUnitRack : public SignalUnitRackBase<Voice> {      class SF2SignalUnitRack : public SignalUnitRack {
110          private:          private:
111              VolEGUnit     suVolEG;              VolEGUnit     suVolEG;
112              ModEGUnit     suModEG;              ModEGUnit     suModEG;
113                ModLfoUnit    suModLfo;
114              VibLfoUnit    suVibLfo;              VibLfoUnit    suVibLfo;
115              EndpointUnit  suEndpoint;              EndpointUnit  suEndpoint;
116                            
117    
118          public:          public:
119                Voice* const pVoice;
120                    
121              /**              /**
122               * @param Voice The voice to which this rack belongs.               * @param Voice The voice to which this rack belongs.
123               */               */
124              SF2SignalUnitRack(Voice* Voice);              SF2SignalUnitRack(Voice* Voice);
125    
126              virtual void                 Trigger();              virtual EndpointSignalUnit* GetEndpointUnit() OVERRIDE;
127              virtual EndpointSignalUnit*  GetEndpointUnit();              virtual void EnterFadeOutStage() OVERRIDE;
128                virtual void EnterFadeOutStage(int maxFadeOutSteps) OVERRIDE;
129    
130                void CalculateFadeOutCoeff(float FadeOutTime, float SampleRate);
131                
132                virtual void UpdateEqSettings(EqSupport* pEqSupport) OVERRIDE { }
133      };      };
134            
135  }} // namespace LinuxSampler::sf2  }} // namespace LinuxSampler::sf2
136    
137  #endif  /* __LS_SF2SIGNALUNITRACK_H__ */  #endif  /* __LS_SF2SIGNALUNITRACK_H__ */
   

Legend:
Removed from v.2205  
changed lines
  Added in v.3614

  ViewVC Help
Powered by ViewVC