55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
![]() |
// Part of SAASound copyright 1998-2018 Dave Hooper <dave@beermex.com>
|
||
|
//
|
||
|
// SAANoise.h: interface for the CSAANoise class.
|
||
|
//
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef SAANOISE_H_INCLUDED
|
||
|
#define SAANOISE_H_INCLUDED
|
||
|
|
||
|
class CSAANoise
|
||
|
{
|
||
|
private:
|
||
|
unsigned long m_nCounter;
|
||
|
unsigned long m_nAdd;
|
||
|
unsigned long m_nCounter_low;
|
||
|
unsigned int m_nOversample;
|
||
|
unsigned long m_nCounterLimit_low;
|
||
|
bool m_bSync; // see description of "SYNC" bit of register 28
|
||
|
unsigned long m_nSampleRate; // = 44100 when RateMode=0, for example
|
||
|
int m_nSourceMode;
|
||
|
unsigned long m_nAddBase; // nAdd for 31.25 kHz noise at 44.1 kHz samplerate
|
||
|
|
||
|
// pseudo-random number generator
|
||
|
unsigned long m_nRand;
|
||
|
|
||
|
void ChangeLevel(void);
|
||
|
|
||
|
|
||
|
public:
|
||
|
CSAANoise();
|
||
|
CSAANoise(unsigned long seed);
|
||
|
~CSAANoise();
|
||
|
|
||
|
void SetSource(int nSource);
|
||
|
void Trigger(void);
|
||
|
void _SetSampleRate(int nSampleRate);
|
||
|
void _SetOversample(unsigned int oversample);
|
||
|
void _SetClockRate(int nClockRate);
|
||
|
void Seed(unsigned long seed);
|
||
|
|
||
|
void Tick(void);
|
||
|
int Level(void) const;
|
||
|
void Sync(bool bSync);
|
||
|
|
||
|
};
|
||
|
|
||
|
inline int CSAANoise::Level(void) const
|
||
|
{
|
||
|
// returns 0 or 1
|
||
|
return (m_nRand & 0x00000001);
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif // SAANOISE_H_INCLUDED
|