1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef NULLSOFT_OUT_DS_VOLCTRL_H
- #define NULLSOFT_OUT_DS_VOLCTRL_H
- #include <windows.h>
- #include <mmsystem.h>
- #include <dsound.h>
- class DsVolCtrl
- {
- public:
- DsVolCtrl(int VolMode, double LogVolMin, bool logfades);
- void SetFade(__int64 duration, double destvol, double destpan);
- inline void SetFadeVol(__int64 duration, double destvol) {SetFade(duration, destvol, DestPanHack);}
- inline void SetFadePan(__int64 duration, double destpan) {SetFade(duration, DestVolHack, destpan);}
- __int64 RelFade(__int64 max, double destvol);
- void SetTime(__int64 time);
- void SetVolume(double vol);
- void SetPan(double pan);
- void Apply(IDirectSoundBuffer * pDSB);
- // inline double GetCurVol() {return CurVol;}
- inline double GetDestVol() { return DestVolHack;}
- inline void Reset() {CurTime = 0;FadeDstTime = -1;}
- double Stat_GetVolLeft();
- double Stat_GetVolRight();
- bool Fading();
- private:
- bool IsFading;
- int VolMode;
- double LogVolMin;
- double FadeSrcVol, FadeDstVol, FadeSrcPan, FadeDstPan;
- __int64 FadeSrcTime, FadeDstTime;
- __int64 CurTime;
- double CurVol, CurPan, LastVol, LastPan;
- double DestVolHack, DestPanHack;
- bool LogFades;
- void MapVol(double Vol, double Pan, double &NewVol, double &NewPan);
- };
- #endif
|