mirror of
https://github.com/tildearrow/furnace.git
synced 2024-12-02 01:07:25 +00:00
102 lines
2.9 KiB
C
102 lines
2.9 KiB
C
// Part of SAASound copyright 1998-2018 Dave Hooper <dave@beermex.com>
|
|
//
|
|
// **********
|
|
// * PUBLIC *
|
|
// **********
|
|
//
|
|
// SAASndC.h: "C-style" interface for the CSAASound class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef SAASNDC_H_INCLUDED
|
|
#define SAASNDC_H_INCLUDED
|
|
|
|
#ifdef _MSC_VER
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
#endif
|
|
|
|
#ifndef SAASOUND_H_INCLUDED
|
|
|
|
// Parameters for use with SetSoundParameters, for example,
|
|
// SetSoundParameters(SAAP_NOFILTER | SAAP_44100 | SAAP_16BIT | SAAP_STEREO);
|
|
#define SAAP_FILTER_HIGHPASS_SIMPLE 0x00000400
|
|
#define SAAP_FILTER_OVERSAMPLE64x 0x00000300
|
|
#define SAAP_FILTER_OVERSAMPLE2x 0x00000200
|
|
#define SAAP_FILTER SAAP_FILTER_OVERSAMPLE2x
|
|
#define SAAP_NOFILTER 0x00000100
|
|
#define SAAP_44100 0x00000030
|
|
#define SAAP_22050 0x00000020
|
|
#define SAAP_11025 0x00000010
|
|
#define SAAP_16BIT 0x0000000c
|
|
#define SAAP_8BIT 0x00000004
|
|
#define SAAP_STEREO 0x00000003
|
|
#define SAAP_MONO 0x00000001
|
|
|
|
// Bitmasks for use with GetCurrentSoundParameters, for example,
|
|
// unsigned int CurrentSampleRateParameter = GetCurrentSoundParameters()
|
|
#define SAAP_MASK_FILTER 0x00000f00
|
|
#define SAAP_MASK_FILTER_HIGHPASS 0x00000c00
|
|
#define SAAP_MASK_FILTER_OVERSAMPLE 0x00000300
|
|
#define SAAP_MASK_SAMPLERATE 0x000000030
|
|
#define SAAP_MASK_BITDEPTH 0x0000000c
|
|
#define SAAP_MASK_CHANNELS 0x00000003
|
|
|
|
typedef unsigned int SAAPARAM;
|
|
|
|
|
|
#ifndef BYTE
|
|
#define BYTE unsigned char
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
#ifndef WINAPI
|
|
#define WINAPI __stdcall
|
|
#endif
|
|
#define EXTAPI __declspec(dllexport) WINAPI
|
|
#else // Win32
|
|
#ifndef WINAPI
|
|
#define WINAPI /**/
|
|
#endif
|
|
#define EXTAPI /**/
|
|
#endif // Win32
|
|
|
|
#endif // SAASOUND_H_INCLUDED
|
|
|
|
typedef void * SAASND;
|
|
|
|
// the following are implemented as calls, etc, to a class.
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
SAASND EXTAPI newSAASND(void);
|
|
void EXTAPI deleteSAASND(SAASND object);
|
|
|
|
void EXTAPI SAASNDSetSoundParameters(SAASND object, SAAPARAM uParam);
|
|
void EXTAPI SAASNDWriteAddress(SAASND object, BYTE nReg);
|
|
void EXTAPI SAASNDWriteData(SAASND object, BYTE nData);
|
|
void EXTAPI SAASNDWriteAddressData(SAASND object, BYTE nReg, BYTE nData);
|
|
void EXTAPI SAASNDClear(SAASND object);
|
|
BYTE EXTAPI SAASNDReadAddress(SAASND object);
|
|
|
|
SAAPARAM EXTAPI SAASNDGetCurrentSoundParameters(SAASND object);
|
|
unsigned short EXTAPI SAASNDGetCurrentBytesPerSample(SAASND object);
|
|
unsigned short EXTAPI SAASNDGetBytesPerSample(SAAPARAM uParam);
|
|
unsigned int EXTAPI SAASNDGetCurrentSampleRate(SAASND object);
|
|
unsigned int EXTAPI SAASNDGetSampleRate(SAAPARAM uParam);
|
|
|
|
void EXTAPI SAASNDGenerateMany(SAASND object, BYTE * pBuffer, unsigned int nSamples);
|
|
|
|
void EXTAPI SAASNDSetClockRate(SAASND object, unsigned int nClockRate);
|
|
void EXTAPI SAASNDSetSampleRate(SAASND object, unsigned int nSampleRate);
|
|
void EXTAPI SAASNDSetOversample(SAASND object, unsigned int nOversample);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}; // extern "C"
|
|
#endif
|
|
|
|
#endif // SAASNDC_H_INCLUDED
|