Esempio n. 1
0
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);
	}
}
Esempio n. 2
0
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;	
}