sinsound.h

来自「利用电脑练习和进行电台通联CW的软件」· C头文件 代码 · 共 56 行

H
56
字号
#pragma once

#define PI				3.1415926l

class CSinSound
{
public:
	CSinSound();
	~CSinSound();

	BOOL Initialize(HWND hWnd);

	void SetSampleRate(DWORD nSamplesPerSec);
	DWORD GetSampleRate() { return m_oFormat.nSamplesPerSec; };

	void SetBitsPerSample(WORD nBits);
	WORD GetBitsPerSample() { return m_oFormat.wBitsPerSample; };

	void SetBufferLength(double rMSec);
	double GetBufferLength() { return m_rBufferLengthMs; };

	void SetFrequency(double rFrequency);
	double GetFrequency() { return m_rFrequencyHz; };

	void SetScale(double rScale);
	double GetScale() { return m_rScale; };

	BOOL Validate();
	void Play();
	void Stop();

	void PlayBlank();
	void StopBlank();

private:

	BOOL InitBufferFormat();
	BOOL InitPlayedBuffer();
	BOOL WriteBuffer();

	LPDIRECTSOUND		m_pDs;
	LPDIRECTSOUNDBUFFER m_pBlankDsb;
	LPDIRECTSOUNDBUFFER	m_pDsb;

	WAVEFORMATEX		m_oFormat;
	DSBUFFERDESC		m_oPlayedBufferDesc;

	double				m_rBufferLengthMs;
	double				m_rFrequencyHz;
	double				m_rScale;

	BOOL				m_bFormatValid;
	BOOL				m_bDsbValid;
	BOOL				m_bDataValid;
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?