mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-12-22 09:30:15 +00:00
71c67cf132
Mockingboard or Phasor cards can be inserted into any slot. Change Config->Sound to that slots 4+5 to be individually selected for the 3 soundcard types. Add MockingboardCardManager class to manage multiple cards and mix the sound buffers.
74 lines
1.9 KiB
C++
74 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#define MAX_SAMPLES (16*1024)
|
|
|
|
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
|
|
|
|
struct VOICE
|
|
{
|
|
LPDIRECTSOUNDBUFFER lpDSBvoice;
|
|
LPDIRECTSOUNDNOTIFY lpDSNotify;
|
|
bool bActive; // Playback is active
|
|
bool bMute;
|
|
LONG nVolume; // Current volume (as used by DirectSound)
|
|
LONG nFadeVolume; // Current fade volume (as used by DirectSound)
|
|
DWORD dwUserVolume; // Volume from slider on Property Sheet (0=Max)
|
|
bool bIsSpeaker;
|
|
bool bRecentlyActive; // (Speaker only) false after 0.2s of speaker inactivity
|
|
std::string name;
|
|
|
|
VOICE(void)
|
|
{
|
|
lpDSBvoice = NULL;
|
|
lpDSNotify = NULL;
|
|
bActive = false;
|
|
bMute = false;
|
|
nVolume = 0;
|
|
nFadeVolume = 0;
|
|
dwUserVolume = 0;
|
|
bIsSpeaker = false;
|
|
bRecentlyActive = false;
|
|
name = "";
|
|
}
|
|
|
|
~VOICE(void);
|
|
};
|
|
|
|
typedef VOICE* PVOICE;
|
|
|
|
HRESULT DSGetLock(LPDIRECTSOUNDBUFFER pVoice, DWORD dwOffset, DWORD dwBytes,
|
|
SHORT** ppDSLockedBuffer0, DWORD* pdwDSLockedBufferSize0,
|
|
SHORT** ppDSLockedBuffer1, DWORD* pdwDSLockedBufferSize1);
|
|
|
|
HRESULT DSGetSoundBuffer(VOICE* pVoice, DWORD dwFlags, DWORD dwBufferSize, DWORD nSampleRate, int nChannels, const char* pszDevName);
|
|
void DSReleaseSoundBuffer(VOICE* pVoice);
|
|
|
|
bool DSVoiceStop(PVOICE Voice);
|
|
bool DSZeroVoiceBuffer(PVOICE Voice, DWORD dwBufferSize);
|
|
bool DSZeroVoiceWritableBuffer(PVOICE Voice, DWORD dwBufferSize);
|
|
|
|
enum eFADE {FADE_NONE, FADE_IN, FADE_OUT};
|
|
void SoundCore_SetFade(eFADE FadeType);
|
|
bool SoundCore_GetTimerState();
|
|
void SoundCore_TweakVolumes();
|
|
|
|
int SoundCore_GetErrorInc();
|
|
void SoundCore_SetErrorInc(const int nErrorInc);
|
|
int SoundCore_GetErrorMax();
|
|
void SoundCore_SetErrorMax(const int nErrorMax);
|
|
|
|
bool DSInit();
|
|
void DSUninit();
|
|
|
|
LONG NewVolume(DWORD dwVolume, DWORD dwVolumeMax);
|
|
|
|
void SysClk_WaitTimer();
|
|
bool SysClk_InitTimer();
|
|
void SysClk_UninitTimer();
|
|
void SysClk_StartTimerUsec(DWORD dwUsecPeriod);
|
|
void SysClk_StopTimer();
|
|
|
|
//
|
|
|
|
extern bool g_bDSAvailable;
|