Month old OpenAL changes (Pitch changing, currently disabled).

This commit is contained in:
Steven Fuller 2001-10-04 19:15:50 +00:00 committed by Patryk Obara
parent 35d91a5da3
commit 95977a17d4
3 changed files with 318 additions and 166 deletions

3
TODO
View file

@ -1,6 +1,5 @@
[DONE] [08/24/01] Finish OpenGL code. [DONE] [08/24/01] Finish OpenGL code.
* Fix sound code. * Fix sound code.
* See if RGT will respond.
* Menus. * Menus.
* Proper file loading/saving (ignore case, search certain directories) and * Proper file loading/saving (ignore case, search certain directories) and
config handling (~/.avp/{ge, re, ad, md, pd}/?) config handling (~/.avp/{ge, re, ad, md, pd}/?)
@ -11,7 +10,7 @@
* See what FOX/Rebellion has to say (if anything) about redistribution of the * See what FOX/Rebellion has to say (if anything) about redistribution of the
demos and if its possible to create an installer for regular/gold edition demos and if its possible to create an installer for regular/gold edition
CDs. CDs.
* Put together a workaround if RGT plan fails. Might just leave as-is. * Do something with the ingame movies. Might just leave as-is.
* See if the build process can be made easier for those who download the * See if the build process can be made easier for those who download the
source. source.
* Write documentation. * Write documentation.

View file

@ -1,130 +0,0 @@
// EAX.H -- DirectSound Environmental Audio Extensions
#ifndef EAX_H_INCLUDED
#define EAX_H_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
// EAX (listener) reverb property set {4a4e6fc1-c341-11d1-b73a-444553540000}
DEFINE_GUID(DSPROPSETID_EAX_ReverbProperties,
0x4a4e6fc1,
0xc341,
0x11d1,
0xb7, 0x3a, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
typedef enum
{
DSPROPERTY_EAX_ALL, // all reverb properties
DSPROPERTY_EAX_ENVIRONMENT, // standard environment no.
DSPROPERTY_EAX_VOLUME, // loudness of the reverb
DSPROPERTY_EAX_DECAYTIME, // how long the reverb lasts
DSPROPERTY_EAX_DAMPING // the high frequencies decay faster
} DSPROPERTY_EAX_REVERBPROPERTY;
#define EAX_NUM_STANDARD_PROPERTIES (DSPROPERTY_EAX_DAMPING + 1)
// use this structure for get/set all properties...
typedef struct
{
unsigned long environment; // 0 to EAX_ENVIRONMENT_COUNT-1
float fVolume; // 0 to 1
float fDecayTime_sec; // seconds, 0.1 to 100
float fDamping; // 0 to 1
} EAX_REVERBPROPERTIES;
enum
{
EAX_ENVIRONMENT_GENERIC, // factory default
EAX_ENVIRONMENT_PADDEDCELL,
EAX_ENVIRONMENT_ROOM, // standard environments
EAX_ENVIRONMENT_BATHROOM,
EAX_ENVIRONMENT_LIVINGROOM,
EAX_ENVIRONMENT_STONEROOM,
EAX_ENVIRONMENT_AUDITORIUM,
EAX_ENVIRONMENT_CONCERTHALL,
EAX_ENVIRONMENT_CAVE,
EAX_ENVIRONMENT_ARENA,
EAX_ENVIRONMENT_HANGAR,
EAX_ENVIRONMENT_CARPETEDHALLWAY,
EAX_ENVIRONMENT_HALLWAY,
EAX_ENVIRONMENT_STONECORRIDOR,
EAX_ENVIRONMENT_ALLEY,
EAX_ENVIRONMENT_FOREST,
EAX_ENVIRONMENT_CITY,
EAX_ENVIRONMENT_MOUNTAINS,
EAX_ENVIRONMENT_QUARRY,
EAX_ENVIRONMENT_PLAIN,
EAX_ENVIRONMENT_PARKINGLOT,
EAX_ENVIRONMENT_SEWERPIPE,
EAX_ENVIRONMENT_UNDERWATER,
EAX_ENVIRONMENT_DRUGGED,
EAX_ENVIRONMENT_DIZZY,
EAX_ENVIRONMENT_PSYCHOTIC,
EAX_ENVIRONMENT_COUNT // total number of environments
};
#define EAX_MAX_ENVIRONMENT (EAX_ENVIRONMENT_COUNT - 1)
// presets
#define EAX_PRESET_GENERIC EAX_ENVIRONMENT_GENERIC,0.5F,1.493F,0.5F
#define EAX_PRESET_PADDEDCELL EAX_ENVIRONMENT_PADDEDCELL,0.25F,0.1F,0.0F
#define EAX_PRESET_ROOM EAX_ENVIRONMENT_ROOM,0.417F,0.4F,0.666F
#define EAX_PRESET_BATHROOM EAX_ENVIRONMENT_BATHROOM,0.653F,1.499F,0.166F
#define EAX_PRESET_LIVINGROOM EAX_ENVIRONMENT_LIVINGROOM,0.208F,0.478F,0.0F
#define EAX_PRESET_STONEROOM EAX_ENVIRONMENT_STONEROOM,0.5F,2.309F,0.888F
#define EAX_PRESET_AUDITORIUM EAX_ENVIRONMENT_AUDITORIUM,0.403F,4.279F,0.5F
#define EAX_PRESET_CONCERTHALL EAX_ENVIRONMENT_CONCERTHALL,0.5F,3.961F,0.5F
#define EAX_PRESET_CAVE EAX_ENVIRONMENT_CAVE,0.5F,2.886F,1.304F
#define EAX_PRESET_ARENA EAX_ENVIRONMENT_ARENA,0.361F,7.284F,0.332F
#define EAX_PRESET_HANGAR EAX_ENVIRONMENT_HANGAR,0.5F,10.0F,0.3F
#define EAX_PRESET_CARPETEDHALLWAY EAX_ENVIRONMENT_CARPETEDHALLWAY,0.153F,0.259F,2.0F
#define EAX_PRESET_HALLWAY EAX_ENVIRONMENT_HALLWAY,0.361F,1.493F,0.0F
#define EAX_PRESET_STONECORRIDOR EAX_ENVIRONMENT_STONECORRIDOR,0.444F,2.697F,0.638F
#define EAX_PRESET_ALLEY EAX_ENVIRONMENT_ALLEY,0.25F,1.752F,0.776F
#define EAX_PRESET_FOREST EAX_ENVIRONMENT_FOREST,0.111F,3.145F,0.472F
#define EAX_PRESET_CITY EAX_ENVIRONMENT_CITY,0.111F,2.767F,0.224F
#define EAX_PRESET_MOUNTAINS EAX_ENVIRONMENT_MOUNTAINS,0.194F,7.841F,0.472F
#define EAX_PRESET_QUARRY EAX_ENVIRONMENT_QUARRY,1.0F,1.499F,0.5F
#define EAX_PRESET_PLAIN EAX_ENVIRONMENT_PLAIN,0.097F,2.767F,0.224F
#define EAX_PRESET_PARKINGLOT EAX_ENVIRONMENT_PARKINGLOT,0.208F,1.652F,1.5F
#define EAX_PRESET_SEWERPIPE EAX_ENVIRONMENT_SEWERPIPE,0.652F,2.886F,0.25F
#define EAX_PRESET_UNDERWATER EAX_ENVIRONMENT_UNDERWATER,1.0F,1.499F,0.0F
#define EAX_PRESET_DRUGGED EAX_ENVIRONMENT_DRUGGED,0.875F,8.392F,1.388F
#define EAX_PRESET_DIZZY EAX_ENVIRONMENT_DIZZY,0.139F,17.234F,0.666F
#define EAX_PRESET_PSYCHOTIC EAX_ENVIRONMENT_PSYCHOTIC,0.486F,7.563F,0.806F
// EAX buffer reverb property set {4a4e6fc0-c341-11d1-b73a-444553540000}
DEFINE_GUID(DSPROPSETID_EAXBUFFER_ReverbProperties,
0x4a4e6fc0,
0xc341,
0x11d1,
0xb7, 0x3a, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
typedef enum
{
DSPROPERTY_EAXBUFFER_ALL, // all reverb buffer properties
DSPROPERTY_EAXBUFFER_REVERBMIX // the wet source amount
} DSPROPERTY_EAXBUFFER_REVERBPROPERTY;
// use this structure for get/set all properties...
typedef struct
{
float fMix; // linear factor, 0.0F to 1.0F
} EAXBUFFER_REVERBPROPERTIES;
#define EAX_REVERBMIX_USEDISTANCE -1.0F // out of normal range
// signifies the reverb engine should
// calculate it's own reverb mix value
// based on distance
#ifdef __cplusplus
}
#endif // __cplusplus
#endif

View file

@ -29,37 +29,50 @@ SOUNDSAMPLEDATA GameSounds[SID_MAXIMUM];
ALCdevice *AvpSoundDevice; ALCdevice *AvpSoundDevice;
ALvoid *AvpSoundContext; ALvoid *AvpSoundContext;
int AvpFrequency = 22050;
/* /*
TODO openal.c TODO:
Three problems:
1. AL_PITCH code does not work right. 1. AL_PITCH code does not work right.
a. bug in openal (causes a sound to keep repeating) OpenAL alf_tpitch is currently broken.
b. i probably don't give it the right value anyway. 2. There is no stereo separation. Either OpenAL's or my error.
2. there is currently no stereo separation. either openal or my error.
3. There is no EAX/Reverb. But there's probably not much I can do... 3. There is no EAX/Reverb. But there's probably not much I can do...
4. Restarting sound system may or may not work.
5. Doppler (if it was originally used) isn't currently used.
Probably also broken in OpenAL (see 1).
*/ */
int PlatStartSoundSys() int PlatStartSoundSys()
{ {
int i; int i;
char buf[42];
ALfloat pos[] = { 0.0, 0.0, 0.0 }, ALfloat pos[] = { 0.0, 0.0, 0.0 },
vel[] = { 0.0, 0.0, 0.0 }, vel[] = { 0.0, 0.0, 0.0 },
or[] = { 0.0, 0.0, 1.0, 0.0, -1.0, 0.0 }; or[] = { 0.0, 0.0, 1.0, 0.0, -1.0, 0.0 };
int attrlist[] = { int attrlist[6] = {
ALC_FREQUENCY, 22050, ALC_FREQUENCY, 0,
ALC_SYNC, AL_FALSE, ALC_SYNC, AL_FALSE,
0 0
}; };
AvpSoundDevice = alcOpenDevice ("'( (sampling-rate 22050 ))"); attrlist[0] = ALC_FREQUENCY;
AvpSoundContext = alcCreateContext (AvpSoundDevice, attrlist); attrlist[1] = AvpFrequency;
alcMakeContextCurrent (AvpSoundContext); attrlist[2] = ALC_SYNC;
attrlist[3] = AL_FALSE;
attrlist[4] = 0;
snprintf(buf, sizeof(buf), "'( (sampling-rate %d ))\n", AvpFrequency);
AvpSoundDevice = alcOpenDevice(buf);
AvpSoundContext = alcCreateContext(AvpSoundDevice, attrlist);
alcMakeContextCurrent(AvpSoundContext);
alListenerfv (AL_POSITION, pos); alListenerfv (AL_POSITION, pos);
alListenerfv (AL_VELOCITY, vel); alListenerfv (AL_VELOCITY, vel);
alListenerfv (AL_ORIENTATION, or); alListenerfv (AL_ORIENTATION, or);
alDistanceModel(AL_NONE);
if (alGetError () != AL_NO_ERROR) { if (alGetError () != AL_NO_ERROR) {
fprintf (stderr, "alListenerfv() error = ...\n"); fprintf (stderr, "alListenerfv() error = ...\n");
exit (1); exit (1);
@ -69,6 +82,11 @@ int PlatStartSoundSys()
ALuint p; ALuint p;
alGenSources (1, &p); alGenSources (1, &p);
if (alGetError () != AL_NO_ERROR) {
fprintf (stderr, "alGenSources () error = ...");
return -1;
}
ActiveSounds[i].ds3DBufferP = p; ActiveSounds[i].ds3DBufferP = p;
ActiveSounds[i].PropSetP_pos[0] = 0.0; ActiveSounds[i].PropSetP_pos[0] = 0.0;
@ -78,11 +96,6 @@ int PlatStartSoundSys()
ActiveSounds[i].PropSetP_vel[1] = 0.0; ActiveSounds[i].PropSetP_vel[1] = 0.0;
ActiveSounds[i].PropSetP_vel[2] = 0.0; ActiveSounds[i].PropSetP_vel[2] = 0.0;
if (alGetError () != AL_NO_ERROR) {
fprintf (stderr, "alGenSources () error = ...");
return -1;
}
alSourcef(p, AL_PITCH, 1.0f); alSourcef(p, AL_PITCH, 1.0f);
alSourcef(p, AL_GAIN, 1.0f); alSourcef(p, AL_GAIN, 1.0f);
alSourcefv(p, AL_POSITION, ActiveSounds[i].PropSetP_pos); alSourcefv(p, AL_POSITION, ActiveSounds[i].PropSetP_pos);
@ -100,6 +113,249 @@ void PlatEndSoundSys()
printf("PlatEndSoundSys()\n"); printf("PlatEndSoundSys()\n");
} }
// this table plots the frequency change for
// 128/ths of a semitone for one octave (0-1535),
// divide or multiply by 2 to subtract or add an octave
static float pitch_to_frequency_mult_table [] =
{
1.0F, 1.00045137F, 1.000902943F, 1.00135472F, 1.001806701F, 1.002258886F, 1.002711275F, 1.003163868F,
1.003616666F, 1.004069668F, 1.004522874F, 1.004976285F, 1.005429901F, 1.005883722F, 1.006337747F, 1.006791977F,
1.007246412F, 1.007701053F, 1.008155898F, 1.008610949F, 1.009066205F, 1.009521667F, 1.009977334F, 1.010433207F,
1.010889286F, 1.011345571F, 1.011802061F, 1.012258758F, 1.012715661F, 1.01317277F, 1.013630085F, 1.014087607F,
1.014545335F, 1.01500327F, 1.015461411F, 1.01591976F, 1.016378315F, 1.016837077F, 1.017296046F, 1.017755223F,
1.018214607F, 1.018674198F, 1.019133996F, 1.019594002F, 1.020054216F, 1.020514637F, 1.020975266F, 1.021436104F,
1.021897149F, 1.022358402F, 1.022819863F, 1.023281533F, 1.023743411F, 1.024205498F, 1.024667793F, 1.025130297F,
1.025593009F, 1.026055931F, 1.026519061F, 1.026982401F, 1.027445949F, 1.027909707F, 1.028373674F, 1.028837851F,
1.029302237F, 1.029766832F, 1.030231638F, 1.030696653F, 1.031161878F, 1.031627313F, 1.032092958F, 1.032558813F,
1.033024879F, 1.033491155F, 1.033957641F, 1.034424338F, 1.034891246F, 1.035358364F, 1.035825694F, 1.036293234F,
1.036760985F, 1.037228947F, 1.037697121F, 1.038165506F, 1.038634102F, 1.03910291F, 1.039571929F, 1.04004116F,
1.040510603F, 1.040980258F, 1.041450125F, 1.041920204F, 1.042390495F, 1.042860998F, 1.043331714F, 1.043802642F,
1.044273782F, 1.044745136F, 1.045216702F, 1.045688481F, 1.046160473F, 1.046632678F, 1.047105096F, 1.047577727F,
1.048050572F, 1.04852363F, 1.048996902F, 1.049470387F, 1.049944086F, 1.050417999F, 1.050892125F, 1.051366466F,
1.051841021F, 1.05231579F, 1.052790773F, 1.053265971F, 1.053741383F, 1.05421701F, 1.054692851F, 1.055168907F,
1.055645178F, 1.056121664F, 1.056598366F, 1.057075282F, 1.057552413F, 1.05802976F, 1.058507323F, 1.058985101F,
1.059463094F, 1.059941304F, 1.060419729F, 1.06089837F, 1.061377227F, 1.061856301F, 1.06233559F, 1.062815096F,
1.063294818F, 1.063774757F, 1.064254913F, 1.064735285F, 1.065215874F, 1.06569668F, 1.066177703F, 1.066658943F,
1.067140401F, 1.067622075F, 1.068103967F, 1.068586077F, 1.069068404F, 1.069550949F, 1.070033712F, 1.070516692F,
1.070999891F, 1.071483308F, 1.071966943F, 1.072450796F, 1.072934868F, 1.073419158F, 1.073903666F, 1.074388394F,
1.07487334F, 1.075358505F, 1.075843889F, 1.076329492F, 1.076815315F, 1.077301356F, 1.077787617F, 1.078274098F,
1.078760798F, 1.079247718F, 1.079734857F, 1.080222216F, 1.080709796F, 1.081197595F, 1.081685615F, 1.082173855F,
1.082662315F, 1.083150996F, 1.083639897F, 1.084129019F, 1.084618362F, 1.085107926F, 1.085597711F, 1.086087716F,
1.086577943F, 1.087068391F, 1.087559061F, 1.088049952F, 1.088541065F, 1.089032399F, 1.089523955F, 1.090015733F,
1.090507733F, 1.090999955F, 1.091492399F, 1.091985065F, 1.092477954F, 1.092971065F, 1.093464399F, 1.093957956F,
1.094451735F, 1.094945737F, 1.095439962F, 1.09593441F, 1.096429082F, 1.096923976F, 1.097419095F, 1.097914436F,
1.098410001F, 1.09890579F, 1.099401803F, 1.099898039F, 1.1003945F, 1.100891184F, 1.101388093F, 1.101885226F,
1.102382583F, 1.102880165F, 1.103377972F, 1.103876003F, 1.104374259F, 1.10487274F, 1.105371446F, 1.105870377F,
1.106369533F, 1.106868914F, 1.107368521F, 1.107868354F, 1.108368412F, 1.108868695F, 1.109369205F, 1.10986994F,
1.110370902F, 1.11087209F, 1.111373503F, 1.111875143F, 1.11237701F, 1.112879103F, 1.113381423F, 1.113883969F,
1.114386743F, 1.114889743F, 1.11539297F, 1.115896424F, 1.116400106F, 1.116904015F, 1.117408152F, 1.117912516F,
1.118417107F, 1.118921927F, 1.119426974F, 1.119932249F, 1.120437752F, 1.120943484F, 1.121449444F, 1.121955632F,
1.122462048F, 1.122968693F, 1.123475567F, 1.12398267F, 1.124490002F, 1.124997562F, 1.125505352F, 1.12601337F,
1.126521619F, 1.127030096F, 1.127538803F, 1.12804774F, 1.128556906F, 1.129066302F, 1.129575929F, 1.130085785F,
1.130595871F, 1.131106188F, 1.131616734F, 1.132127512F, 1.13263852F, 1.133149758F, 1.133661227F, 1.134172928F,
1.134684859F, 1.135197021F, 1.135709414F, 1.136222039F, 1.136734895F, 1.137247982F, 1.137761301F, 1.138274852F,
1.138788635F, 1.139302649F, 1.139816896F, 1.140331374F, 1.140846085F, 1.141361028F, 1.141876204F, 1.142391612F,
1.142907253F, 1.143423126F, 1.143939233F, 1.144455572F, 1.144972144F, 1.14548895F, 1.146005989F, 1.146523261F,
1.147040767F, 1.147558506F, 1.148076479F, 1.148594686F, 1.149113126F, 1.149631801F, 1.15015071F, 1.150669853F,
1.15118923F, 1.151708842F, 1.152228688F, 1.152748769F, 1.153269085F, 1.153789635F, 1.154310421F, 1.154831441F,
1.155352697F, 1.155874188F, 1.156395914F, 1.156917876F, 1.157440074F, 1.157962507F, 1.158485176F, 1.159008081F,
1.159531222F, 1.160054599F, 1.160578212F, 1.161102062F, 1.161626148F, 1.16215047F, 1.16267503F, 1.163199826F,
1.163724859F, 1.164250129F, 1.164775636F, 1.16530138F, 1.165827362F, 1.16635358F, 1.166880037F, 1.167406731F,
1.167933663F, 1.168460833F, 1.16898824F, 1.169515886F, 1.17004377F, 1.170571892F, 1.171100252F, 1.171628851F,
1.172157689F, 1.172686765F, 1.17321608F, 1.173745634F, 1.174275427F, 1.174805459F, 1.175335731F, 1.175866241F,
1.176396992F, 1.176927981F, 1.177459211F, 1.17799068F, 1.178522389F, 1.179054338F, 1.179586527F, 1.180118957F,
1.180651627F, 1.181184537F, 1.181717688F, 1.182251079F, 1.182784711F, 1.183318584F, 1.183852698F, 1.184387053F,
1.184921649F, 1.185456487F, 1.185991566F, 1.186526886F, 1.187062448F, 1.187598252F, 1.188134298F, 1.188670585F,
1.189207115F, 1.189743887F, 1.190280901F, 1.190818158F, 1.191355657F, 1.191893398F, 1.192431383F, 1.19296961F,
1.19350808F, 1.194046793F, 1.194585749F, 1.195124949F, 1.195664392F, 1.196204079F, 1.196744009F, 1.197284182F,
1.1978246F, 1.198365262F, 1.198906167F, 1.199447317F, 1.199988711F, 1.200530349F, 1.201072232F, 1.201614359F,
1.202156731F, 1.202699348F, 1.20324221F, 1.203785317F, 1.204328669F, 1.204872266F, 1.205416109F, 1.205960197F,
1.206504531F, 1.20704911F, 1.207593935F, 1.208139006F, 1.208684324F, 1.209229887F, 1.209775696F, 1.210321752F,
1.210868055F, 1.211414604F, 1.211961399F, 1.212508442F, 1.213055731F, 1.213603267F, 1.214151051F, 1.214699082F,
1.21524736F, 1.215795886F, 1.216344659F, 1.21689368F, 1.217442948F, 1.217992465F, 1.21854223F, 1.219092243F,
1.219642504F, 1.220193013F, 1.220743771F, 1.221294778F, 1.221846033F, 1.222397537F, 1.22294929F, 1.223501292F,
1.224053543F, 1.224606044F, 1.225158794F, 1.225711793F, 1.226265042F, 1.226818541F, 1.227372289F, 1.227926288F,
1.228480536F, 1.229035035F, 1.229589784F, 1.230144783F, 1.230700033F, 1.231255533F, 1.231811285F, 1.232367287F,
1.23292354F, 1.233480044F, 1.234036799F, 1.234593806F, 1.235151064F, 1.235708573F, 1.236266335F, 1.236824348F,
1.237382612F, 1.237941129F, 1.238499898F, 1.239058919F, 1.239618193F, 1.240177719F, 1.240737497F, 1.241297528F,
1.241857812F, 1.242418349F, 1.242979139F, 1.243540182F, 1.244101478F, 1.244663027F, 1.24522483F, 1.245786887F,
1.246349197F, 1.246911761F, 1.247474579F, 1.248037651F, 1.248600977F, 1.249164558F, 1.249728392F, 1.250292482F,
1.250856826F, 1.251421424F, 1.251986278F, 1.252551386F, 1.25311675F, 1.253682369F, 1.254248243F, 1.254814372F,
1.255380757F, 1.255947398F, 1.256514294F, 1.257081446F, 1.257648855F, 1.258216519F, 1.25878444F, 1.259352616F,
1.25992105F, 1.26048974F, 1.261058687F, 1.26162789F, 1.26219735F, 1.262767068F, 1.263337042F, 1.263907274F,
1.264477763F, 1.26504851F, 1.265619515F, 1.266190777F, 1.266762297F, 1.267334075F, 1.26790611F, 1.268478405F,
1.269050957F, 1.269623768F, 1.270196838F, 1.270770166F, 1.271343753F, 1.271917599F, 1.272491703F, 1.273066067F,
1.273640691F, 1.274215573F, 1.274790715F, 1.275366117F, 1.275941778F, 1.2765177F, 1.277093881F, 1.277670322F,
1.278247024F, 1.278823985F, 1.279401208F, 1.27997869F, 1.280556434F, 1.281134438F, 1.281712703F, 1.282291229F,
1.282870016F, 1.283449065F, 1.284028374F, 1.284607946F, 1.285187778F, 1.285767873F, 1.28634823F, 1.286928848F,
1.287509728F, 1.288090871F, 1.288672276F, 1.289253943F, 1.289835873F, 1.290418066F, 1.291000521F, 1.29158324F,
1.292166221F, 1.292749466F, 1.293332973F, 1.293916744F, 1.294500779F, 1.295085077F, 1.295669639F, 1.296254465F,
1.296839555F, 1.297424909F, 1.298010527F, 1.298596409F, 1.299182556F, 1.299768967F, 1.300355643F, 1.300942584F,
1.30152979F, 1.302117261F, 1.302704997F, 1.303292998F, 1.303881265F, 1.304469797F, 1.305058595F, 1.305647659F,
1.306236989F, 1.306826584F, 1.307416446F, 1.308006574F, 1.308596968F, 1.309187629F, 1.309778556F, 1.310369751F,
1.310961212F, 1.311552939F, 1.312144935F, 1.312737197F, 1.313329726F, 1.313922523F, 1.314515588F, 1.31510892F,
1.31570252F, 1.316296388F, 1.316890524F, 1.317484929F, 1.318079601F, 1.318674542F, 1.319269752F, 1.31986523F,
1.320460977F, 1.321056993F, 1.321653278F, 1.322249832F, 1.322846655F, 1.323443748F, 1.32404111F, 1.324638742F,
1.325236643F, 1.325834815F, 1.326433256F, 1.327031968F, 1.327630949F, 1.328230202F, 1.328829724F, 1.329429517F,
1.330029581F, 1.330629916F, 1.331230522F, 1.331831399F, 1.332432547F, 1.333033967F, 1.333635657F, 1.33423762F,
1.334839854F, 1.33544236F, 1.336045138F, 1.336648188F, 1.337251511F, 1.337855105F, 1.338458972F, 1.339063112F,
1.339667524F, 1.340272209F, 1.340877167F, 1.341482398F, 1.342087903F, 1.34269368F, 1.343299731F, 1.343906056F,
1.344512654F, 1.345119526F, 1.345726672F, 1.346334092F, 1.346941786F, 1.347549755F, 1.348157998F, 1.348766515F,
1.349375307F, 1.349984374F, 1.350593716F, 1.351203333F, 1.351813225F, 1.352423392F, 1.353033835F, 1.353644553F,
1.354255547F, 1.354866817F, 1.355478362F, 1.356090184F, 1.356702282F, 1.357314656F, 1.357927306F, 1.358540233F,
1.359153437F, 1.359766917F, 1.360380675F, 1.360994709F, 1.361609021F, 1.362223609F, 1.362838476F, 1.363453619F,
1.364069041F, 1.36468474F, 1.365300717F, 1.365916972F, 1.366533506F, 1.367150317F, 1.367767407F, 1.368384776F,
1.369002423F, 1.369620349F, 1.370238554F, 1.370857038F, 1.371475801F, 1.372094843F, 1.372714165F, 1.373333766F,
1.373953647F, 1.374573808F, 1.375194249F, 1.37581497F, 1.376435971F, 1.377057252F, 1.377678814F, 1.378300656F,
1.378922779F, 1.379545183F, 1.380167867F, 1.380790833F, 1.38141408F, 1.382037608F, 1.382661418F, 1.383285509F,
1.383909882F, 1.384534537F, 1.385159473F, 1.385784692F, 1.386410193F, 1.387035977F, 1.387662042F, 1.388288391F,
1.388915022F, 1.389541936F, 1.390169133F, 1.390796613F, 1.391424376F, 1.392052422F, 1.392680752F, 1.393309366F,
1.393938263F, 1.394567445F, 1.39519691F, 1.395826659F, 1.396456693F, 1.397087011F, 1.397717613F, 1.398348501F,
1.398979673F, 1.399611129F, 1.400242871F, 1.400874898F, 1.40150721F, 1.402139808F, 1.402772691F, 1.40340586F,
1.404039315F, 1.404673055F, 1.405307082F, 1.405941395F, 1.406575994F, 1.407210879F, 1.407846051F, 1.40848151F,
1.409117256F, 1.409753289F, 1.410389608F, 1.411026215F, 1.411663109F, 1.412300291F, 1.41293776F, 1.413575517F,
1.414213562F, 1.414851895F, 1.415490516F, 1.416129426F, 1.416768623F, 1.417408109F, 1.418047884F, 1.418687948F,
1.4193283F, 1.419968942F, 1.420609873F, 1.421251093F, 1.421892602F, 1.422534401F, 1.42317649F, 1.423818868F,
1.424461537F, 1.425104495F, 1.425747744F, 1.426391283F, 1.427035113F, 1.427679233F, 1.428323644F, 1.428968346F,
1.429613338F, 1.430258622F, 1.430904197F, 1.431550064F, 1.432196222F, 1.432842672F, 1.433489413F, 1.434136447F,
1.434783772F, 1.43543139F, 1.4360793F, 1.436727502F, 1.437375997F, 1.438024785F, 1.438673866F, 1.439323239F,
1.439972906F, 1.440622866F, 1.441273119F, 1.441923666F, 1.442574506F, 1.44322564F, 1.443877069F, 1.444528791F,
1.445180807F, 1.445833118F, 1.446485723F, 1.447138622F, 1.447791816F, 1.448445306F, 1.44909909F, 1.449753169F,
1.450407543F, 1.451062213F, 1.451717178F, 1.452372439F, 1.453027996F, 1.453683848F, 1.454339997F, 1.454996442F,
1.455653183F, 1.45631022F, 1.456967554F, 1.457625185F, 1.458283113F, 1.458941337F, 1.459599859F, 1.460258678F,
1.460917794F, 1.461577208F, 1.462236919F, 1.462896929F, 1.463557236F, 1.464217841F, 1.464878744F, 1.465539946F,
1.466201446F, 1.466863245F, 1.467525342F, 1.468187738F, 1.468850433F, 1.469513428F, 1.470176721F, 1.470840314F,
1.471504207F, 1.472168399F, 1.472832891F, 1.473497683F, 1.474162775F, 1.474828167F, 1.475493859F, 1.476159852F,
1.476826146F, 1.47749274F, 1.478159635F, 1.478826832F, 1.479494329F, 1.480162128F, 1.480830228F, 1.481498629F,
1.482167333F, 1.482836338F, 1.483505645F, 1.484175254F, 1.484845166F, 1.48551538F, 1.486185896F, 1.486856715F,
1.487527837F, 1.488199262F, 1.48887099F, 1.489543021F, 1.490215355F, 1.490887993F, 1.491560934F, 1.492234179F,
1.492907728F, 1.493581581F, 1.494255739F, 1.4949302F, 1.495604966F, 1.496280037F, 1.496955412F, 1.497631092F,
1.498307077F, 1.498983367F, 1.499659962F, 1.500336863F, 1.50101407F, 1.501691582F, 1.502369399F, 1.503047523F,
1.503725953F, 1.504404689F, 1.505083732F, 1.505763081F, 1.506442736F, 1.507122698F, 1.507802968F, 1.508483544F,
1.509164428F, 1.509845618F, 1.510527117F, 1.511208923F, 1.511891036F, 1.512573458F, 1.513256187F, 1.513939225F,
1.514622571F, 1.515306226F, 1.515990189F, 1.516674461F, 1.517359041F, 1.518043931F, 1.51872913F, 1.519414638F,
1.520100455F, 1.520786582F, 1.521473019F, 1.522159765F, 1.522846822F, 1.523534189F, 1.524221866F, 1.524909853F,
1.525598151F, 1.526286759F, 1.526975679F, 1.527664909F, 1.52835445F, 1.529044303F, 1.529734467F, 1.530424942F,
1.53111573F, 1.531806829F, 1.53249824F, 1.533189963F, 1.533881998F, 1.534574345F, 1.535267006F, 1.535959978F,
1.536653264F, 1.537346862F, 1.538040774F, 1.538734999F, 1.539429537F, 1.540124388F, 1.540819553F, 1.541515032F,
1.542210825F, 1.542906932F, 1.543603354F, 1.544300089F, 1.544997139F, 1.545694504F, 1.546392183F, 1.547090177F,
1.547788487F, 1.548487111F, 1.549186051F, 1.549885307F, 1.550584878F, 1.551284764F, 1.551984967F, 1.552685486F,
1.553386321F, 1.554087472F, 1.55478894F, 1.555490724F, 1.556192825F, 1.556895243F, 1.557597978F, 1.558301031F,
1.5590044F, 1.559708087F, 1.560412092F, 1.561116415F, 1.561821055F, 1.562526013F, 1.56323129F, 1.563936885F,
1.564642798F, 1.56534903F, 1.566055581F, 1.566762451F, 1.56746964F, 1.568177148F, 1.568884975F, 1.569593122F,
1.570301589F, 1.571010375F, 1.571719481F, 1.572428908F, 1.573138654F, 1.573848721F, 1.574559108F, 1.575269816F,
1.575980845F, 1.576692195F, 1.577403866F, 1.578115858F, 1.578828171F, 1.579540806F, 1.580253763F, 1.580967041F,
1.581680641F, 1.582394564F, 1.583108809F, 1.583823376F, 1.584538265F, 1.585253478F, 1.585969013F, 1.586684871F,
1.587401052F, 1.588117556F, 1.588834384F, 1.589551536F, 1.590269011F, 1.59098681F, 1.591704933F, 1.59242338F,
1.593142151F, 1.593861247F, 1.594580668F, 1.595300413F, 1.596020483F, 1.596740878F, 1.597461598F, 1.598182643F,
1.598904014F, 1.599625711F, 1.600347733F, 1.601070081F, 1.601792756F, 1.602515756F, 1.603239083F, 1.603962736F,
1.604686716F, 1.605411023F, 1.606135656F, 1.606860617F, 1.607585905F, 1.60831152F, 1.609037463F, 1.609763734F,
1.610490332F, 1.611217258F, 1.611944513F, 1.612672095F, 1.613400006F, 1.614128246F, 1.614856814F, 1.615585711F,
1.616314938F, 1.617044493F, 1.617774377F, 1.618504592F, 1.619235135F, 1.619966009F, 1.620697212F, 1.621428745F,
1.622160609F, 1.622892803F, 1.623625327F, 1.624358182F, 1.625091368F, 1.625824885F, 1.626558732F, 1.627292911F,
1.628027422F, 1.628762264F, 1.629497437F, 1.630232943F, 1.63096878F, 1.63170495F, 1.632441452F, 1.633178286F,
1.633915453F, 1.634652953F, 1.635390785F, 1.636128951F, 1.63686745F, 1.637606282F, 1.638345447F, 1.639084947F,
1.63982478F, 1.640564947F, 1.641305448F, 1.642046283F, 1.642787453F, 1.643528957F, 1.644270796F, 1.645012969F,
1.645755478F, 1.646498322F, 1.647241501F, 1.647985016F, 1.648728866F, 1.649473052F, 1.650217574F, 1.650962432F,
1.651707626F, 1.652453156F, 1.653199024F, 1.653945227F, 1.654691768F, 1.655438645F, 1.65618586F, 1.656933412F,
1.657681301F, 1.658429528F, 1.659178092F, 1.659926995F, 1.660676235F, 1.661425814F, 1.662175731F, 1.662925986F,
1.66367658F, 1.664427513F, 1.665178785F, 1.665930396F, 1.666682346F, 1.667434636F, 1.668187265F, 1.668940234F,
1.669693543F, 1.670447192F, 1.671201181F, 1.67195551F, 1.67271018F, 1.67346519F, 1.674220541F, 1.674976233F,
1.675732267F, 1.676488641F, 1.677245357F, 1.678002414F, 1.678759814F, 1.679517555F, 1.680275638F, 1.681034063F,
1.681792831F, 1.682551941F, 1.683311393F, 1.684071189F, 1.684831327F, 1.685591809F, 1.686352633F, 1.687113802F,
1.687875313F, 1.688637169F, 1.689399368F, 1.690161912F, 1.690924799F, 1.691688031F, 1.692451608F, 1.693215529F,
1.693979795F, 1.694744405F, 1.695509361F, 1.696274663F, 1.697040309F, 1.697806302F, 1.69857264F, 1.699339324F,
1.700106354F, 1.70087373F, 1.701641453F, 1.702409522F, 1.703177937F, 1.7039467F, 1.70471581F, 1.705485266F,
1.706255071F, 1.707025222F, 1.707795721F, 1.708566568F, 1.709337763F, 1.710109306F, 1.710881197F, 1.711653437F,
1.712426025F, 1.713198962F, 1.713972248F, 1.714745883F, 1.715519867F, 1.7162942F, 1.717068883F, 1.717843916F,
1.718619298F, 1.719395031F, 1.720171113F, 1.720947546F, 1.721724329F, 1.722501463F, 1.723278948F, 1.724056783F,
1.72483497F, 1.725613508F, 1.726392397F, 1.727171638F, 1.727951231F, 1.728731176F, 1.729511472F, 1.730292121F,
1.731073122F, 1.731854476F, 1.732636182F, 1.733418241F, 1.734200653F, 1.734983419F, 1.735766537F, 1.73655001F,
1.737333835F, 1.738118015F, 1.738902548F, 1.739687436F, 1.740472678F, 1.741258274F, 1.742044225F, 1.742830531F,
1.743617191F, 1.744404207F, 1.745191578F, 1.745979304F, 1.746767386F, 1.747555824F, 1.748344617F, 1.749133767F,
1.749923272F, 1.750713134F, 1.751503353F, 1.752293928F, 1.75308486F, 1.753876149F, 1.754667796F, 1.755459799F,
1.75625216F, 1.757044879F, 1.757837956F, 1.75863139F, 1.759425183F, 1.760219334F, 1.761013843F, 1.761808711F,
1.762603938F, 1.763399524F, 1.764195468F, 1.764991772F, 1.765788436F, 1.766585459F, 1.767382842F, 1.768180585F,
1.768978687F, 1.769777151F, 1.770575974F, 1.771375158F, 1.772174703F, 1.772974609F, 1.773774875F, 1.774575503F,
1.775376493F, 1.776177843F, 1.776979556F, 1.77778163F, 1.778584067F, 1.779386865F, 1.780190027F, 1.78099355F,
1.781797436F, 1.782601685F, 1.783406297F, 1.784211273F, 1.785016611F, 1.785822313F, 1.786628379F, 1.787434809F,
1.788241602F, 1.78904876F, 1.789856282F, 1.790664169F, 1.79147242F, 1.792281036F, 1.793090017F, 1.793899363F,
1.794709075F, 1.795519152F, 1.796329595F, 1.797140403F, 1.797951578F, 1.798763118F, 1.799575025F, 1.800387298F,
1.801199938F, 1.802012945F, 1.802826319F, 1.80364006F, 1.804454168F, 1.805268643F, 1.806083487F, 1.806898698F,
1.807714277F, 1.808530224F, 1.809346539F, 1.810163223F, 1.810980276F, 1.811797697F, 1.812615487F, 1.813433647F,
1.814252176F, 1.815071074F, 1.815890341F, 1.816709979F, 1.817529987F, 1.818350364F, 1.819171112F, 1.819992231F,
1.82081372F, 1.821635579F, 1.82245781F, 1.823280412F, 1.824103385F, 1.82492673F, 1.825750446F, 1.826574535F,
1.827398995F, 1.828223827F, 1.829049031F, 1.829874608F, 1.830700558F, 1.831526881F, 1.832353576F, 1.833180645F,
1.834008086F, 1.834835902F, 1.835664091F, 1.836492654F, 1.83732159F, 1.838150901F, 1.838980587F, 1.839810647F,
1.840641081F, 1.84147189F, 1.842303075F, 1.843134634F, 1.843966569F, 1.844798879F, 1.845631565F, 1.846464627F,
1.847298065F, 1.848131879F, 1.84896607F, 1.849800636F, 1.85063558F, 1.851470901F, 1.852306598F, 1.853142673F,
1.853979125F, 1.854815955F, 1.855653162F, 1.856490747F, 1.857328711F, 1.858167052F, 1.859005772F, 1.859844871F,
1.860684348F, 1.861524205F, 1.86236444F, 1.863205054F, 1.864046048F, 1.864887422F, 1.865729175F, 1.866571309F,
1.867413822F, 1.868256716F, 1.86909999F, 1.869943645F, 1.87078768F, 1.871632097F, 1.872476895F, 1.873322074F,
1.874167634F, 1.875013576F, 1.8758599F, 1.876706606F, 1.877553694F, 1.878401165F, 1.879249018F, 1.880097254F,
1.880945872F, 1.881794874F, 1.882644259F, 1.883494027F, 1.884344179F, 1.885194715F, 1.886045634F, 1.886896938F,
1.887748625F, 1.888600698F, 1.889453154F, 1.890305996F, 1.891159223F, 1.892012834F, 1.892866831F, 1.893721214F,
1.894575982F, 1.895431135F, 1.896286675F, 1.897142601F, 1.897998914F, 1.898855613F, 1.899712698F, 1.900570171F,
1.90142803F, 1.902286277F, 1.903144911F, 1.904003932F, 1.904863342F, 1.905723139F, 1.906583324F, 1.907443898F,
1.90830486F, 1.909166211F, 1.91002795F, 1.910890079F, 1.911752596F, 1.912615503F, 1.913478799F, 1.914342486F,
1.915206561F, 1.916071027F, 1.916935883F, 1.91780113F, 1.918666767F, 1.919532795F, 1.920399213F, 1.921266023F,
1.922133224F, 1.923000816F, 1.9238688F, 1.924737176F, 1.925605944F, 1.926475103F, 1.927344656F, 1.9282146F,
1.929084938F, 1.929955668F, 1.930826791F, 1.931698307F, 1.932570217F, 1.93344252F, 1.934315217F, 1.935188308F,
1.936061793F, 1.936935673F, 1.937809947F, 1.938684615F, 1.939559678F, 1.940435136F, 1.94131099F, 1.942187238F,
1.943063882F, 1.943940922F, 1.944818358F, 1.94569619F, 1.946574418F, 1.947453042F, 1.948332063F, 1.949211481F,
1.950091295F, 1.950971507F, 1.951852116F, 1.952733123F, 1.953614527F, 1.954496329F, 1.955378529F, 1.956261128F,
1.957144124F, 1.958027519F, 1.958911313F, 1.959795506F, 1.960680098F, 1.961565089F, 1.96245048F, 1.963336271F,
1.964222461F, 1.965109051F, 1.965996041F, 1.966883432F, 1.967771223F, 1.968659415F, 1.969548008F, 1.970437002F,
1.971326397F, 1.972216194F, 1.973106392F, 1.973996992F, 1.974887994F, 1.975779399F, 1.976671205F, 1.977563415F,
1.978456026F, 1.979349041F, 1.980242459F, 1.98113628F, 1.982030505F, 1.982925133F, 1.983820165F, 1.984715601F,
1.985611441F, 1.986507685F, 1.987404335F, 1.988301388F, 1.989198847F, 1.990096711F, 1.99099498F, 1.991893654F,
1.992792734F, 1.99369222F, 1.994592112F, 1.99549241F, 1.996393115F, 1.997294226F, 1.998195744F, 1.999097668F,
};
static int ToneToFrequency(int currentFrequency, int currentPitch, int newPitch)
{
int newFrequency = currentFrequency;
if (!((currentPitch>=PITCH_MINPLAT)&&(currentPitch<=PITCH_MAXPLAT)))
return 0;
if (!((currentFrequency>=FREQUENCY_MINPLAT)&&(currentPitch<=FREQUENCY_MAXPLAT)))
return 0;
/* limit pitch */
if(newPitch>PITCH_MAXPLAT) newPitch=PITCH_MAXPLAT;
if(newPitch<PITCH_MINPLAT) newPitch=PITCH_MINPLAT;
if(newPitch>currentPitch)
{
/* scale up */
int numOctaves, numTones;
numOctaves = (newPitch-currentPitch)/1536;
numTones = (newPitch-currentPitch)%1536;
newFrequency<<=numOctaves;
if(newFrequency>FREQUENCY_MAXPLAT) newFrequency=FREQUENCY_MAXPLAT;
if(numTones>0) newFrequency = (int)((float)(newFrequency)*pitch_to_frequency_mult_table[numTones]);
if(newFrequency>FREQUENCY_MAXPLAT) newFrequency=FREQUENCY_MAXPLAT;
}
else
{
/* scale down */
int numOctaves, numTones;
numOctaves = (currentPitch-newPitch)/1536;
numTones = (currentPitch-newPitch)%1536;
newFrequency>>=numOctaves;
if(newFrequency<FREQUENCY_MINPLAT) newFrequency=FREQUENCY_MINPLAT;
if(numTones>0) newFrequency = (int)((float)(newFrequency)/pitch_to_frequency_mult_table[numTones]);
if(newFrequency<FREQUENCY_MINPLAT) newFrequency=FREQUENCY_MINPLAT;
}
return newFrequency;
}
int PlatPlaySound(int activeIndex) int PlatPlaySound(int activeIndex)
{ {
int si; int si;
@ -124,8 +380,8 @@ int PlatPlaySound(int activeIndex)
alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_LOOPING, AL_FALSE); alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_LOOPING, AL_FALSE);
if (ActiveSounds[activeIndex].pitch != GameSounds[si].pitch) { if (1 || ActiveSounds[activeIndex].pitch != GameSounds[si].pitch) {
PlatChangeSoundPitch (activeIndex, ActiveSounds[activeIndex].pitch); PlatChangeSoundPitch(activeIndex, ActiveSounds[activeIndex].pitch);
} }
if (ActiveSounds[activeIndex].threedee) { if (ActiveSounds[activeIndex].threedee) {
@ -217,22 +473,20 @@ int PlatChangeSoundPitch(int activeIndex, int pitch)
{ {
float frequency; float frequency;
printf("FREQ PlatChangeSoundPitch(%d, %d)\n", activeIndex, pitch);
if ((pitch < PITCH_MIN) || (pitch >= PITCH_MAX)) if ((pitch < PITCH_MIN) || (pitch >= PITCH_MAX))
return 0; return 0;
if (pitch == PITCH_DEFAULTPLAT) if (pitch == PITCH_DEFAULTPLAT) {
frequency = 0; frequency = 0;
else { } else {
// SOUNDINDEX gsi = ActiveSounds[activeIndex].soundIndex; SOUNDINDEX gsi = ActiveSounds[activeIndex].soundIndex;
// frequency = ToneToFrequency (GameSounds[gsi].dsFrequency, frequency = ToneToFrequency (GameSounds[gsi].dsFrequency,
// GameSounds[gsi].pitch, pitch); GameSounds[gsi].pitch, pitch);
} }
ActiveSounds[activeIndex].pitch = pitch; ActiveSounds[activeIndex].pitch = pitch;
// alSourcei (ActiveSounds[activeIndex].ds3DBufferP, AL_PITCH, pow(12, (double)pitch/5506.502401107)); printf("NEWFREQ PlatChangeSoundPitch(%d, %d) = %f\n", activeIndex, pitch, (double)frequency / (double)GameSounds[ActiveSounds[activeIndex].soundIndex].dsFrequency);
return 1; return 1;
} }
@ -398,10 +652,18 @@ printf("Player: (%f, %f, %f) (%f, %f, %f %f, %f, %f)\n", pos[0], pos[1], pos[2],
void PlatEndGameSound(SOUNDINDEX index) void PlatEndGameSound(SOUNDINDEX index)
{ {
printf("PlatEndGameSound(%d)\n", index); int i;
if((index<0)||(index>=SID_MAXIMUM)) return; /* no such sound */ if((index<0)||(index>=SID_MAXIMUM)) return; /* no such sound */
for (i = 0; i < SOUND_MAXACTIVE; i++) {
if (ActiveSounds[i].soundIndex == index) {
PlatStopSound(i);
alSourcei(i, AL_BUFFER, 0);
}
}
if (GameSounds[index].dsBufferP) { if (GameSounds[index].dsBufferP) {
alDeleteBuffers(1, &(GameSounds[index].dsBufferP)); alDeleteBuffers(1, &(GameSounds[index].dsBufferP));
GameSounds[index].dsBufferP = 0; GameSounds[index].dsBufferP = 0;
@ -425,7 +687,22 @@ unsigned int PlatMaxHWSounds()
void InitialiseBaseFrequency(SOUNDINDEX soundNum) void InitialiseBaseFrequency(SOUNDINDEX soundNum)
{ {
/* just set the pitch everytime. */
#if 0
int frequency;
printf("FREQ InitialiseBaseFrequency(%d) [%d]\n", soundNum, GameSounds[soundNum].pitch==PITCH_DEFAULTPLAT); printf("FREQ InitialiseBaseFrequency(%d) [%d]\n", soundNum, GameSounds[soundNum].pitch==PITCH_DEFAULTPLAT);
if(GameSounds[soundNum].pitch>PITCH_MAXPLAT) GameSounds[soundNum].pitch=PITCH_MAXPLAT;
if(GameSounds[soundNum].pitch<PITCH_MINPLAT) GameSounds[soundNum].pitch=PITCH_MINPLAT;
if(GameSounds[soundNum].pitch==PITCH_DEFAULTPLAT) return;
frequency = ToneToFrequency(GameSounds[soundNum].dsFrequency,
PITCH_DEFAULTPLAT, GameSounds[soundNum].pitch);
GameSounds[soundNum].dsFrequency = frequency;
#endif
} }
void PlatSetEnviroment(unsigned int env_index, float reverb_mix) void PlatSetEnviroment(unsigned int env_index, float reverb_mix)
@ -450,9 +727,11 @@ void UpdateSoundFrequencies()
if (gameIndex == SID_NOSOUND) if (gameIndex == SID_NOSOUND)
continue; continue;
printf("FREQ UpdateSoundFreqncies %d, f = %d\n", i, MUL_FIXED(GameSounds[gameIndex].dsFrequency,TimeScale)); if (TimeScale != ONE_FIXED)
printf("NEWFREQ UpdateSoundFreqncies %d, f = %d\n", i, MUL_FIXED(GameSounds[gameIndex].dsFrequency,TimeScale));
if(ActiveSounds[i].pitch != GameSounds[gameIndex].pitch) /* TODO: huh? */
if (ActiveSounds[i].pitch != GameSounds[gameIndex].pitch)
PlatChangeSoundPitch(i,ActiveSounds[i].pitch); PlatChangeSoundPitch(i,ActiveSounds[i].pitch);
} }
} }
@ -515,6 +794,7 @@ printf("ExtractWavFile(%d, %p)\n", soundIndex, bufferPtr);
printf("Loaded %s\n", GameSounds[soundIndex].wavName); printf("Loaded %s\n", GameSounds[soundIndex].wavName);
#if 1 /* TODO: replace with own routine later */
if (acLoadWAV (bufferPtr, &rsize, &udata, &rfmt, if (acLoadWAV (bufferPtr, &rsize, &udata, &rfmt,
&rchan, &rfreq) == NULL) { &rchan, &rfreq) == NULL) {
printf("Unable to convert data\n"); printf("Unable to convert data\n");
@ -545,7 +825,8 @@ printf("Loaded %s\n", GameSounds[soundIndex].wavName);
seclen = DIV_FIXED(len, bps); seclen = DIV_FIXED(len, bps);
} else } else
return (unsigned char *)0; return NULL;
#endif
alGenBuffers (1, &(GameSounds[soundIndex].dsBufferP)); alGenBuffers (1, &(GameSounds[soundIndex].dsBufferP));
alBufferData (GameSounds[soundIndex].dsBufferP, alBufferData (GameSounds[soundIndex].dsBufferP,
@ -557,12 +838,14 @@ printf("Loaded %s\n", GameSounds[soundIndex].wavName);
GameSounds[soundIndex].dsFrequency = rfreq; GameSounds[soundIndex].dsFrequency = rfreq;
GameSounds[soundIndex].pitch = PITCH_DEFAULTPLAT; GameSounds[soundIndex].pitch = PITCH_DEFAULTPLAT;
#if 1 /* TODO: see above */
free (udata); free (udata);
/* read RIFF chunk length and jump past it */ /* read RIFF chunk length and jump past it */
return bufferPtr + 8 + return bufferPtr + 8 +
((bufferPtr[4] << 0) | (bufferPtr[5] << 8) | ((bufferPtr[4] << 0) | (bufferPtr[5] << 8) |
(bufferPtr[6] << 16) | (bufferPtr[7] << 24)); (bufferPtr[6] << 16) | (bufferPtr[7] << 24));
#endif
} }
int LoadWavFromFastFile(int soundNum, char * wavFileName) int LoadWavFromFastFile(int soundNum, char * wavFileName)