77 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable file
		
	
	
	
	
// Part of SAASound copyright 1998-2018 Dave Hooper <dave@beermex.com>
 | 
						|
//
 | 
						|
// This is the internal implementation (header file) of the SAASound object.
 | 
						|
// This is done so that the external interface to the object always stays the same
 | 
						|
// (SAASound.h) even though the internal object can change
 | 
						|
// .. Meaning future releases don't require relinking everyone elses code against
 | 
						|
//    the updated saasound stuff
 | 
						|
//
 | 
						|
//////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef SAAIMPL_H_INCLUDED
 | 
						|
#define SAAIMPL_H_INCLUDED
 | 
						|
 | 
						|
#include "SAASound.h"
 | 
						|
#include "SAADevice.h"
 | 
						|
#ifdef USE_CONFIG_FILE
 | 
						|
#include "SAAConfig.h"
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined(DEBUGSAA) || defined(USE_CONFIG_FILE)
 | 
						|
#include <ios>
 | 
						|
#include <iostream>
 | 
						|
#include <fstream>
 | 
						|
 | 
						|
#if defined(USE_CONFIG_FILE)
 | 
						|
const int CHANNEL_BUFFER_SIZE=1024;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
class CSAASoundInternal : public CSAASound
 | 
						|
{
 | 
						|
private:
 | 
						|
	CSAADevice m_chip;
 | 
						|
	int m_uParam, m_uParamRate;
 | 
						|
	unsigned int m_nClockRate; 
 | 
						|
	unsigned int m_nSampleRate;
 | 
						|
	unsigned int m_nOversample;
 | 
						|
	bool m_bHighpass;
 | 
						|
  double filterout_z1_left_mixed, filterout_z1_right_mixed;
 | 
						|
#ifdef USE_CONFIG_FILE
 | 
						|
	SAAConfig m_Config;
 | 
						|
#endif
 | 
						|
#if defined(DEBUGSAA) || defined(USE_CONFIG_FILE)
 | 
						|
	unsigned long m_nDebugSample;
 | 
						|
	std::ofstream m_dbgfile, m_pcmfile;
 | 
						|
#if defined(USE_CONFIG_FILE)
 | 
						|
	std::ofstream m_channel_pcmfile[6];
 | 
						|
	BYTE m_pChannelBuffer[6][CHANNEL_BUFFER_SIZE];
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
public:
 | 
						|
	CSAASoundInternal();
 | 
						|
	~CSAASoundInternal();
 | 
						|
 | 
						|
	void SetClockRate(unsigned int nClockRate);
 | 
						|
	void SetSampleRate(unsigned int nClockRate);
 | 
						|
	void SetOversample(unsigned int nOversample);
 | 
						|
	void SetSoundParameters(SAAPARAM uParam);
 | 
						|
	void WriteAddress(BYTE nReg);
 | 
						|
	void WriteData(BYTE nData);
 | 
						|
	void WriteAddressData(BYTE nReg, BYTE nData);
 | 
						|
	BYTE ReadAddress(void);
 | 
						|
	void Clear(void);
 | 
						|
 | 
						|
	SAAPARAM GetCurrentSoundParameters(void);
 | 
						|
	unsigned long GetCurrentSampleRate(void);
 | 
						|
	static unsigned long GetSampleRate(SAAPARAM uParam);
 | 
						|
	unsigned short GetCurrentBytesPerSample(void);
 | 
						|
	static unsigned short GetBytesPerSample(SAAPARAM uParam);
 | 
						|
 | 
						|
	void GenerateMany(BYTE * pBuffer, unsigned long nSamples, DivDispatchOscBuffer** oscBuf);
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
#endif // SAAIMPL_H_INCLUDED
 |