--- linuxsampler/trunk/src/engines/sfz/SfzSignalUnitRack.h 2011/07/28 12:35:49 2219 +++ linuxsampler/trunk/src/engines/sfz/SfzSignalUnitRack.h 2011/07/28 18:24:12 2222 @@ -69,7 +69,7 @@ } virtual bool Active() { return EG.active(); } - virtual float GetLevel() { return EG.getLevel(); } + virtual float GetLevel() { return DelayStage() ? 0 : EG.getLevel(); } virtual void EnterReleaseStage() { EG.update(EG::event_release, GetSampleRate()); } virtual void CancelRelease() { EG.update(EG::event_cancel_release, GetSampleRate()); } @@ -104,7 +104,8 @@ class EGv1Unit: public EGUnit { public: - EGv1Unit(SfzSignalUnitRack* rack): EGUnit(rack) { } + int depth; + EGv1Unit(SfzSignalUnitRack* rack): EGUnit(rack), depth(0) { } virtual void Trigger(); }; @@ -114,6 +115,18 @@ virtual void Trigger(); }; + class PitchEGUnit: public EGv1Unit { + public: + PitchEGUnit(SfzSignalUnitRack* rack): EGv1Unit(rack) { } + virtual void Trigger(); + }; + + class FilEGUnit: public EGv1Unit { + public: + FilEGUnit(SfzSignalUnitRack* rack): EGv1Unit(rack) { } + virtual void Trigger(); + }; + class LFOUnit: public SfzSignalUnit { public: ::sfz::LFO* pLfoInfo; @@ -135,6 +148,15 @@ virtual float GetLevel() { return Level; } }; + class LFOv1Unit: public LFOUnit { + public: + ::sfz::LFO lfoInfo; + + LFOv1Unit(SfzSignalUnitRack* rack): LFOUnit(rack) { pLfoInfo = &lfoInfo; } + + virtual void Trigger(); + }; + class LFOv2Unit: public LFOUnit { public: LFOv2Unit(SfzSignalUnitRack* rack): LFOUnit(rack) { } @@ -142,6 +164,27 @@ virtual void Trigger(); }; + class AmpLFOUnit: public LFOv1Unit { + public: + AmpLFOUnit(SfzSignalUnitRack* rack): LFOv1Unit(rack) { } + + virtual void Trigger(); + }; + + class PitchLFOUnit: public LFOv1Unit { + public: + PitchLFOUnit(SfzSignalUnitRack* rack): LFOv1Unit(rack) { } + + virtual void Trigger(); + }; + + class FilLFOUnit: public LFOv1Unit { + public: + FilLFOUnit(SfzSignalUnitRack* rack): LFOv1Unit(rack) { } + + virtual void Trigger(); + }; + class EndpointUnit : public EndpointSignalUnit { @@ -173,6 +216,12 @@ private: EndpointUnit suEndpoint; EGv1Unit suVolEG; + FilEGUnit suFilEG; + PitchEGUnit suPitchEG; + + AmpLFOUnit suAmpLFO; + PitchLFOUnit suPitchLFO; + FilLFOUnit suFilLFO; FixedArray EGs;