예제 #1
0
SoundManager::SoundManager()
{
	const char FileAmbiente[] = "resources/sound/wavs/pacman.ogg\0";
	const char FilePaso[] = "resources/sound/wavs/paso.wav\0";
	const char FileBoing[] = "resources/sound/wavs/boing.ogg\0";
	const char FilePD[] = "resources/sound/wavs/playerdead.ogg\0";
	const char FileBola[] = "resources/sound/wavs/bola.ogg\0";

	if( !FSOUND_Init(44000, 8, 0) )
    {
		Log::Instance().Write("Error inicializando sonido: %d\n", FSOUND_GetError());
    }

    Ambiente = FSOUND_Sample_Load(FSOUND_UNMANAGED, FileAmbiente, FSOUND_LOOP_NORMAL | FSOUND_NORMAL | FSOUND_HW2D, 0, 0);
    if( !Ambiente )
		Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FileAmbiente);

    Paso = FSOUND_Sample_Load(FSOUND_UNMANAGED, FilePaso, FSOUND_LOOP_OFF | FSOUND_NORMAL | FSOUND_HW2D, 0, 0);
    if( !Paso )
		Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FilePaso);

    Boing = FSOUND_Sample_Load(FSOUND_UNMANAGED, FileBoing, FSOUND_LOOP_OFF | FSOUND_NORMAL | FSOUND_HW2D, 0, 0);
    if( !Boing )
		Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FileBoing);

    PlayerDead = FSOUND_Sample_Load(FSOUND_UNMANAGED, FilePD, FSOUND_LOOP_OFF | FSOUND_NORMAL | FSOUND_HW2D, 0, 0);
    if( !PlayerDead )
		Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FilePD);

    Bola = FSOUND_Sample_Load(FSOUND_UNMANAGED, FileBola, FSOUND_LOOP_OFF | FSOUND_NORMAL | FSOUND_HW2D, 0, 0);
    if( !Bola )
		Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FileBola);

	// FSOUND_PlaySound(FSOUND_FREE, Ambiente);
}
예제 #2
0
void StaticEvent(struct s_map *map, struct s_lib_sprite *libsprite, struct s_lib_event *libevent)
{
     unsigned int i;

     GET_MAPEVENT(6,12,map,libevent).type=EVENT_TELEPORT;
     GET_MAPEVENT(6,12,map,libevent).onaction=EVENT_ACTION_AUTO;
     GET_MAPEVENT(6,12,map,libevent).proba=100;
     GET_MAPEVENT(6,12,map,libevent).player_anim=-1;
     GET_MAPEVENT(6,12,map,libevent).sound=FSOUND_Sample_Load(FSOUND_FREE,EVENT_SON,FSOUND_NORMAL,0,0);
     GET_MAPEVENT(6,12,map,libevent).is_unique=0;
     GET_MAPEVENT(6,12,map,libevent).next=NULL;
     GET_MAPEVENT(6,12,map,libevent).param=calloc(1,sizeof(struct s_event_param_teleport));
     ((struct s_event_param_teleport*)GET_MAPEVENT(6,12,map,libevent).param)->filename=(char*)strdup("map/village");
     ((struct s_event_param_teleport*)GET_MAPEVENT(6,12,map,libevent).param)->startX=88*32;
     ((struct s_event_param_teleport*)GET_MAPEVENT(6,12,map,libevent).param)->startY=3*32;
     
     
     GET_MAPEVENT(2,4,map,libevent).type=EVENT_CHANGETILE;
     GET_MAPEVENT(2,4,map,libevent).onaction=EVENT_ACTION_ONKEYPRESS;
     GET_MAPEVENT(2,4,map,libevent).proba=100;
     GET_MAPEVENT(2,4,map,libevent).player_anim=-1;
     GET_MAPEVENT(2,4,map,libevent).sound=FSOUND_Sample_Load(FSOUND_FREE,EVENT_SON,FSOUND_NORMAL,0,0);
     GET_MAPEVENT(2,4,map,libevent).is_unique=1;
     GET_MAPEVENT(2,4,map,libevent).next=NULL;
     GET_MAPEVENT(2,4,map,libevent).param=calloc(1,sizeof(struct s_event_param_changetile));
     ((struct s_event_param_changetile*)GET_MAPEVENT(2,4,map,libevent).param)->x=2;
     ((struct s_event_param_changetile*)GET_MAPEVENT(2,4,map,libevent).param)->y=3;
     ((struct s_event_param_changetile*)GET_MAPEVENT(2,4,map,libevent).param)->newtile=103;




     libevent->sprite_event[1].type=EVENT_SHOP;
     libevent->sprite_event[1].onaction=EVENT_ACTION_ONKEYPRESS;
     libevent->sprite_event[1].proba=100;
     libevent->sprite_event[1].player_anim=-1;
     libevent->sprite_event[1].sound=NULL;
     libevent->sprite_event[1].is_unique=0;
     libevent->sprite_event[1].next=NULL;
     libevent->sprite_event[1].param=calloc(1,sizeof(struct s_event_param_shop));
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->n_item=3;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId=malloc(5*sizeof(unsigned int));
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[0]=0;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[1]=1;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[2]=2;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[3]=4;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[4]=5;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem=malloc(5*sizeof(unsigned int));
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[0]=15;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[1]=50;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[2]=75;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[3]=75;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[4]=75;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[5]=75;
     ((struct s_event_param_shop*)libevent->sprite_event[1].param)->prixVente=malloc(MAX_ITEMS*sizeof(unsigned int));
     for(i=0;i<MAX_ITEMS;i++)
		   ((struct s_event_param_shop*)libevent->sprite_event[1].param)->prixVente[i]=50+(rand()%20);
}
void SoundManager2::loadMusic(const char* filename){
    musicHandle = FSOUND_Sample_Load (musicChannel, filename, 0, 0, 0);
    if(isDebug()){
        printf("Music Loaded on Channel: %i\n", musicChannel);
    }
    //TODO allow loading a dictionary of music and playing them based on a selection
}
예제 #4
0
파일: soundfx.cpp 프로젝트: boredzo/CCX
void InitSound( void )
{
	#ifndef UseSDLMixer
    if (!FSOUND_Init(44100, 64, FSOUND_INIT_USEDEFAULTMIDISYNTH))
	{
		musicOn = soundOn = false; 
		return;
	}
	#endif

	for( int index=0; index<kNumSounds; index++ )
	{
		#ifdef UseSDLMixer
		sound[index] = Mix_LoadWAV( QuickResourceName("snd", index+128, ".wav"));
		#else
		for( index=0; index<kNumSounds; index++ )
		{
			sound[index] = FSOUND_Sample_Load( FSOUND_UNMANAGED, QuickResourceName( "snd", index+128, ".wav" ), FSOUND_NORMAL | FSOUND_LOOP_OFF | FSOUND_2D, 0, 0 );
			if( sound[index] == NULL )
			{
				Error( "InitSound: files are missing" );
			}
		}		
		#endif
	}
}
예제 #5
0
BOOL CSoundBufferFMod::ReadWavBuffer(const STRING &name)
{
	Release();

	char* lpAddress = NULL;
	DWORD dwSize = CGameProcedure::s_pResourceProvider->loadResource(name.c_str(), lpAddress, "General");
	if(dwSize > 0)
	{
		m_pFModSample = FSOUND_Sample_Load(FSOUND_FREE, 
				lpAddress, 
				FSOUND_HW3D | FSOUND_LOADMEMORY, 0, dwSize);
		CGameProcedure::s_pResourceProvider->unloadResource( lpAddress, dwSize );
	}
	
	if(!m_pFModSample) 
	{
		KLThrow("Invalid sound file:%s", name.c_str());
		return FALSE;
	}

	//缺省所有声音都是不循环的
    FSOUND_Sample_SetMode(m_pFModSample, FSOUND_LOOP_OFF);

	return TRUE;
}
예제 #6
0
void
SoundEffectFMOD::Load(void *inBuffer, int inSize)
{
    // Loading the sound as a Loop off, 8bit mono, signed, not hardware accelerated sample

    mHandle = FSOUND_Sample_Load(FSOUND_FREE, (const char*)inBuffer,
                                 (FSOUND_NORMAL | FSOUND_LOADMEMORY), inSize, 0);
}
예제 #7
0
void
SoundEffectFMOD::Load(const std::string& inName)
{
    // Loading the sound as a Loop off, 8bit mono, signed, not hardware accelerated sample
    mHandle = FSOUND_Sample_Load(FSOUND_FREE, inName.c_str(),
                                 FSOUND_NORMAL, 0, 0);
    SetFileName(inName);
}
예제 #8
0
void Title::Init(GameEngine* game)
{
     image1=ChargementImage("IMG/title.png");
     image2=ChargementImage("IMG/cursor.pcx");
     image02.x = 300;
     image02.y = 515;
     fondu = SDL_CreateRGBSurface(SDL_HWSURFACE, 800, 600, 32, 0, 0, 0, 0);
     SDL_FillRect(fondu, NULL, SDL_MapRGB(SDL_GetVideoSurface()->format, 0, 0, 0));
     musique1 = FSOUND_Stream_Open("SOUND/music.mp3", 0, 0, 0);
     sonCurseurDeplacement = FSOUND_Sample_Load(FSOUND_FREE, "SOUND/cursormove.wav", 0, 0, 0);
     sonCurseurValider = FSOUND_Sample_Load(FSOUND_FREE, "SOUND/cursorselect.wav", 0, 0, 0);

     positionCurseur = 1;
	 quit = false;


}
/**
 * @author JoSch
 * @date 07-12-2005
 */
void Fmod3SoundSample::load() throw (RuntimeException)
{
    getSoundResource()->load();
    DataStreamPtr stream = getSoundResource()->getDataStream();
    stream->seek(0);
    int len = stream->size();
    char *data = new char[len];
    stream->read(data, len);
    unsigned int mode = FSOUND_LOADMEMORY;
    if (is3d())
    {
        mode |= FSOUND_HW3D | FSOUND_FORCEMONO;
    } else {
        mode |= FSOUND_HW2D;
    }
    if (isLooping())
    {
        mode |= FSOUND_LOOP_NORMAL;
    } else {
        mode |= FSOUND_LOOP_OFF;
    }
    mSample = FSOUND_Sample_Load(FSOUND_FREE, data, mode,
        0, len);
    if (mSample == 0 && !is3d() )
    {
        mode |= FSOUND_FORCEMONO;
        mSample = FSOUND_Sample_Load(FSOUND_FREE, data, mode,
            0, len);
    }
    delete[] data;

    if( mSample == NULL )
    {
        int err = FSOUND_GetError();
        Throw( RuntimeException, "Fmod Error:" + Ogre::StringConverter::toString(err) + " while loading " + getName() );
    }   
}
예제 #10
0
파일: s_fmod.c 프로젝트: HipsterLion/SRB2
/******************************************************************************
 *
 * Creates 2D (stereo) source
 *
 ******************************************************************************/
EXPORT INT32 HWRAPI (Add2DSource) (sfx_data_t *sfx)
{
	FSOUND_SAMPLE *fmsample = NULL;
	INT32 chan = -1;

	if (!sfx)
		return chan;

	fmsample = FSOUND_Sample_Load(FSOUND_FREE, INT2CHAR(sfx->data), FSOUND_DOOMLOAD, SFXLENGTH);

	if (fmsample)
	{
		if (!FSOUND_Sample_SetDefaults(fmsample,
		 (INT32)((float)(*((UINT16 *)sfx->data+1)) * recalc_pitch(sfx->pitch)),
		 sfx->volume == -1 ? 255 : sfx->volume,
		 sfx->sep == NORMAL_SEP ? FSOUND_STEREOPAN : sfx->sep,
		 sfx->priority))
			DBG_Printf("FMOD(Add2DSource, FSOUND_Sample_SetDefaults, sfxid# %i): %s\n", sfx->id,FMOD_ErrorString(FSOUND_GetError()));

		if (!FSOUND_Sample_SetMode(fmsample,FSOUND_2D))
			DBG_Printf("FMOD(Add2DSource, FSOUND_Sample_SetMode, sfxid# %i): %s\n", sfx->id,FMOD_ErrorString(FSOUND_GetError()));

		chan = FSOUND_PlaySoundEx(FSOUND_FREE,fmsample,NULL,true);

		if (chan == -1)
		{
			DBG_Printf("FMOD(Add2DSource, FSOUND_PlaySoundEx, sfxid# %i): %s\n", sfx->id,FMOD_ErrorString(FSOUND_GetError()));
			return chan;
		}
#ifdef MORESTUFF
		else DBG_Printf("FMOD(Add2DSource, FSOUND_PlaySoundEx): sfxid# %i is playing on channel %i\n", sfx->id,chan);
#endif
	}
	else
	{
		DBG_Printf("FMOD(Add2DSource,FSOUND_Sample_Load, sfxid# %i): %s\n", sfx->id,FMOD_ErrorString(FSOUND_GetError()));
		return chan;
	}

	if (FSOUND_GetCurrentSample(chan))
	{
		if (!FSOUND_SetCurrentPosition(chan, 0))
			DBG_Printf("FMOD(Add2DSource, FSOUND_SetCurrentPosition, channel %i, sfxid# %i): %s\n", chan,sfx->id,FMOD_ErrorString(FSOUND_GetError()));
	}

	return chan;
}
예제 #11
0
void CAudioManager::LoadSample(int id, std::string filename){
  if(m_bValidAudio == false)
    return;

  AUDIO_VEC temp;
  FSOUND_SAMPLE *handle;
  //handle=FSOUND_Sample_Load (FSOUND_FREE,filename.c_str(),0,0,0);
  handle=FSOUND_Sample_Load (id,filename.c_str(),0,0,0);
  if(handle == NULL){ //error
    return;
  }
  else{               //good
    temp.AudioID = id;
    temp.handle = handle;
    temp.filename = filename;
    temp.channelPlaying = -1;
    m_AudioClip.push_back(temp);
  }
}
void CAudioManager::LoadSample(int id, std::string filename){
  //if(m_bValidAudio == false)
  //  return;

  AUDIO_VEC temp;
  FSOUND_SAMPLE *handle;
  handle=FSOUND_Sample_Load (id,filename.c_str(),FSOUND_HW3D, 0, 0);// | FSOUND_LOOP_NORMAL,0,0);
  //FSOUND_2D | FSOUND_LOOP_NORMAL
  if(handle == NULL){ //error
    return;
  }
  else{               //good
    temp.AudioID = id;
    temp.handle = handle;
    temp.filename = filename;
    temp.channelPlaying = -1;
    m_AudioClip.push_back(temp);
  }
}
예제 #13
0
FSOUND_SAMPLE * SoundSystem::getSample( const FileName &fileName )
{
	map<FileName, FSOUND_SAMPLE*>::const_iterator i;
	FSOUND_SAMPLE *sound = 0;

	i = cache.find(fileName); // check for it in the cache

	if(i == cache.end())
	{
		sound = FSOUND_Sample_Load(FSOUND_FREE, fileName.c_str(), 0, 0, 0);
		cache.insert(make_pair(fileName, sound)); // cache the sound chunk
		TRACE("Loaded and cached sound file:" + fileName.str());
	}
	else
	{
		sound = i->second;
	}

	return sound;
}
예제 #14
0
//-----------------------------------------------------------------------------
// Func: void CShip::loadSounds()
// Desc: Sounds are loaded (hence the name). 
//       The names of the sound files to load are hard-coded
// Note: Only loads sounds for the player
//-----------------------------------------------------------------------------
void CShip::loadSounds()
{
  if( initialized || !isPlayer )
  {
    return;
  }

  char *sndFile = "audio/ambmines.wav"; //"audio/b.wav"; //

  sndEngine = FSOUND_Sample_Load( FSOUND_FREE, 
                                  sndFile,
                                  FSOUND_8BITS | FSOUND_MONO | FSOUND_LOOP_NORMAL, 
                                  0 );
  if( sndEngine == NULL )
  {
    error.msg( "CLIENT: CShip::loadSounds(): couldn't load %s", sndFile );
  }
  
  channel = FSOUND_PlaySound( FSOUND_FREE, sndEngine );
  FSOUND_SetVolume( channel, 0 );

  error.msg( "CLIENT: Loaded sound %s", sndFile);
}
int		put_song_bcast(t_sdl *sdl, int x, int y)
{
  FSOUND_SAMPLE	*turkey;

  FSOUND_Init(44100, 32, 0);
  sdl->game.rec.x = (x - sdl->scrollX) * MAP_W + 30;
  sdl->game.rec.y = (y - sdl->scrollY) * MAP_H + HEADER_MENU + 10;
  sdl->game.rec.h = 17;
  sdl->game.rec.w = 17;
  xSDL_BlitSurface(sdl->game.bcast, NULL, sdl->screen, &sdl->game.rec);
  SDL_UpdateRects(sdl->screen, 1, &sdl->game.rec);
  if ((turkey = FSOUND_Sample_Load(FSOUND_FREE, "src_graphic/sound/gobble.wav",
				   0, 0, 0)) == NULL)
    {
      my_printf("Warning: Sound loading failled\n");
      SDL_Delay(1000);
      return (0);
    }
  FSOUND_PlaySound(FSOUND_FREE, turkey);
  SDL_Delay(1000);
  FSOUND_Sample_Free(turkey);
  FSOUND_Close();
  return (1);
}
예제 #16
0
void StaticEvent(struct s_map *map, struct s_lib_sprite *libsprite, struct s_lib_event *libevent)
{
     GET_MAPEVENT(10,3,map,libevent).type=EVENT_TELEPORT;
     GET_MAPEVENT(10,3,map,libevent).onaction=EVENT_ACTION_AUTO;
     GET_MAPEVENT(10,3,map,libevent).proba=100;
     GET_MAPEVENT(10,3,map,libevent).player_anim=-1;
     GET_MAPEVENT(10,3,map,libevent).sound=FSOUND_Sample_Load(FSOUND_FREE,EVENT_SON,FSOUND_NORMAL,0,0);
     GET_MAPEVENT(10,3,map,libevent).is_unique=0;
     GET_MAPEVENT(10,3,map,libevent).next=NULL;
     GET_MAPEVENT(10,3,map,libevent).param=calloc(1,sizeof(struct s_event_param_teleport));
     ((struct s_event_param_teleport*)GET_MAPEVENT(10,3,map,libevent).param)->filename=(char*)strdup("map/maison2_1");
     ((struct s_event_param_teleport*)GET_MAPEVENT(10,3,map,libevent).param)->startX=10*32;
     ((struct s_event_param_teleport*)GET_MAPEVENT(10,3,map,libevent).param)->startY=4*32;
     
     libevent->sprite_event[1].type=EVENT_INN;
     libevent->sprite_event[1].onaction=EVENT_ACTION_ONKEYPRESS;
     libevent->sprite_event[1].proba=100;
     libevent->sprite_event[1].player_anim=-1;
     libevent->sprite_event[1].sound=NULL;
     libevent->sprite_event[1].is_unique=0;
     libevent->sprite_event[1].next=NULL;
     libevent->sprite_event[1].param=calloc(1,sizeof(struct s_event_param_inn));
     ((struct s_event_param_inn*)libevent->sprite_event[1].param)->cout=50;
}
예제 #17
0
glui32 glk_schannel_play_ext(schanid_t chan, glui32 snd, glui32 repeats, glui32 notify)
{
    FILE *file;
    long pos, len;
    glui32 type;
    char *buf;
    int offset = 0;
    int i;

    if (!chan) {
	gli_strict_warning("schannel_play_ext: invalid id.");
	return 0;
    }

    /* stop previous noise */
    glk_schannel_stop(chan);

    if (repeats == 0)
	return 1;

    /* load sound resource into memory */

    if (!giblorb_is_resource_map())
    {
	char name[1024];

	sprintf(name, "%s/SND%ld", gli_workdir, snd); 

	file = fopen(name, "rb");
	if (!file)
	    return 0;

	fseek(file, 0, SEEK_END);
	len = ftell(file);

	buf = malloc(len);
	if (!buf) {
	    fclose(file);
	    return 0;
	}

	fseek(file, 0, 0);
	fread(buf, 1, len, file);
	fclose(file);

	/* identify by file magic the two types that fmod can do... */

	type = 0;	/* unidentified */

	/* AIFF */
	if (len > 4 && !memcmp(buf, "FORM", 4))		
	    type = giblorb_ID_FORM;

	/* WAVE */
	if (len > 4 && !memcmp(buf, "WAVE", 4))
	    type = giblorb_ID_WAVE;

	/* MIDI */
	if (len > 4 && !memcmp(buf, "MThd", 4))
	    type = giblorb_ID_MIDI;

	/* Ogg Vorbis */
	if (len > 4 && !memcmp(buf, "OggS", 4))
	    type = giblorb_ID_OGG;

	/* s3m */
	if (len > 0x30 && !memcmp(buf + 0x2c, "SCRM", 4))
	    type = giblorb_ID_MOD;

	/* XM */
	if (len > 20 && !memcmp(buf, "Extended Module: ", 17))
	    type = giblorb_ID_MOD;

	/* MOD */
	if (len > 1084)
	{
	    char resname[4];
	    memcpy(resname, buf + 1080, 4);
	    if (!strcmp(resname+1, "CHN") ||	/* 4CHN, 6CHN, 8CHN */
		    !strcmp(resname+2, "CN") ||	 /* 16CN, 32CN */
		    !strcmp(resname, "M.K.") || !strcmp(resname, "M!K!") ||
		    !strcmp(resname, "FLT4") || !strcmp(resname, "CD81") ||
		    !strcmp(resname, "OKTA") || !strcmp(resname, "    "))
		type = giblorb_ID_MOD;
	}

	if (!memcmp(buf, "\377\372", 2))	/* mp3 */
	    type = giblorb_ID_MP3;

	/* look for RIFF (future boy has broken resources...?) */
	if (len > 128 && type == 0)
	    for (i = 0; i < 124; i++)
		if (!memcmp(buf+i, "RIFF", 4))
		{
		    offset = i;
		    type = giblorb_ID_WAVE;
		    break;
		}

	if (type == 0)
	    type = giblorb_ID_MP3;
    }

    else
    {
	giblorb_get_resource(giblorb_ID_Snd, snd, &file, &pos, &len, &type);
	if (!file)
	    return 0;

	buf = malloc(len);
	if (!buf)
	    return 0;

	fseek(file, pos, 0);
	fread(buf, 1, len, file);
    }

    switch (type)
    {
    case giblorb_ID_FORM:
    case giblorb_ID_WAVE:
    case giblorb_ID_MP3:
	chan->sample = FSOUND_Sample_Load(FSOUND_UNMANAGED, buf + offset,
		FSOUND_NORMAL|FSOUND_LOADMEMORY, 0, len);
	if (!chan->sample) { free(buf); return 0; }
	if (repeats != 1)
	    FSOUND_Sample_SetMode(chan->sample, FSOUND_LOOP_NORMAL);
	else
	    FSOUND_Sample_SetMode(chan->sample, FSOUND_LOOP_OFF);
	chan->channel = FSOUND_PlaySound(FSOUND_FREE, chan->sample);
	FSOUND_SetVolume(chan->channel, chan->volume / 256);
	FSOUND_SetPaused(chan->channel, 0);
	break;

    case giblorb_ID_MOD:
    case giblorb_ID_MIDI:
	chan->module = FMUSIC_LoadSongEx(buf, 0, len, FSOUND_LOADMEMORY, 0, 0);
	if (!chan->module) { free(buf); return 0; }
	if (repeats != 1)
	    FMUSIC_SetLooping(chan->module, 1);
	else
	    FMUSIC_SetLooping(chan->module, 0);
	FMUSIC_SetMasterVolume(chan->module, chan->volume / 256);
	FMUSIC_PlaySong(chan->module);
	break;

    default:
	gli_strict_warning("schannel_play_ext: unknown resource type.");
    }

    free(buf);

    return 1;
}
예제 #18
0
/*
[
    [DESCRIPTION]

    [PARAMETERS]
 
    [RETURN_VALUE]

    [REMARKS]

    [SEE_ALSO]
]
*/
int main()
{
    FSOUND_SAMPLE *samp1 = 0, *samp2 = 0;
    int key;
    int eqid1,eqid2;
   
    if (FSOUND_GetVersion() < FMOD_VERSION)
    {
        printf("Error : You are using the wrong DLL version!  You should be using FMOD %.02f\n", FMOD_VERSION);
        return 1;
    }

     /*
        INITIALIZE
    */
    FSOUND_SetBufferSize(100);  /* This is nescessary to get FX to work on output buffer */
    if (!FSOUND_Init(44100, 32, FSOUND_INIT_ENABLESYSTEMCHANNELFX))
    {
        printf("Error!\n");
        printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
        return 1;
    }

    /*
        LOAD SAMPLES
    */

    /* PCM,44,100 Hz, 8 Bit, Mono */
    samp1 = FSOUND_Sample_Load(FSOUND_FREE, "../../media/drumloop.wav", FSOUND_2D, 0, 0);
    if (!samp1)
    {
        printf("Error!\n");
        printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
        return 1;
    }
    FSOUND_Sample_SetMode(samp1, FSOUND_LOOP_OFF);

    /* PCM,44,100 Hz, 16 Bit, Stereo */
    samp2 = FSOUND_Sample_Load(FSOUND_FREE, "../../media/jules.mp3", FSOUND_HW2D | FSOUND_ENABLEFX, 0, 0);
    if (!samp2)
    {
        printf("Error!\n");
        printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
        return 1;
    }

    /*
        DISPLAY HELP
    */

    printf("FSOUND Output Method : ");
    switch (FSOUND_GetOutput())
    {
        case FSOUND_OUTPUT_NOSOUND:  printf("FSOUND_OUTPUT_NOSOUND\n"); break;
        case FSOUND_OUTPUT_WINMM:    printf("FSOUND_OUTPUT_WINMM\n"); break;
        case FSOUND_OUTPUT_DSOUND:   printf("FSOUND_OUTPUT_DSOUND\n"); break;
        case FSOUND_OUTPUT_ASIO:     printf("FSOUND_OUTPUT_ASIO\n"); break;
        case FSOUND_OUTPUT_OSS:      printf("FSOUND_OUTPUT_OSS\n"); break;
        case FSOUND_OUTPUT_ALSA:     printf("FSOUND_OUTPUT_ALSA\n"); break;
        case FSOUND_OUTPUT_ESD:      printf("FSOUND_OUTPUT_ESD\n"); break;
    };

    printf("FSOUND Mixer         : ");
    switch (FSOUND_GetMixer())
    {
        case FSOUND_MIXER_QUALITY_FPU:    printf("FSOUND_MIXER_QUALITY_FPU\n"); break;
        case FSOUND_MIXER_QUALITY_MMXP5:  printf("FSOUND_MIXER_QUALITY_MMXP5\n"); break;
        case FSOUND_MIXER_QUALITY_MMXP6:  printf("FSOUND_MIXER_QUALITY_MMXP6\n"); break;
    };
    printf("FSOUND Driver        : %s\n", FSOUND_GetDriverName(FSOUND_GetDriver()));

    printf("=========================================================================\n");
    printf("Press 1       Play SOFTWARE sound affected by following reverb dsp unit (wet)\n");
    printf("      2       Play SOFTWARE sound unaffected by following reverb dsp unit (dry)\n");
    if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND)
    {
        printf("      3       Play HARDWARE FX enabled sound using Direct X 8 (echo+flange)\n");
        printf("      4       Set EQ on global software output to be affect by DX8 FX\n");
        printf("              Press 1 or 2 to hear the effect (3 is unaffected)\n");
        printf("      5       Turn off EQ on global software output\n");
    }
    printf("      ESC     Quit\n");
    printf("=========================================================================\n");

    /*
        SET UP DSPS!
    */

    SetupReverb();

    /*
        Note if we are using a dsp unit for playing sounds, callback and parameter are ignored!
    */
    DrySFXUnit = FSOUND_DSP_Create(NULL, FSOUND_DSP_DEFAULTPRIORITY_USER+100, 0);
    FSOUND_DSP_SetActive(DrySFXUnit, TRUE);

    /*
        You must pause the software output before getting the FX handle on it.
    */
    if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND)
    {
        FSOUND_SetPaused(FSOUND_SYSTEMCHANNEL, TRUE);

        eqid1 = FSOUND_FX_Enable(FSOUND_SYSTEMCHANNEL, FSOUND_FX_PARAMEQ);
        eqid2 = FSOUND_FX_Enable(FSOUND_SYSTEMCHANNEL, FSOUND_FX_PARAMEQ);

        FSOUND_SetPaused(FSOUND_SYSTEMCHANNEL, FALSE);
    }

    /*
        START PLAYING!
    */

    do
    {
        key = 0;
        printf("channels playing = %d cpu usage = %.02f%%\r", FSOUND_GetChannelsPlaying(), FSOUND_GetCPUUsage());

        if (kbhit())
        {
            key = getch();


            if (key == '1') 
            {
                int channel = FSOUND_PlaySound(FSOUND_FREE, samp1);
            }
            if (key == '2') 
            {
                FSOUND_PlaySoundEx(FSOUND_FREE, samp1, DrySFXUnit, FALSE);
            }
            if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND)
            {       
                if (key == '3') 
                {
                    static int  fxchannel = FSOUND_FREE;
                    static int  echoid = -1, echoid2 = -1,flangeid = -1, firsttime;

                    if (fxchannel == FSOUND_FREE)
                    {
                        firsttime = TRUE;
                    }
                    else
                    {
                        firsttime = FALSE;
                    }

                    fxchannel = FSOUND_PlaySoundEx(fxchannel, samp2, DrySFXUnit, TRUE);     

                    /* 
                       NOTE! Even though it is for hardware FX, set it to a DrySFXUnit just 
                       in case a non hardware output mode has been selected (such as 
                       WINMM/Linux etc) and it actually drops back to 100% software 
                     */

                    FSOUND_SetVolume(fxchannel, 120); /* turn it down a bit! */
                
                    if (firsttime)
                    {
                        echoid   = FSOUND_FX_Enable(fxchannel, FSOUND_FX_ECHO);
                        echoid2  = FSOUND_FX_Enable(fxchannel, FSOUND_FX_ECHO);
                        flangeid = FSOUND_FX_Enable(fxchannel, FSOUND_FX_FLANGER);
                    }

                    FSOUND_SetPaused(fxchannel, FALSE);

                    FSOUND_FX_SetEcho(echoid,  80.0f, 70.0f, 100.0f, 100.0f, TRUE);
                    FSOUND_FX_SetEcho(echoid2,  100, 70.0f, 10, 10, FALSE);
                }
                if (key == '4')
                {
                    FSOUND_FX_SetParamEQ(eqid1, 8000, 36, -15);
                    FSOUND_FX_SetParamEQ(eqid2, 16000, 36, -15);
                }
                if (key == '5')
                {
                    FSOUND_FX_SetParamEQ(eqid1, 8000, 15, 0);
                    FSOUND_FX_SetParamEQ(eqid2, 8000, 15, 0);
                }
            }
        }
        Sleep(10);

    } while (key != 27);

    printf("\n");

    /*
        CLEANUP AND SHUTDOWN
    */

    FSOUND_DSP_Free(DrySFXUnit);    

    CloseReverb();

    FSOUND_Sample_Free(samp1);
    FSOUND_Sample_Free(samp2);

    FSOUND_Close();
   
    return 0;
}
예제 #19
0
perso *init_perso(perso *p)
{
	int i;

	if(p != NULL)
	{
		p->etat = DEBOUT;
		p->transformation = SMALL_MARIO;

		p->personnage = 0;
		p->environnement = AIR;

		p->position.x = 32;
		p->position.y = 500;
		p->position_prec.x = p->position.x;
		p->position_prec.y = p->position.y;

		p->vitesse.x = 0;
		p->vitesse.y = 0;

		p->tps_invincible = 0;
		p->peut_grimper = 0;
		p->checkpoint = -1;
		p->tps_invincible_etoile = 0;
		p->monstre_porte = NULL;

		p->tps_transformation = 0;
		p->tps_attaque_speciale = 0;
		p->tps_attaque = 0;
		p->tps_pousse_carapace = 0;
		p->tps_mort = 0;
        p->tps_saut = 0;
		p->tuyau = NULL;

		p->cote = COTE_DROIT;

		p->taille.x = 1;
		p->taille.y = 1;

		p->texture_act = malloc(sizeof(data_texture));
		p->texture_prec = malloc(sizeof(data_texture));

		/* Initialisation du tableau de vitesse d'animation */
		for (i = 0; i < NB_ETATS_TEXTURE; i++){
			p->texture_act->nb_sprites[i] = 0;
			p->texture_prec->nb_sprites[i] = 0;
			p->texture_act->v_anim[i] = 0;
			p->texture_prec->v_anim[i] = 0;
		}

		/* Initialisation du tableau des sons */
		p->sons[SND_SAUT] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Mario_Jump.wav", 0, 0, 0);
		p->sons[SND_TOUCHE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Mario_Retrecit.wav", 0, 0, 0);
		p->sons[SND_TRANSFORME_FEU] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Transformation_fire.wav", 0, 0, 0);
		p->sons[SND_VIE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/1-up.wav", 0, 0, 0);
		p->sons[SND_FIREBALL] = FSOUND_Sample_Load(FSOUND_FREE, "musics/fireball.wav", 0, 0, 0);
		p->sons[SND_THUNDER_BALL] = FSOUND_Sample_Load(FSOUND_FREE, "musics/thunder_ball.wav", 0, 0, 0);
		p->sons[SND_DERAPE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Derape.wav", 0, 0, 0);
		p->sons[SND_PIECE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/coin.wav", 0, 0, 0);
		p->sons[SND_BREAK_BLOCK] = FSOUND_Sample_Load(FSOUND_FREE, "musics/break_block.wav", 0, 0, 0);
		p->sons[SND_ITEM_BLOCK] = FSOUND_Sample_Load(FSOUND_FREE, "musics/item_block.wav", 0, 0, 0);
		p->sons[SND_UNBREAKABLE_BLOCK] = FSOUND_Sample_Load(FSOUND_FREE, "musics/unbreakable_block.wav", 0, 0, 0);
		p->sons[SND_INVINCIBLE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/invincible.mp3", 0, 0, 0);
		p->sons[SND_DIE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/die.ogg", 0, 0, 0);
		p->sons[SND_PIPE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/pipe.wav", 0, 0, 0);
		p->sons[SND_CLEAR] = FSOUND_Sample_Load(FSOUND_FREE, "musics/smw-clear.wav", 0, 0, 0);
		p->sons[SND_CHECKPOINT] = FSOUND_Sample_Load(FSOUND_FREE, "musics/checkpoint.wav", 0, 0, 0);
		p->sons[SND_PTS_FINAL] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Points_finaux.wav", 0, 0, 0);


		/* initialisation du HUD */
		init_HUD(p);
	}

	return p;
}
예제 #20
0
void CALLBACK midiCallback(HMIDIIN handle, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
{   
unsigned long int on, off;
	
BITMAP* midipress = create_bitmap(800, 95);
BITMAP *piano = load_bitmap( "resources/piano.bmp", NULL);

draw_sprite(midipress, piano, 35, 0);
rectfill(midipress, 0, 0, 35, 95, makecol(0, 0, 0));
rectfill(midipress, 765, 0, 800, 95, makecol(0, 0, 0));
	
//När midi devicen väljs skickas alltid en kontrollsignal som har dwParam1 som 0
	
   if(dwParam1==0)
   {
   printf("\nMidi input starting");                   
   }
   
   //När dwParam1 hamnar i detta intervall brukar noten ha släppts
   else if(dwParam1<4230000 && dwParam1>4200000)
   {
   off = 1+((dwParam1-144)%(256*256))/256;
   }
    
   //Annars kan vi anta att den slogs på
   else
   {
   BITMAP *keyleft = load_bitmap("resources/keyleftf.bmp", NULL);
   BITMAP *keyright = load_bitmap("resources/keyrightf.bmp", NULL);
   BITMAP *keymiddle = load_bitmap("resources/keymiddlef.bmp", NULL);
   BITMAP *keyblack = load_bitmap("resources/keyblackf.bmp", NULL);
   
   FSOUND_STREAM* music;
   char fil[11]="nox/00.wav";
   fil[10]='\0';
         
   on = ((dwParam1-144)%(256*256))/256;
   //printf("\nOn: %ld", on);
   
   textprintf_ex(midipress, font, 10, 0, makecol(255, 255, 255), -1, "%d", on);
   
   fil[4]=(on/10)+'0';
   fil[5]=(on%10)+'0';

   //Noternas placering förklaras mer ingående i drawnotes.c
    
   //A
   if(on%12==9%12)draw_sprite(midipress, keymiddle,35+(((7*floor((on-21)/12))+0)*730/52),12);
    
   //B
   else if(on%12==11%12)draw_sprite(midipress, keyright,35+(((7*floor((on-21)/12))+1)*730/52),12);
   
   //C
   else if(on%12==0)draw_sprite(midipress, keyleft,35+(((7*floor((on-21)/12))+2)*730/52),12);
    
   //D
   else if(on%12==2%12)draw_sprite(midipress, keymiddle,35+(((7*floor((on-21)/12))+3)*730/52),12);
    
   //E
   else if(on%12==4%12)draw_sprite(midipress, keyright,35+(((7*floor((on-21)/12))+4)*730/52),12);
    
   //F
   else if(on%12==5%12)draw_sprite(midipress, keyleft,35+(((7*floor((on-21)/12))+5)*730/52),12);
    
   //G
   else if(on%12==7%12)draw_sprite(midipress, keymiddle,35+(((7*floor((on-21)/12))+6)*730/52),12);
     
     
   //A#
   else if(on%12==10%12)draw_sprite(midipress, keyblack,10+35+98*floor((on-21)/12),12);
    
   //C#
   else if(on%12==1%12)draw_sprite(midipress, keyblack,38+35+98*floor((on-21)/12),12);
    
   //D#
   else if(on%12==3%12)draw_sprite(midipress, keyblack,52+35+98*floor((on-21)/12),12);
    
   //F#
   else if(on%12==6%12)draw_sprite(midipress, keyblack,80+35+98*floor((on-21)/12),12);
    
   //G#
   else if(on%12==8%12)draw_sprite(midipress, keyblack,94+35+98*floor((on-21)/12),12);
   
   //Spelar en ljudfil av noten som slogs
   music=FSOUND_Sample_Load(FSOUND_FREE,fil,0,0,0);
   FSOUND_PlaySound (FSOUND_FREE, music);
   
   //Det går inte att fria minnet till music
   //eftersom ljudfilen inte spelats klart när funktionen slutar,
   //det blir extra svårt av att funktionen är isolerad vilket leder till att
   //programmet läcker ungefär 500kb minne per slagen not (storleken av ljudfilen)
   
   destroy_bitmap(keyleft);   
   destroy_bitmap(keymiddle);   
   destroy_bitmap(keyright);   
   destroy_bitmap(keyblack);   
    
   }

blit(midipress, screen, 0, 0, 0, 505, 800, 95);
destroy_bitmap(midipress);   
destroy_bitmap(piano);   
}
예제 #21
0
/// <summary>   Loads the sounds. </summary>
///
/// <returns>   The sounds. </returns>
int CSound::LoadSounds()
{
	s_engine = FSOUND_Sample_Load(FSOUND_FREE, "wav/engine.wav", FSOUND_LOOP_NORMAL,0,0);
	s_tanklaser = FSOUND_Sample_Load(FSOUND_FREE, "wav/laser.wav", FSOUND_NORMAL,0,0);
	s_fire = FSOUND_Sample_Load(FSOUND_FREE, "wav/fire.wav", FSOUND_NORMAL,0,0);
	s_build = FSOUND_Sample_Load(FSOUND_FREE, "wav/build.wav", FSOUND_NORMAL,0,0);
	s_die = FSOUND_Sample_Load(FSOUND_FREE, "wav/die.wav", FSOUND_NORMAL,0,0);
	s_eXplode = FSOUND_Sample_Load(FSOUND_FREE, "wav/eXplode.wav", FSOUND_NORMAL,0,0);
	s_turret = FSOUND_Sample_Load(FSOUND_FREE, "wav/turretfire.wav", FSOUND_NORMAL,0,0);
	s_buzz = FSOUND_Sample_Load(FSOUND_FREE, "wav/buzz.wav", FSOUND_NORMAL,0,0);
	s_click = FSOUND_Sample_Load(FSOUND_FREE, "wav/click.wav", FSOUND_NORMAL,0,0);
	s_bigturret = FSOUND_Sample_Load(FSOUND_FREE, "wav/bturr.wav", FSOUND_NORMAL,0,0);
	s_demolish = FSOUND_Sample_Load(FSOUND_FREE, "wav/demo.wav", FSOUND_NORMAL,0,0);
	s_screech = FSOUND_Sample_Load(FSOUND_FREE, "wav/screech.wav", FSOUND_NORMAL,0,0);
	s_hit = FSOUND_Sample_Load(FSOUND_FREE, "wav/hit.wav", FSOUND_NORMAL,0,0);
	s_cloak = FSOUND_Sample_Load(FSOUND_FREE, "cloak.wav", FSOUND_NORMAL,0,0);
	s_flare = FSOUND_Sample_Load(FSOUND_FREE, "flare.wav", FSOUND_NORMAL,0,0);
	if (!s_tanklaser || !s_fire || !s_engine || !s_build || !s_die || !s_eXplode || !s_turret || !s_buzz || !s_click || !s_bigturret || !s_demolish || !s_screech || !s_hit || !s_cloak || !s_flare)
		return 0;  
	return 1;
}
bool LLAudioBufferFMOD::loadWAV(const std::string& filename)
{
	// Try to open a wav file from disk.  This will eventually go away, as we don't
	// really want to block doing this.
	if (filename.empty())
	{
		// invalid filename, abort.
		return false;
	}

	if (!LLAPRFile::isExist(filename, LL_APR_RPB))
	{
		// File not found, abort.
		return false;
	}
	
	if (mSamplep)
	{
		// If there's already something loaded in this buffer, clean it up.
		FSOUND_Sample_Free(mSamplep);
		mSamplep = NULL;
	}

	// Load up the wav file into an fmod sample
#if LL_WINDOWS
	// MikeS. - Loading the sound file manually and then handing it over to FMOD,
	//	since FMOD uses posix IO internally,
	// which doesn't work with unicode file paths.
	LLFILE* sound_file = LLFile::fopen(filename,"rb");	/* Flawfinder: ignore */
	if (sound_file)
	{
		fseek(sound_file,0,SEEK_END);
		U32	file_length = ftell(sound_file);	//Find the length of the file by seeking to the end and getting the offset
		size_t	read_count;
		fseek(sound_file,0,SEEK_SET);	//Seek back to the beginning
		char*	buffer = new char[file_length];
		llassert(buffer);
		read_count = fread((void*)buffer,file_length,1,sound_file);//Load it..
		if(ferror(sound_file)==0 && (read_count == 1)){//No read error, and we got 1 chunk of our size...
			unsigned int mode_flags = FSOUND_LOOP_NORMAL | FSOUND_LOADMEMORY;
									//FSOUND_16BITS | FSOUND_MONO | FSOUND_LOADMEMORY | FSOUND_LOOP_NORMAL;
			mSamplep = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, mode_flags , 0, file_length);
		}
		delete[] buffer;
		fclose(sound_file);
	}
#else
	mSamplep = FSOUND_Sample_Load(FSOUND_UNMANAGED, filename.c_str(), FSOUND_LOOP_NORMAL, 0, 0);
#endif

	if (!mSamplep)
	{
		// We failed to load the file for some reason.
		llwarns << "Could not load data '" << filename << "': "
				<< FMOD_ErrorString(FSOUND_GetError()) << llendl;

		//
		// If we EVER want to load wav files provided by end users, we need
		// to rethink this!
		//
		// file is probably corrupt - remove it.
		LLFile::remove(filename);
		return false;
	}

	// Everything went well, return true
	return true;
}
예제 #23
0
// ***************************************************************************
void	CBufferFMod::loadDataToFMod(const uint8 *data)
{
    // Delete old one
    if(_FModSample)
    {
        FSOUND_Sample_Free(_FModSample);
        _FModSample= NULL;
    }

    // if some data, create new one
    if(data)
    {
        uint8 *tmpData = NULL;
        const uint8	*uploadData = data;

        // if format is ADPCM, decode into Mono16
        if(_Format==Mono16ADPCM)
        {
            // create Mono16 dest buffer
            uint	nbSample= _Size*2;
            tmpData= new uint8 [nbSample * sizeof(sint16)];

            // uncompress
            TADPCMState	state;
            state.PreviousSample = 0;
            state.StepIndex = 0;
            decodeADPCM(data, (sint16*)tmpData, nbSample, state);

            // change upload data, _Format and _Size to fit the new format
            uploadData= tmpData;
            _Format= Mono16;
            _Size= nbSample*2;
        }

        // create FMod sample and upload according to format
        uint32	type= 0;
        switch(_Format)
        {
        case Mono8:
            type= FSOUND_8BITS|FSOUND_MONO;
            break;
        case Mono16:
            type= FSOUND_16BITS|FSOUND_MONO;
            break;
        case Stereo8:
            type= FSOUND_8BITS|FSOUND_STEREO;
            break;
        case Stereo16:
            type= FSOUND_16BITS|FSOUND_STEREO;
            break;
        default:
            nlstop;
        };
        uint32	commonType= FSOUND_LOADRAW|FSOUND_LOOP_NORMAL|FSOUND_LOADMEMORY;
        // if can use hardware buffer
        if(!CSoundDriverFMod::getInstance()->forceSofwareBuffer())
            commonType|= FSOUND_HW3D;
        // create FMod sample
        _FModSample= FSOUND_Sample_Load(FSOUND_FREE, (const char*)uploadData, commonType|type, 0, _Size);

        // clear any temporary data
        if(tmpData)
        {
            delete [] tmpData;
        }
    }
}
예제 #24
0
파일: c_fmod.cpp 프로젝트: jbworley/dlstorm
void CSample::LoadCabSample(unsigned char *sdata,int ssize)
{
    if(data) FSOUND_Sample_Free(data);
    size=ssize;
    data=FSOUND_Sample_Load(FSOUND_FREE ,(const char *)sdata,FSOUND_LOADMEMORY|FSOUND_LOOP_OFF,0,size);
}
    result_fMod_WIN = FMOD_System_CreateSound(system_fMod_WIN, "AUDIO/dung.wav", FMOD_SOFTWARE, 0, &sound2);

    result_fMod_WIN = FMOD_System_CreateSound(system_fMod_WIN, "AUDIO/g.wav", FMOD_HARDWARE, 0, &sound3);

*/


//#########################################################################################################################
//_OLD_FMOD

FSOUND_Init(44000,64,0);
       
        //------------------------------------------------------------------------
        // attempt to open the mp3 file as a stream
        g_sample = FSOUND_Sample_Load(FSOUND_FREE,"AUDIO/bell6.wav",FSOUND_2D,0,0);

        //g_sample2 = FSOUND_Sample_Load(FSOUND_FREE,"AUDIO/dung.wav",FSOUND_2D,0,0);

        //------------------------------------------------------------------------
	            // start the sound playing
	    ch  = FSOUND_PlaySound(FSOUND_FREE,g_sample);
	    FSOUND_SetLoopMode(ch,FSOUND_LOOP_OFF);
        
        //ch2 = FSOUND_PlaySound(FSOUND_FREE,g_sample2);
 
        //FSOUND_SetLoopMode(ch2,FSOUND_LOOP_NORMAL);
        
        //============================================================================================
        //__________________________________________________________________frequencies
    	        // initialise fmod, 44000 Hz, 64 channels
예제 #26
0
//Chamada do main
int main(void)
{
//Inicia o som

    FSOUND_SAMPLE *samp1 = 0; //cria um ponteiro para armazenar o som em memória
    if (FSOUND_GetVersion() < FMOD_VERSION) // verificação da versão do fmod caso a versão do FSOUND for menor que a do FMOD retorna uma menssagem de erro
    {
        printf("Error : You are using the wrong DLL version!  You should be using FMOD %.02f\n", FMOD_VERSION);
        return 1;
    }
    //    Seleciona a saída de audio
    FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);

    //    Seleção do driver
   FSOUND_GetOutput(); // indentifica o tipo de saida
   FSOUND_GetMixer(); // indentifica o mixer
   FSOUND_SetDriver(0); // seta o driver de som que vai ser usado

    //    Inicializando o FMOD
    if (!FSOUND_Init(44100, 32, FSOUND_INIT_GLOBALFOCUS)) // se o valor do FSOUND_Init for 0 execute o tratamento de erro
    {
        printf("Error!\n");
        printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
        return 1;
    }

    // Carrengando o Sample
    // PCM,44,100 Hz, 32 Bit, Mono ou uma mp3 ou outros formatos suportados pelo fmod
    samp1 = FSOUND_Sample_Load(FSOUND_UNMANAGED, "topgear.ogg", FSOUND_NORMAL | FSOUND_HW2D, 0, 0); 
    if (!samp1)
    {
        printf("Error!\n");
        printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
        return 1;
    }

   // Aqui fala qual maneira o sample ira tocar caso falhe excute o tratamento de erro
    if(!FSOUND_Sample_SetMode(samp1, FSOUND_LOOP_NORMAL))// o loop normal toca a musica continuamente ate o programa fechar
   {
   printf("Error!\n");   
    printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
   }
   // Aqui sera tocado o sample ,caso falhe, execute o tratamento de erro
   if(!FSOUND_PlaySound(FSOUND_FREE, samp1))
   {
   printf("Error!\n");   
   printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
   }
    //Fim do codigo do som \\o  \o/   o//\o/
    //Sleep(10000);  // executa o som durante 10 segundos     (Essa funcao esta desativada no Street Frog)
    printf ("Jogo desenvolvido como Projeto Final para a Disciplina de Computacao Grafica");
    printf ("\nUFRN - CT - DCA");
    printf ("\nPor Claudio Henrique | Paulo Bruno | Thaisa Ramos");
    //printf ("\n");


    //E por fim a chamada para o OpenGL
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGB); //Modo para nao exibir rastros na tela
    glutInitWindowSize (890, 550); //Tamanho da janela
    glutInitWindowPosition (50, 50);  //Localizacao inicial da janela
	glutCreateWindow("Ajude o menino a chegar em casa"); //Nome da janela
    glutKeyboardFunc(Teclado); //Chama as funcoes do teclado
    glutSpecialFunc(Mover);  //Chama as funcoes especias do teclado (setas de movimento)
	Inicializa(); 
	iniciaText();
	glutDisplayFunc(Desenha); //Chama o desenho
	glutReshapeFunc(AlteraTamanhoJanela); //Correcao de largura e altura para a janela
    glutTimerFunc(10,movimentar,1);       //Chamada de movimento do carro
    glutTimerFunc(10,movimentacarro,1);   //Chamada de movimento do carro
    glutTimerFunc(10,movimentacarro2,1);  //Chamada de movimento do carro
    glutTimerFunc(10,movermad,1);         //Chamada de movimento da madeira
    glutTimerFunc(10,movermad1,1);        //Chamada de movimento da madeira
    glutTimerFunc(10,movermad2,1);        //Chamada de movimento da madeira
    glutMouseFunc(GerenciaMouse);         //Ativa o botao direito
	glutMainLoop();
	//Final das funcoes do OpenGL
	
    //    limpando a memoria e fechando o fmod (Som)
    FSOUND_Sample_Free(samp1); // limpa a memoria ultilizada pelo ponteiro do sample
    FSOUND_Close();  // encerra a API FMOD

}
예제 #27
0
void Jouer(SDL_Surface* ecran)
{
      srand(time(NULL));
      positionBallonOrig.x=positionBallonOrig.y=0;

      FSOUND_SAMPLE *pew = NULL;
      pew = FSOUND_Sample_Load(FSOUND_FREE, "paint.wav", 0, 0, 0);

      int continuer=1,etat=0;                                                //on charge le jeu ou bien on commence un enouvelle partie
                                                                  //et decide la finitude de la partie
      int t1=0;           // pour saisir l origine et la destination

      Ballon[EMPTY]=IMG_Load("empty.png");
      Ballon[BLUE]=IMG_Load("blue.png");
      Ballon[YELLOW]=IMG_Load("yellow.png");
      Ballon[RED]=IMG_Load("red.png");
      Ballon[GREEN]=IMG_Load("green.png");
      Ballon[BLACK]=IMG_Load("black.png");
      Ballon[WHITE]=IMG_Load("white.png");
      Ballon[LBLUE]=IMG_Load("lblue.png");
      Ballon[ATOMIC]=IMG_Load("atomic.png");
      //Ballon[BOOM]=IMG_Load("boom.png");

      SDL_Surface* bg=NULL;
      bg=IMG_Load("bg.jpg");
      SDL_BlitSurface(bg,NULL,ecran,&positionBallonOrig);

      SDL_Surface* BallonActuel=NULL;
      SDL_Rect positionBallon;

      coefScore=1;
      SDL_Event event;

      int i,j;
      for(i=0;i<Nb_Bloc_Largeur;i++)
	for(j=0;j<Nb_Bloc_Hauteur;j++)
	{
	 positionBallonOrig.x=i*Taille_Bloc+cte1;    positionBallonOrig.y=j*Taille_Bloc + cte2;
	SDL_BlitSurface(Ballon[grille[i][j]],NULL,ecran,&positionBallonOrig);
	if(grille[i][j]!=0) etat=1;
	}


      if(etat==0)
      {
       Score=0;
      score(ecran,Score);
      next(ecran) ;
      continuer=caissier(ecran);
      }
      score(ecran,Score);// s il y a chargement alors bliter le scor et et les next ballons
      next(ecran);
  while(continuer)
 {
      SDL_WaitEvent(&event);
      switch(event.type)
          {
            case SDL_QUIT:
                  continuer=0;
                  break ;

            case SDL_MOUSEBUTTONUP:
                  if(event.button.x>10 && event.button.x<109 && event.button.y>393 && event.button.y<424 )
                  {nouveaujeu(); continuer=0; break;}
                  if(event.button.x>10 && event.button.x<109 && event.button.y>439 && event.button.y<472)
                  { continuer=0; break;}
                  if(event.button.x>cte1 && event.button.x<(450+cte1) && event.button.y>cte2 && event.button.y<(cte2+450))
                  {
                     if(t1==0)
                        {
                        positionBallonOrig.x=event.button.x;//recuperer les coords de l origine
                        positionBallonOrig.y=event.button.y;
                        if(grille[(positionBallonOrig.x - cte1)/Taille_Bloc][(positionBallonOrig.y - cte2)/Taille_Bloc]!=EMPTY)
                              {
                              positionBallonOrig=position(positionBallonOrig);
                              FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son
                              SDL_BlitSurface(Ballon[ATOMIC],NULL,ecran,&positionBallonOrig);
                              SDL_Flip(ecran);
                              t1=1;
                              break;
                              }
                              break;
                        }
                     if(t1==1)
                        {
                        positionBallonDest.x=event.button.x;//recuperer les coords de la destination
                        positionBallonDest.y=event.button.y;
                        if(grille[(positionBallonDest.x - cte1)/Taille_Bloc][(positionBallonDest.y - cte2)/Taille_Bloc]==EMPTY)
                              {
                              positionBallonDest=position(positionBallonDest);
                              FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son
                              t1=2;
                              break;
                              }
                        else {
                              SDL_BlitSurface(Ballon[grille[(positionBallonOrig.x-cte1)/Taille_Bloc][(positionBallonOrig.y-cte2)/Taille_Bloc]],NULL,ecran,&positionBallonOrig);
                              FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son
                              positionBallonOrig=position(positionBallonDest);
                              SDL_BlitSurface(Ballon[ATOMIC],NULL,ecran,&positionBallonOrig);
                              SDL_Flip(ecran);
                              t1=1;
                              break;
                              }
                        }
                  }


            }

             if(t1==2)
                  {
                  if(Chemin(positionBallonOrig,positionBallonDest)==1)
                     {
                           BallonActuel=Ballon[PermuterBall(positionBallonOrig,positionBallonDest)];
                          // SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallonDest);
                         //SDL_BlitSurface(Ballon[EMPTY],NULL,ecran,&positionBallonOrig);
                         for(i=0; tri9[i].i != -1 ; i++)
                              {
                              positionBallon.x=tri9[i].i * Taille_Bloc + cte1;
                              positionBallon.y=tri9[i].j * Taille_Bloc + cte2;
                              SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallon);
                              SDL_Flip(ecran);
                              SDL_Delay(40);
                              SDL_BlitSurface(Ballon[EMPTY],NULL,ecran,&positionBallon);
                              }
                        SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallonDest);
                         SDL_Flip(ecran);
                         //bombe(positionBallonDest,ecran);
                         if(supligne(positionBallonDest,ecran)==0)
                           {
                               coefScore=1;
                               etat=caissier(ecran);
                              if(etat>0)
                              {
                                    //SDL_Delay(100);
                                     for(i=0; i<3 && i<etat ;i++)
                                   {
                                    positionBallon.x=PNext[i].i * Taille_Bloc + cte1;
                                    positionBallon.y=PNext[i].j * Taille_Bloc + cte2;
                                    supligne(positionBallon,ecran);
                                   }
                                    next(ecran);
                               }
                              else {continuer=0; msgbox_terminer(); nouveaujeu();}
                              }
                        else coefScore++;
                              t1=0;
                     }

                      else  t1=1;
                   }
          }
        // meilleurS();

      SDL_free(Ballon[0]);
      SDL_free(Ballon[1]);
      SDL_free(Ballon[2]);
      SDL_free(Ballon[3]);
      SDL_free(Ballon[4]);
      SDL_free(Ballon[5]);
      SDL_free(Ballon[6]);
      SDL_free(Ballon[7]);
      SDL_free(Ballon[8]);

      return ;
}
예제 #28
0
int CSound::Initialise(int rate,int channels,int svol,int mvol)
{
	if((channels > 16) || (channels < 0))
	{
		return 1;
	}
	FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
	FSOUND_Init(rate,channels,FSOUND_INIT_USEDEFAULTMIDISYNTH);

	songname = "Empty";


	SetSoundVolume(svol);
	SetMusicVolume(mvol);

	CurrentSong = NULL;
	CurrentSound = 0;
	
	pan = 127;
	freq = 11250;

	FSOUND_Sample_Load(0,"sfx/click.wav",FSOUND_LOOP_OFF,0);
	FSOUND_Sample_Load(1,"sfx/dong.wav",FSOUND_LOOP_OFF,0);

	FSOUND_Sample_Load(3,"sfx/computer.wav",FSOUND_LOOP_OFF,0);
	FSOUND_Sample_Load(4,"sfx/scitech.wav",FSOUND_LOOP_OFF,0);
	FSOUND_Sample_Load(5,"sfx/speed.wav",FSOUND_LOOP_OFF,0);
	FSOUND_Sample_Load(6,"sfx/placetrack.wav",FSOUND_LOOP_OFF,0);
	FSOUND_Sample_Load(7,"sfx/removetrack.wav",FSOUND_LOOP_OFF,0);

	FSOUND_Sample_Load(8, "sfx/click3.wav",FSOUND_LOOP_OFF,0);
	FSOUND_Sample_Load(9, "sfx/pickuptrack.wav",FSOUND_LOOP_OFF,0);

	FSOUND_Sample_Load(10, "sfx/cartexplode.wav",FSOUND_LOOP_OFF,0);
	FSOUND_Sample_Load(11, "sfx/cart-good.wav",FSOUND_LOOP_OFF,0);
	FSOUND_Sample_Load(12, "sfx/pickup.wav",FSOUND_LOOP_OFF,0);

	FSOUND_Sample_Load(13, "sfx/crusher.wav",FSOUND_LOOP_OFF, 0);

	return 0;

}
예제 #29
0
파일: core.c 프로젝트: ulricheza/Isima
void init_var(int cpu,var_game_t ** var)
{
  int i;

  /*allocation de la structure de variable*/
   *var = (var_game_t *)malloc(sizeof(var_game_t));

   if(*var == NULL)
      exit(EXIT_FAILURE);

   /*affectation des valeurs aux variables de la structure*/
   (*var)->remain_bat_hum = 5;
   (*var)->remain_bat_cpu = 5;

   /*initialisation du fichier d'erreur*/
   init_fic_erreur(*var);

   (*var)->mer_cible_hum = (int *)malloc(100*sizeof(int));
   (*var)->mer_home_hum = (int *)malloc(100*sizeof(int));

   /*correctif 1.1*/
   if( (*var)->mer_cible_hum == NULL || (*var)->mer_home_hum == NULL)
   {
      fprintf((*var)->log_erreur,"Erreur dans l'allocation des mers hum \n");
      exit_err(*var);
   }
   /*fin correctif 1.1*/

   for(i=0;i<100;i++)
   {
      (*var)->mer_cible_hum[i] = -1;
      (*var)->mer_home_hum[i] = -1;
   }

   if(cpu == 1)
   {
      (*var)->mer_home_cpu = (int *)malloc(100*sizeof(int));
      (*var)->mer_cible_cpu = (int *)malloc(100*sizeof(int));
        /*correctif 1.1*/
      if( (*var)->mer_cible_cpu == NULL || (*var)->mer_home_cpu == NULL)
      {
         fprintf((*var)->log_erreur,"Erreur dans l'allocation des mers cpu\n");
         exit_err(*var);
      }
        /*fin correctif 1.1*/
      for(i=0;i<100;i++)
      {
         (*var)->mer_cible_cpu[i] = -1;
         (*var)->mer_home_cpu[i] = -1;
      }
   }


   /*initialisation des flottes*/
   /*1er bateau*/
   (*var)->flotte_hum[0].vie = 2;
   (*var)->flotte_cpu[0].vie = 2;
   (*var)->flotte_hum[0].taille = 2;
   (*var)->flotte_cpu[0].taille = 2;

   /*2ieme bateau*/
   (*var)->flotte_hum[1].vie = 3;
   (*var)->flotte_cpu[1].vie = 3;
   (*var)->flotte_hum[1].taille = 3;
   (*var)->flotte_cpu[1].taille = 3;

   /*3ieme bateau*/
   (*var)->flotte_hum[2].vie = 3;
   (*var)->flotte_cpu[2].vie = 3;
   (*var)->flotte_hum[2].taille = 3;
   (*var)->flotte_cpu[2].taille = 3;

   /*4ieme bateau*/
   (*var)->flotte_hum[3].vie = 4;
   (*var)->flotte_cpu[3].vie = 4;
   (*var)->flotte_hum[3].taille = 4;
   (*var)->flotte_cpu[3].taille = 4;

   /*5ieme bateau*/
   (*var)->flotte_hum[4].vie = 6;
   (*var)->flotte_cpu[4].vie = 6;
   (*var)->flotte_hum[4].taille = 6;
   (*var)->flotte_cpu[4].taille = 6;

   /*init parametre son*/
   (*var)->mute = 1;
   #ifdef __WIN32__
      (*var)->tir_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\tir.mp3", 0, 0, 0);
   #else
      (*var)->tir_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/tir.mp3", 0, 0, 0);
   #endif
   if((*var)->tir_sound == NULL)
   {
      fprintf((*var)->log_erreur,"fichier musique tir non trouve\n");
      exit_err(*var);
   }
   
   #ifdef __WIN32__
      (*var)->rate_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\rate.wav", 0, 0, 0);
   #else
      (*var)->rate_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/rate.wav", 0, 0, 0);
   #endif
   if((*var)->rate_sound == NULL)
   {
      fprintf((*var)->log_erreur,"fichier musique rate non trouve\n");
      exit_err(*var);
   }
   
   #ifdef __WIN32__
      (*var)->coule_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\coule.wav", 0, 0, 0);
   #else
      (*var)->coule_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/coule.wav", 0, 0, 0);
   #endif
   if((*var)->coule_sound == NULL)
   {
      fprintf((*var)->log_erreur,"fichier musique coule non trouve\n");
      exit_err(*var);
   }
   
   #ifdef __WIN32__
      (*var)->touche_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\touche.wav", 0, 0, 0);
   #else
      (*var)->touche_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/touche.wav", 0, 0, 0);
   #endif
   if((*var)->touche_sound == NULL)
   {
      fprintf((*var)->log_erreur,"fichier musique touche non trouve\n");
      exit_err(*var);
   }
   
   #ifdef __WIN32__
      (*var)->place_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\place.wav", 0, 0, 0);
   #else
      (*var)->place_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/place.wav", 0, 0, 0);
   #endif
   if((*var)->place_sound == NULL)
   {
      fprintf((*var)->log_erreur,"fichier musique place non trouve\n");
      exit_err(*var);
   }
   
   #ifdef __WIN32__
      (*var)->gagne = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\gagne.wav", 0, 0, 0);
   #else
      (*var)->gagne = FSOUND_Sample_Load(FSOUND_FREE, "./son/gagne.wav", 0, 0, 0);
   #endif
   if((*var)->gagne == NULL)
   {
      fprintf((*var)->log_erreur,"fichier musique gagne non trouve\n");
      exit_err(*var);
   }
   
   #ifdef __WIN32__
   (*var)->perdu = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\perdu.wav", 0, 0, 0);
   #else
      (*var)->perdu = FSOUND_Sample_Load(FSOUND_FREE, "./son/perdu.wav", 0, 0, 0);
   #endif
   if((*var)->perdu == NULL)
   {
      fprintf((*var)->log_erreur,"fichier musique perdu non trouve\n");
      exit_err(*var);
   }
  
   /*fin init parametre son*/
   /*init parametres video*/
   
   /*allocation des parametres de la message_box*/
   
   #ifdef __WIN32__
      (*var)->message_img = IMG_Load(".\\dessin\\box.jpg");
   #else
      (*var)->message_img = IMG_Load("./dessin/box.jpg");
   #endif
   if((*var)->message_img == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement image box\n");
      exit_err(*var);
   }
   (*var)->box_position.x = 100;
   (*var)->box_position.y = 725;
   #ifdef __WIN32__
      (*var)->police_box = TTF_OpenFont(".\\police\\game_over.ttf",80);
   #else
      (*var)->police_box = TTF_OpenFont("./police/game_over.ttf",80);
   #endif
   if((*var)->police_box == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement police game_over\n");
      exit_err(*var);
   }
   
   /*allocation des parametres de l'affichage des scores*/
   #ifdef __WIN32__
      (*var)->score = IMG_Load(".\\dessin\\score.jpg");
   #else
      (*var)->score = IMG_Load("./dessin/score.jpg");
   #endif
   if((*var)->score == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement image score\n");
      exit_err(*var);
   }
   (*var)->score_position.x = 100;
   #ifdef __WIN32__
      (*var)->police_score = TTF_OpenFont(".\\police\\score.ttf",100);
   #else
      (*var)->police_score = TTF_OpenFont("./police/score.ttf",100);
   #endif
   if((*var)->police_score == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement police score\n");
      exit_err(*var);
   }
   
   
   /*allocation des parametre d'affiche des boutons mute/unmute*/
  
   /*mise en pause pour une version suivante
   (*var)->mute_button = IMG_Load("mute.jpg");
   if((*var)->mute_button == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement image mute\n");
      exit_err(*var);
   }
   (*var)->unmute_button = IMG_Load("unmute.jpg");
   if((*var)->unmute_button == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement image unmute\n");
      exit_err(*var);
   }
   (*var)->mute_position.x = 725;
   (*var)->mute_position.y = 25;
   fonctionnalite a develloper prochaine version*/
   
   /*allocation des affichages rate/touche/fragments_bateau des mers*/
   #ifdef __WIN32__
      (*var)->rate = IMG_Load(".\\dessin\\rate.jpg");
   #else
      (*var)->rate = IMG_Load("./dessin/rate.jpg");
   #endif
   if((*var)->rate == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement image rate\n");
      exit_err(*var);
   }
   #ifdef __WIN32__
      (*var)->touche = IMG_Load(".\\dessin\\touche.jpg");
   #else
      (*var)->touche = IMG_Load("./dessin/touche.jpg");
   #endif
   if((*var)->touche == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement image touche\n");
      exit_err(*var);
   }
   #ifdef __WIN32__
      (*var)->frag_bat = IMG_Load(".\\dessin\\fragbat.jpg");
   #else
      (*var)->frag_bat = IMG_Load("./dessin/fragbat.jpg");
   #endif
   if((*var)->frag_bat == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement image fragment bateau\n");
      exit_err(*var);
   }
   /*allocation fond d'ecran*/
   #ifdef __WIN32__
      (*var)->background = IMG_Load(".\\dessin\\background.jpg");
   #else
      (*var)->background = IMG_Load("./dessin/background.jpg");
   #endif
   if((*var)->background == NULL)
   {
      fprintf((*var)->log_erreur,"erreur chargement image background\n");
      exit_err(*var);
   }
   (*var)->position_back.x = 0;
   (*var)->position_back.y = 0;
   
}
예제 #30
0
bool CSoundManager::LoadWave(char *Filename, int Nr, bool looped)
{
	if (false == InitSuccessfull)
		return false;

	if(GameRunning == false) 
		return false;

	bool			fromrar;	
	char			*pData; 
	char			Temp[256];
	unsigned long	Size; 
	char Buffer[100];	

	fromrar = false;

	int Nummer = Nr;
	if (its_Sounds[Nummer] != NULL)
	{
		delete(its_Sounds[Nummer]);
		its_Sounds[Nummer] = NULL;
	}

	// Zuerst checken, ob sich der Sound in einem MOD-Ordner befindet
	if (CommandLineParams.RunOwnLevelList == true)
	{
		sprintf_s(Temp, "levels/%s/%s", CommandLineParams.OwnLevelList, Filename);
		if (FileExists(Temp))
			goto loadfile;
	}

	// Dann checken, ob sich das File im Standard Ordner befindet
	sprintf_s(Temp, "data/%s", Filename);
	if (FileExists(Temp))
		goto loadfile;

	// Auch nicht? Dann ist es hoffentlich im RAR file
	if (urarlib_get(&pData, &Size, Filename, RARFILENAME, convertText(RARFILEPASSWORD)) == false)
	{		
		sprintf_s(Temp, "\n-> Error loading %s from Archive !\n", Filename);
		Protokoll.WriteText(Temp, true);
		return false;
	}
	else
		fromrar = true;

loadfile:	

	its_Sounds[Nummer] = new CWave();

	// von Platte laden
	if (fromrar == false)
	{
		if (looped == false)
			its_Sounds[Nummer]->SoundData = FSOUND_Sample_Load(Nr, Temp, FSOUND_LOOP_OFF, 0, Size);
		else // mit Loop laden
			its_Sounds[Nummer]->SoundData = FSOUND_Sample_Load(Nr, Temp, FSOUND_LOOP_NORMAL, 0, Size);
	}
	// aus Rarfile laden
	else
	{
		if (looped == false)
			its_Sounds[Nummer]->SoundData = FSOUND_Sample_Load(Nr, pData, FSOUND_LOADMEMORY | FSOUND_LOOP_OFF, 0, Size);
		else // mit Loop laden
			its_Sounds[Nummer]->SoundData = FSOUND_Sample_Load(Nr, pData, FSOUND_LOADMEMORY | FSOUND_LOOP_NORMAL, 0, Size);

		free(pData);
	}

	// Temp Datei wieder löschen und Speicher freigeben
	//DeleteFile("temp.dat");
	//free(pData);

	// Und bei bedarf den loop ausschalten
	//if (looped == false)
	//	FSOUND_Sample_SetLoopMode(its_Sounds[Nummer]->SoundData, FSOUND_LOOP_OFF);

	// Fehler beim Laden ?
	//
	if (its_Sounds[Nummer]->SoundData == NULL)
	{
		// TODO FIX
/*
		strcpy_s(Buffer, "\n-> Error loading ");
		strcat_s(Buffer, Filename);
		strcat_s(Buffer, "\n");
		Protokoll.WriteText(Buffer, true);
*/

	//	return (-1);
		return false;
	}

	its_Sounds[Nummer]->isLooped = looped;

	its_LoadedSounds++;

	//its_Sounds[Nummer].Name = Filename;

	// kurz anspielen und wieder stoppen
	int Channel = FSOUND_PlaySound   (FSOUND_FREE, its_Sounds[Nr]->SoundData);
	FSOUND_SetVolume(Channel, 0);
	FSOUND_StopSound(Channel);

	// TODO FIX
/*
		strcpy_s(Buffer, TextArray [TEXT_LADE_WAVE]);
		strcat_s(Buffer, Filename);
		strcat_s(Buffer, TextArray [TEXT_LADEN_ERFOLGREICH]);
		strcat_s(Buffer, " \n");
		Protokoll.WriteText(Buffer, false);*/
	

	DisplayLoadInfo(Buffer);

	//return Nummer;
	return true;
} // LoadWave