Clean up more libsegaapi
This commit is contained in:
parent
8f613f23c9
commit
7f8d38d034
@ -305,10 +305,13 @@ int SEGAAPI_Pause(void *hHandle)
|
|||||||
int SEGAAPI_Stop(void *hHandle)
|
int SEGAAPI_Stop(void *hHandle)
|
||||||
{
|
{
|
||||||
dbgPrint("SEGAAPI_Stop() 0x%x", hHandle);
|
dbgPrint("SEGAAPI_Stop() 0x%x", hHandle);
|
||||||
|
|
||||||
SEGAContext *context = hHandle;
|
SEGAContext *context = hHandle;
|
||||||
if (context == NULL)
|
if (context == NULL)
|
||||||
return SEGAERR_BAD_PARAM;
|
return SEGAERR_BAD_PARAM;
|
||||||
|
|
||||||
alSourceStop(context->alSource);
|
alSourceStop(context->alSource);
|
||||||
|
|
||||||
return SEGA_SUCCESS;
|
return SEGA_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -598,10 +601,8 @@ int SEGAAPI_UpdateBuffer(void *hHandle, unsigned int dwStartOffset, unsigned int
|
|||||||
{
|
{
|
||||||
dbgPrint("SEGAAPI_UpdateBuffer() 0x%x 0x%x 0x%x", hHandle, dwStartOffset, dwLength);
|
dbgPrint("SEGAAPI_UpdateBuffer() 0x%x 0x%x 0x%x", hHandle, dwStartOffset, dwLength);
|
||||||
if (hHandle == NULL)
|
if (hHandle == NULL)
|
||||||
{
|
|
||||||
dbgPrint("SEGAAPI_UpdateBuffer() SEGAERR_BAD_HANDLE");
|
|
||||||
return SEGAERR_BAD_HANDLE;
|
return SEGAERR_BAD_HANDLE;
|
||||||
}
|
|
||||||
SEGAContext *context = hHandle;
|
SEGAContext *context = hHandle;
|
||||||
updateBufferData(context, dwStartOffset, dwLength);
|
updateBufferData(context, dwStartOffset, dwLength);
|
||||||
return SEGA_SUCCESS;
|
return SEGA_SUCCESS;
|
||||||
@ -609,10 +610,6 @@ int SEGAAPI_UpdateBuffer(void *hHandle, unsigned int dwStartOffset, unsigned int
|
|||||||
|
|
||||||
int SEGAAPI_SetSynthParam(void *hHandle, HASYNTHPARAMSEXT param, int lPARWValue)
|
int SEGAAPI_SetSynthParam(void *hHandle, HASYNTHPARAMSEXT param, int lPARWValue)
|
||||||
{
|
{
|
||||||
float volume;
|
|
||||||
float semiTones;
|
|
||||||
float freqRatio;
|
|
||||||
|
|
||||||
dbgPrint("SEGAAPI_SetSynthParam() 0x%x 0x%x 0x%x", hHandle, param, lPARWValue);
|
dbgPrint("SEGAAPI_SetSynthParam() 0x%x 0x%x 0x%x", hHandle, param, lPARWValue);
|
||||||
|
|
||||||
SEGAContext *context = hHandle;
|
SEGAContext *context = hHandle;
|
||||||
@ -620,125 +617,34 @@ int SEGAAPI_SetSynthParam(void *hHandle, HASYNTHPARAMSEXT param, int lPARWValue)
|
|||||||
if (context == NULL)
|
if (context == NULL)
|
||||||
return SEGAERR_BAD_PARAM;
|
return SEGAERR_BAD_PARAM;
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
StartAddrsOffset,
|
|
||||||
EndAddrsOffset,
|
|
||||||
StartloopAddrsOffset,
|
|
||||||
EndloopAddrsOffset,
|
|
||||||
StartAddrsCoarseOffset,
|
|
||||||
ModLfoToPitch,
|
|
||||||
VibLfoToPitch,
|
|
||||||
ModEnvToPitch,
|
|
||||||
InitialFilterFc,
|
|
||||||
InitialFilterQ,
|
|
||||||
ModLfoToFilterFc,
|
|
||||||
ModEnvToFilterFc,
|
|
||||||
EndAddrsCoarseOffset,
|
|
||||||
ModLfoToVolume,
|
|
||||||
Unused1,
|
|
||||||
ChorusEffectsSend,
|
|
||||||
ReverbEffectsSend,
|
|
||||||
Pan,
|
|
||||||
Unused2,
|
|
||||||
Unused3,
|
|
||||||
Unused4,
|
|
||||||
DelayModLFO,
|
|
||||||
FreqModLFO,
|
|
||||||
DelayVibLFO,
|
|
||||||
FreqVibLFO,
|
|
||||||
DelayModEnv,
|
|
||||||
AttackModEnv,
|
|
||||||
HoldModEnv,
|
|
||||||
DecayModEnv,
|
|
||||||
SustainModEnv,
|
|
||||||
ReleaseModEnv,
|
|
||||||
KeynumToModEnvHold,
|
|
||||||
KeynumToModEnvDecay,
|
|
||||||
DelayVolEnv,
|
|
||||||
AttackVolEnv,
|
|
||||||
HoldVolEnv,
|
|
||||||
DecayVolEnv,
|
|
||||||
SustainVolEnv,
|
|
||||||
ReleaseVolEnv,
|
|
||||||
KeynumToVolEnvHold,
|
|
||||||
KeynumToVolEnvDecay,
|
|
||||||
Instrument,
|
|
||||||
Reserved1,
|
|
||||||
KeyRange,
|
|
||||||
VelRange,
|
|
||||||
StartloopAddrsCoarseOffset,
|
|
||||||
Keynum,
|
|
||||||
Velocity,
|
|
||||||
InitialAttenuation,
|
|
||||||
Reserved2,
|
|
||||||
EndloopAddrsCoarseOffset,
|
|
||||||
CoarseTune,
|
|
||||||
FineTune,
|
|
||||||
SampleID,
|
|
||||||
SampleModes,
|
|
||||||
Reserved3,
|
|
||||||
ScaleTuning,
|
|
||||||
ExclusiveClass,
|
|
||||||
OverridingRootKey,
|
|
||||||
Unused5,
|
|
||||||
EndOper
|
|
||||||
};
|
|
||||||
|
|
||||||
int mapping[26] = {
|
|
||||||
InitialAttenuation, ///< 0, 0x00, initialAttenuation
|
|
||||||
FineTune, ///< 1, 0x01, fineTune + coarseTune * 100
|
|
||||||
InitialFilterFc, ///< 2, 0x02, initialFilterFc
|
|
||||||
InitialFilterQ, ///< 3, 0x03, initialFilterQ
|
|
||||||
DelayVolEnv, ///< 4, 0x04, delayVolEnv
|
|
||||||
AttackVolEnv, ///< 5, 0x05, attackVolEnv
|
|
||||||
HoldVolEnv, ///< 6, 0x06, holdVolEnv
|
|
||||||
DecayVolEnv, ///< 7, 0x07, decayVolEnv
|
|
||||||
SustainVolEnv, ///< 8, 0x08, sustainVolEnv
|
|
||||||
ReleaseVolEnv, ///< 9, 0x09, releaseVolEnv
|
|
||||||
DelayModEnv, ///< 10, 0x0A, delayModEnv
|
|
||||||
AttackModEnv, ///< 11, 0x0B, attackModEnv
|
|
||||||
HoldModEnv, ///< 12, 0x0C, holdModEnv
|
|
||||||
DecayModEnv, ///< 13, 0x0D, decayModEnv
|
|
||||||
SustainModEnv, ///< 14, 0x0E, sustainModEnv
|
|
||||||
ReleaseModEnv, ///< 15, 0x0F, releaseModEnv
|
|
||||||
DelayModLFO, ///< 16, 0x10, delayModLFO
|
|
||||||
FreqModLFO, ///< 17, 0x11, freqModLFO
|
|
||||||
DelayVibLFO, ///< 18, 0x12, delayVibLFO
|
|
||||||
FreqVibLFO, ///< 19, 0x13, freqVibLFO
|
|
||||||
ModLfoToPitch, ///< 20, 0x14, modLfoToPitch
|
|
||||||
VibLfoToPitch, ///< 21, 0x15, vibLfoToPitch
|
|
||||||
ModLfoToFilterFc, ///< 22, 0x16, modLfoToFilterFc
|
|
||||||
ModLfoToVolume, ///< 23, 0x17, modLfoToVolume
|
|
||||||
ModEnvToPitch, ///< 24, 0x18, modEnvToPitch
|
|
||||||
ModEnvToFilterFc ///< 25, 0x19, modEnvToFilterFc
|
|
||||||
};
|
|
||||||
|
|
||||||
int realParam = mapping[param];
|
|
||||||
|
|
||||||
switch (param)
|
switch (param)
|
||||||
{
|
{
|
||||||
case HAVP_ATTENUATION:
|
case HAVP_ATTENUATION:
|
||||||
volume = tsf_decibelsToGain(0.0f - lPARWValue / 10.0f);
|
{
|
||||||
|
float volume = tsf_decibelsToGain(0.0f - lPARWValue / 10.0f);
|
||||||
alListenerf(AL_GAIN, volume);
|
alListenerf(AL_GAIN, volume);
|
||||||
// buffer->xaVoice->SetVolume(volume);
|
// buffer->xaVoice->SetVolume(volume);
|
||||||
dbgPrint("SEGAAPI_SetSynthParam() HAVP_ATTENUATION gain: %f dB: %d", volume, lPARWValue);
|
dbgPrint("SEGAAPI_SetSynthParam() HAVP_ATTENUATION gain: %f dB: %d", volume, lPARWValue);
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case HAVP_PITCH:
|
case HAVP_PITCH:
|
||||||
semiTones = lPARWValue / 100.0f;
|
{
|
||||||
|
float semiTones = lPARWValue / 100.0f;
|
||||||
// freqRatio = XAudio2SemitonesToFrequencyRatio(semiTones);
|
// freqRatio = XAudio2SemitonesToFrequencyRatio(semiTones);
|
||||||
// http://www-personal.umich.edu/~bazald/l/api/_x_audio2_8h_source.html
|
// http://www-personal.umich.edu/~bazald/l/api/_x_audio2_8h_source.html
|
||||||
freqRatio = powf(2.0f, semiTones / 12.0f);
|
float freqRatio = powf(2.0f, semiTones / 12.0f);
|
||||||
|
|
||||||
// buffer->xaVoice->SetFrequencyRatio(freqRatio);
|
// buffer->xaVoice->SetFrequencyRatio(freqRatio);
|
||||||
alSourcef(context->alSource, AL_PITCH, freqRatio);
|
alSourcef(context->alSource, AL_PITCH, freqRatio);
|
||||||
dbgPrint("SEGAAPI_SetSynthParam() HAVP_PITCH hHandle: %08X semitones: %f freqRatio: %f", hHandle, semiTones, freqRatio);
|
dbgPrint("SEGAAPI_SetSynthParam() HAVP_PITCH hHandle: %08X semitones: %f freqRatio: %f", hHandle, semiTones, freqRatio);
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
dbgPrint("SEGAAPI_SetSynthParam() unsupported param: 0x%x", param);
|
dbgPrint("SEGAAPI_SetSynthParam() unsupported param: 0x%x", param);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SEGAERR_UNSUPPORTED;
|
return SEGA_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SEGAAPI_GetSynthParam(void *hHandle, HASYNTHPARAMSEXT param)
|
int SEGAAPI_GetSynthParam(void *hHandle, HASYNTHPARAMSEXT param)
|
||||||
@ -751,15 +657,16 @@ int SEGAAPI_SetSynthParamMultiple(void *hHandle, unsigned int dwNumParams, Synth
|
|||||||
{
|
{
|
||||||
dbgPrint("SEGAAPI_SetSynthParamMultiple() 0x%x 0x%x 0x%x", hHandle, dwNumParams, pSynthParams);
|
dbgPrint("SEGAAPI_SetSynthParamMultiple() 0x%x 0x%x 0x%x", hHandle, dwNumParams, pSynthParams);
|
||||||
SEGAContext *context = hHandle;
|
SEGAContext *context = hHandle;
|
||||||
|
|
||||||
if (context == NULL)
|
if (context == NULL)
|
||||||
return SEGAERR_BAD_PARAM;
|
return SEGAERR_BAD_HANDLE;
|
||||||
|
|
||||||
for (int i = 0; i < dwNumParams; i++)
|
for (int i = 0; i < dwNumParams; i++)
|
||||||
{
|
{
|
||||||
SEGAAPI_SetSynthParam(hHandle, pSynthParams[i].param, pSynthParams[i].lPARWValue);
|
SEGAAPI_SetSynthParam(hHandle, pSynthParams[i].param, pSynthParams[i].lPARWValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SEGAERR_UNSUPPORTED;
|
return SEGA_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SEGAAPI_GetSynthParamMultiple(void *hHandle, unsigned int dwNumParams, SynthParamSet *pSynthParams)
|
int SEGAAPI_GetSynthParamMultiple(void *hHandle, unsigned int dwNumParams, SynthParamSet *pSynthParams)
|
||||||
@ -768,10 +675,21 @@ int SEGAAPI_GetSynthParamMultiple(void *hHandle, unsigned int dwNumParams, Synth
|
|||||||
return SEGAERR_UNSUPPORTED;
|
return SEGAERR_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SEGAAPI_SetReleaseState(void *hHandle, int bSet)
|
int SEGAAPI_SetReleaseState(void *hHandle, int enterReleasePhase)
|
||||||
{
|
{
|
||||||
dbgPrint("SEGAAPI_SetReleaseState() 0x%x 0x%x", hHandle, bSet);
|
dbgPrint("SEGAAPI_SetReleaseState() 0x%x 0x%x", hHandle, enterReleasePhase);
|
||||||
return SEGAERR_UNSUPPORTED;
|
if (hHandle == NULL)
|
||||||
|
return SEGAERR_BAD_HANDLE;
|
||||||
|
|
||||||
|
SEGAContext *context = hHandle;
|
||||||
|
|
||||||
|
if (!enterReleasePhase)
|
||||||
|
return SEGA_SUCCESS;
|
||||||
|
|
||||||
|
context->playing = false;
|
||||||
|
alSourceStop(context->alSource);
|
||||||
|
|
||||||
|
return SEGA_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SEGAAPI_CreateBuffer(HAWOSEBUFFERCONFIG *pConfig, HAWOSEGABUFFERCALLBACK pCallback, unsigned int dwFlags, void **phHandle)
|
int SEGAAPI_CreateBuffer(HAWOSEBUFFERCONFIG *pConfig, HAWOSEGABUFFERCALLBACK pCallback, unsigned int dwFlags, void **phHandle)
|
||||||
@ -883,13 +801,13 @@ int SEGAAPI_DestroyBuffer(void *hHandle)
|
|||||||
int SEGAAPI_SetGlobalEAXProperty(GUID *guid, unsigned long ulProperty, void *pData, unsigned long ulDataSize)
|
int SEGAAPI_SetGlobalEAXProperty(GUID *guid, unsigned long ulProperty, void *pData, unsigned long ulDataSize)
|
||||||
{
|
{
|
||||||
dbgPrint("SEGAAPI_SetGlobalEAXProperty() 0x%x 0x%x 0x%x 0x%x", guid, ulProperty, pData, ulDataSize);
|
dbgPrint("SEGAAPI_SetGlobalEAXProperty() 0x%x 0x%x 0x%x 0x%x", guid, ulProperty, pData, ulDataSize);
|
||||||
return 0;
|
return SEGA_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SEGAAPI_GetGlobalEAXProperty(GUID *guid, unsigned long ulProperty, void *pData, unsigned long ulDataSize)
|
int SEGAAPI_GetGlobalEAXProperty(GUID *guid, unsigned long ulProperty, void *pData, unsigned long ulDataSize)
|
||||||
{
|
{
|
||||||
dbgPrint("SEGAAPI_GetGlobalEAXProperty() 0x%x 0x%x 0x%x 0x%x", guid, ulProperty, pData, ulDataSize);
|
dbgPrint("SEGAAPI_GetGlobalEAXProperty() 0x%x 0x%x 0x%x 0x%x", guid, ulProperty, pData, ulDataSize);
|
||||||
return 0;
|
return SEGAERR_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SEGAAPI_SetSPDIFOutChannelStatus(unsigned int dwChannelStatus, unsigned int dwExtChannelStatus)
|
int SEGAAPI_SetSPDIFOutChannelStatus(unsigned int dwChannelStatus, unsigned int dwExtChannelStatus)
|
||||||
@ -981,8 +899,6 @@ int SEGAAPI_Init(void)
|
|||||||
return SEGAERR_FAIL;
|
return SEGAERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
SEGAAPI_SetGlobalEAXProperty((GUID *)&EAXPROPERTYID_EAX40_FXSlot2, 0, (void *)&EAX_NULL_GUID, 16);
|
|
||||||
|
|
||||||
return SEGA_SUCCESS;
|
return SEGA_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user