static void open_all_sounds(FMOD_SYSTEM *system, FMOD_SOUND **fmod_sounds) { FMOD_RESULT result; int i; for (i = 0; i < num_sounds; i++) { float freq, vol, pan; int prio; debugmsg("opening sound file %s\n", sounds[i].file); result = FMOD_System_CreateSound(system, (char *)sounds[i].file, FMOD_SOFTWARE, 0, &fmod_sounds[i]); if (result != FMOD_OK) { fprintf(stderr, "Unable to open sound file \"%s\"\n", sounds[i].file); exit(1); } result = FMOD_Sound_SetMode(fmod_sounds[i], FMOD_LOOP_OFF); ERRCHECK(result); result = FMOD_Sound_GetDefaults(fmod_sounds[i], &freq, &vol, &pan, &prio); ERRCHECK(result); /* override defaults (except freq) as requested */ if (sounds[i].vol != USE_DEFAULT) { debugmsg("setting vol value on %s to %f\n", sounds[i].file, sounds[i].vol); vol = sounds[i].vol; } if (sounds[i].pan != USE_DEFAULT) { debugmsg("setting pan value on %s to %f\n", sounds[i].file, sounds[i].pan); pan = sounds[i].pan; } if (sounds[i].prio != USE_DEFAULT_PRIO) { debugmsg("setting prio value on %s to %d\n", sounds[i].file, sounds[i].prio); prio = sounds[i].prio; } result = FMOD_Sound_SetDefaults(fmod_sounds[i], freq, vol, pan, prio); ERRCHECK(result); } }
int play_fiend_sound(char *name, int x, int y,int lower_at_dist,int loop,int priority) { int i,num; int found_sound=0; int found_data=0; int vol, pan; int temp; if(!sound_is_on)return -1; ///////// Find The sound number //////////// for(i=0;i<num_of_sounds;i++) if(strcmp(sound_info[i].name,name)==0) { found_sound=1; num=i; break; } if(!found_sound)return -1; //if the sound has more then one alternative (num>1) randomize between em if(sound_info[num].num>1) { temp = RANDOM(0,sound_info[num].num-1); num+=temp; } for(i=0;i<MAX_SOUNDS_PLAYING;i++) if(sound_data[i].used==0) { found_data=1; break; } if(!found_data)return -1; ///////// Set the sound data //////////// sound_data[i].used=1; sound_data[i].sound_num=num; sound_data[i].priority=priority; sound_data[i].x=x; sound_data[i].y=y; sound_data[i].loop=loop; sound_data[i].lower_at_dist=lower_at_dist; sound_data[i].playing=0; sound_data[i].vol=sound_info[sound_data[i].sound_num].volume; ///////// Play the sound and set propreties // //sound_data[i].voice_num=allocate_voice(sound_info[num].sound); if(!sound_data[i].lower_at_dist) { vol = sound_data[i].vol; pan = 128; } else calc_sound_prop(sound_data[i].x,sound_data[i].y,&vol, &pan, sound_info[sound_data[i].sound_num].volume); FMOD_Sound_SetDefaults(sound_info[num].sound,44100,((float)vol)/256,pan,sound_data[i].priority); if(sound_data[i].loop) FMOD_Sound_SetLoopCount(sound_info[num].sound,FMOD_LOOP_NORMAL); //sound_data[i].voice_num=FSOUND_PlaySound(FSOUND_FREE, sound_info[num].sound); FMOD_System_PlaySound(fmod_system, FMOD_CHANNEL_FREE, sound_info[num].sound, 0, &sound_data[i].voice_num); if(sound_data[i].voice_num==NULL)return -1; sound_data[i].playing=1; return i; }