void SoundManager::playSound(const std::string &sound, bool loop) { if (loop) { FMOD_Sound_SetLoopCount(this->_sounds[sound], -1); FMOD_System_PlaySound(this->_system, FMOD_CHANNEL_FREE, this->_sounds[sound], 0, 0); } else { FMOD_Sound_SetLoopCount(this->_sounds[sound], 0); FMOD_System_PlaySound(this->_system, FMOD_CHANNEL_FREE, this->_sounds[sound], 0, 0); } }
void fmode(void) { FMOD_SYSTEM *system; FMOD_SOUND *musique; FMOD_CHANNEL *channel; FMOD_RESULT resultat; char *str; str = "./graphic/Martin Garrix - Animals.mp3"; FMOD_System_Create(&system); FMOD_System_Init(system, 2, FMOD_INIT_NORMAL, NULL); resultat = FMOD_System_CreateSound(system, str, FMOD_SOFTWARE | FMOD_2D | FMOD_CREATESTREAM, 0, &musique); if (resultat != FMOD_OK) { my_printf(2, "Cannot find "); my_printf(2, "%s", str); my_printf(2, ", put this file next to the executable 'corewar'"); write(2, "\n", 1); } else { FMOD_Sound_SetLoopCount(musique, -1); FMOD_System_GetChannel(system, 9, &channel); FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, musique, 0, NULL); } }
Sgame CreateGame(int id_map) { Sgame game; /* Creation du hero */ Shero Heros = CreateHero(POSITION_DEPART_HEROS_X, POSITION_DEPART_HEROS_Y,id_map,"sasha",PARQUET,DIRECTION_DEPART_HEROS); game.hero= Heros; /* Demarrage du son */ FMOD_SYSTEM *system; FMOD_SOUND *son; FMOD_System_Create(&system); FMOD_System_Init(system, 7, FMOD_INIT_NORMAL, NULL); FMOD_System_CreateSound(system, "data/music/Menutheme.mp3", FMOD_2D | FMOD_CREATESTREAM | FMOD_LOOP_NORMAL, 0, &son); FMOD_Sound_SetLoopCount(son, -1); FMOD_System_PlaySound(system, son, NULL, 0, NULL); game.pokedex[9]=game.hero.pokemon[0]; game.pokedex[9].vu=1; game.son = son; game.system = system; game.scenario=0; /* Ajout des personnages non jouables du jeu */ addNpc(&game); return game; }
void Audio::jouerSon(audio_t son, bool boucle) throw(Audio::Exc_Son) { if(boucle) FMOD_Sound_SetLoopCount(son, -1); else FMOD_Sound_SetLoopCount(son, 0); FMOD_CHANNEL *c = 0; resultat = FMOD_System_PlaySound(_systeme, FMOD_CHANNEL_FREE, son, false, &c); erreur(resultat, 7); int nb; FMOD_Channel_GetIndex(c, &nb); _canaux[nb] = c; FMOD_Channel_SetCallback(c, &sonStoppe); FMOD_Channel_SetVolume(c, Parametres::volumeEffets()); }
void Game::playMusic(FMOD_SOUND *music) { if(config.m[MUSIC] == true) { FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, music, 0, &musicChannel); FMOD_Sound_SetLoopCount(music, -1); } }
Audio::audio_t Audio::chargerMusique(std::string const &chemin) throw(Audio::Exc_Son) { audio_t son = 0; resultat = FMOD_System_CreateSound(_systeme, chemin.c_str(), FMOD_SOFTWARE | FMOD_2D | FMOD_CREATESTREAM | FMOD_LOOP_NORMAL, 0, &son); erreur(resultat, 5); FMOD_Sound_SetLoopCount(son, -1); return son; }
void Systems::SoundSystem::PlaySound(FMOD_CHANNEL** channel, FMOD_SOUND* sound, float volume, bool loop) { FMOD_System_PlaySound(m_System, FMOD_CHANNEL_FREE, sound, false, channel); FMOD_Channel_SetVolume(*channel, volume); if(loop) { FMOD_Channel_SetMode(*channel, FMOD_LOOP_NORMAL); FMOD_Sound_SetLoopCount(sound, -1); } }
void se(char *path, t_music *m) { FMOD_System_Create(&m->system); FMOD_System_Init(m->system, 1, FMOD_INIT_NORMAL, NULL); if ((m->result = FMOD_System_CreateSound(m->system, path, FMOD_SOFTWARE | FMOD_2D | FMOD_CREATESTREAM | FMOD_LOOP_NORMAL, 0, &m->music)) != FMOD_OK) show_error(3); FMOD_Sound_SetLoopCount(m->music, 0); FMOD_System_PlaySound(m->system, FMOD_CHANNEL_FREE, m->music, 0, NULL); }
void Audio::playBGM(const QString &filename) { FMOD_RESULT result = FMOD_System_CreateStream(System, filename.toLocal8Bit(), FMOD_LOOP_NORMAL, NULL, &BGM); if (result == FMOD_OK) { FMOD_Sound_SetLoopCount(BGM, -1); FMOD_System_PlaySound(System, FMOD_CHANNEL_FREE, BGM, false, &BGMChannel); FMOD_Channel_SetVolume(BGMChannel, Config.BGMVolume); FMOD_System_Update(System); } }
bool Systems::SoundSystem::PlayBGM(const Events::PlayBGM &event) { FMOD_RESULT result; result = FMOD_Channel_Stop(m_BGMChannel); if(result != FMOD_OK) LOG_INFO("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result)); Sound* sound = ResourceManager->Load<Sound>("Sound2D", event.Resource); result = FMOD_System_PlaySound(m_System, FMOD_CHANNEL_FREE, *sound, false, &m_BGMChannel); if(result != FMOD_OK) LOG_INFO("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result)); FMOD_Channel_SetMode(m_BGMChannel, FMOD_LOOP_NORMAL); FMOD_Sound_SetLoopCount(*sound, -1); return true; }
void changeSound(Sgame *g,int new_song){ /* Fermeture du son actuel */ FMOD_System_Close( g->system ); FMOD_System_Release( g->system ); FMOD_SYSTEM *system; FMOD_SOUND *son; FMOD_System_Create(&system); FMOD_System_Init(system, 7, FMOD_INIT_NORMAL, NULL); /*on selection un nouveau son*/ switch(new_song) { case 1: FMOD_System_CreateSound(system, "data/music/route .mp3",FMOD_2D | FMOD_CREATESTREAM | FMOD_LOOP_NORMAL, 0, &son); break; case 2: FMOD_System_CreateSound(system, "data/music/Town.mp3", FMOD_2D | FMOD_CREATESTREAM | FMOD_LOOP_NORMAL, 0, &son); break; case 3: FMOD_System_CreateSound(system, "data/music/Pokemon_Center.mp3", FMOD_2D | FMOD_CREATESTREAM | FMOD_LOOP_NORMAL, 0, &son); break; case 4 : FMOD_System_CreateSound(system, "data/music/combat.mp3", FMOD_2D | FMOD_CREATESTREAM | FMOD_LOOP_NORMAL, 0, &son); break; case 5: FMOD_System_CreateSound(system, "data/music/Gym.mp3", FMOD_2D | FMOD_CREATESTREAM | FMOD_LOOP_NORMAL, 0, &son); break; } FMOD_Sound_SetLoopCount(son, -1);/*on joue le son en boucle*/ FMOD_System_PlaySound(system, son, NULL , 0, NULL); g->son = son; g->system = system; }
int main(int argc, const char *argv[]){ SDL_Surface *ecran = NULL, *viseur = NULL; SDL_Event event; SDL_Rect position; int continuer = 1; FMOD_SYSTEM *system; FMOD_SOUND *tir; FMOD_SOUND *musique; FMOD_CHANNEL *musicChannel, *effectChannel; FMOD_CHANNELGROUP *musicChannelGroup, *effectChannelGroup; FMOD_RESULT resultat; FMOD_RESULT resultatMusic; /* Création et initialisation d'un objet système */ FMOD_System_Create(&system); FMOD_System_Init(system, 2, FMOD_INIT_NORMAL, NULL); FMOD_System_CreateChannelGroup(system, "music", &musicChannelGroup); FMOD_System_CreateChannelGroup(system, "effect", &effectChannelGroup); /* Chargement du son et vérification du chargement */ resultat = FMOD_System_CreateSound(system, "pan.wav", FMOD_CREATESAMPLE, 0, &tir); resultatMusic = FMOD_System_CreateSound(system, "hype_home.mp3", FMOD_2D | FMOD_CREATESTREAM, 0, &musique); if (resultat != FMOD_OK) { fprintf(stderr, "Impossible de lire pan.wav\n"); exit(EXIT_FAILURE); } FMOD_Sound_SetLoopCount(musique, -1); FMOD_System_PlaySound(system, musique, musicChannelGroup, 0, &musicChannel); /* Initialisation de la SDL */ SDL_Init(SDL_INIT_VIDEO); SDL_ShowCursor(SDL_DISABLE); ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); SDL_WM_SetCaption("Gestion du son avec FMOD", NULL); viseur = IMG_Load("viseur.png"); while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; break; case SDL_MOUSEBUTTONDOWN: /* Lorqu'on clique, on joue le son */ FMOD_System_PlaySound(system, tir, effectChannelGroup, 0, &effectChannel); break; case SDL_MOUSEMOTION: /* Lorsqu'on déplace la souris, on place le centre du viseur à la position de la souris ... D'où notamment le "viseur->w / 2" pour réussir à faire cela */ position.x = event.motion.x - (viseur->w / 2); position.y = event.motion.y - (viseur->h / 2); break; case SDL_KEYDOWN: if (event.key.keysym.sym == SDLK_p) //Si on appuie sur P { FMOD_CHANNELGROUP *canal; FMOD_BOOL etat; FMOD_System_GetMasterChannelGroup(system, &canal); FMOD_ChannelGroup_GetPaused(canal, &etat); if (etat) // Si la chanson est en pause FMOD_ChannelGroup_SetPaused(canal, 0); // On enlève la pause else // Sinon, elle est en cours de lecture FMOD_ChannelGroup_SetPaused(canal, 1); // On active la pause } break; } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); SDL_BlitSurface(viseur, NULL, ecran, &position); SDL_Flip(ecran); } /* On ferme la SDL */ SDL_FreeSurface(viseur); SDL_Quit(); /* On libère le son et on ferme et libère l'objet système */ FMOD_Sound_Release(tir); FMOD_System_Close(system); FMOD_System_Release(system); return EXIT_SUCCESS; }
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; }
int LancerJeu(gpointer *pData) { /* Cette fonction va appeler les fonctions d'initialisations de la SDL et lancer le jeu ou l'éditeur */ SDL_Renderer *pMoteurRendu = NULL; //Pointeurs sur le moteur de rendu SDL_Window *pFenetre = NULL; //Pointeur sur la fenêtre FMOD_CHANNEL *channelEnCours = NULL; //Pour le contrôle des différents canaux audios Sprite images[50] = {{NULL}, {0,0}}; //Tableau des images (textures + positions) TTF_Font *polices[10] = {NULL}; //Tableau des polices Options *pOptions = NULL; //Pointeur sur une structure Options FILE *pFichierErreur = fopen("ressources/ErreursLog.txt", "a"); //Pointeur sur le fichier d'erreurs SDL_Surface *surf = NULL; //Pointeur sur une surface SDL_Texture *pEcranChargement = NULL; //Pointeur sur une texture pour l'écran de chargement Animation anim[10]; //Tableau de structures Animation int erreur=0; //Code d'erreur Joueur *pJoueur = (Joueur *)g_slist_nth_data((GSList*)pData, 6); //On récupère le pointeur vers la structure Joueur dans la liste chaînée Sons *pSons = (Sons*)g_slist_nth_data((GSList*)pData, 4); //De même avec celui vers la structure Sons FMOD_SYSTEM *pMoteurSon = (FMOD_SYSTEM *)g_slist_nth_data((GSList*)pData, 3); //De même avec celui vers la structure FMOD_SYSTEM if(pFichierErreur == NULL) //Vérification { exit(EXIT_FAILURE); } /* On lit les options et on remplit la structure */ pOptions = DefinirOptions(); Initialisation(&pMoteurRendu, pFichierErreur, &pFenetre, pOptions); //Initialisation des principaux éléments (SDL, fenêtre, moteur de rendu) FMOD_System_GetChannel(pMoteurSon, M_MENU, &channelEnCours); //On met en pause la musique du menu FMOD_Channel_SetPaused(channelEnCours, true); if(BMusique) //S'il y a de la musique { FMOD_System_PlaySound(pMoteurSon, M_LOAD, pSons->music[M_LOAD], true, NULL); // On lit la musique de chargement FMOD_System_GetChannel(pMoteurSon, M_LOAD, &channelEnCours); FMOD_Channel_SetVolume(channelEnCours, (float)(Volume/100.0)); FMOD_Channel_SetPaused(channelEnCours, false); } /* On charge l'image de chargement et on vérifie */ surf = IMG_Load("ressources/img/load.png"); if (surf == NULL) { fprintf(pFichierErreur, "Erreur: impossible d'ouvrir le fichier ressources/img/load.png"); exit(EXIT_FAILURE); } /* On transforme la surface en texture pour l'affichage et on libère la mémoire occupée par la surface */ pEcranChargement = SDL_CreateTextureFromSurface(pMoteurRendu, surf); SDL_FreeSurface(surf); SDL_ShowCursor(false); //On masque le curseur pendant le jeu (on affichera un curseur personnalisé dans l'éditeur) /* On efface l'écran et on colle l'image de chargement */ SDL_SetRenderDrawColor(pMoteurRendu, 0, 0, 0, SDL_ALPHA_OPAQUE); SDL_RenderClear(pMoteurRendu); SDL_RenderCopy(pMoteurRendu, pEcranChargement, NULL, NULL); SDL_RenderPresent(pMoteurRendu); SDL_EventState(SDL_TEXTEDITING, SDL_DISABLE); //Désactivation des événements dont on a pas besoin. SDL_EventState(SDL_TEXTINPUT, SDL_DISABLE); SDL_DisableScreenSaver(); //Désactivation de l'écran de veille. erreur = Chargements(images, pMoteurRendu, polices, anim); //On charge tout ! /* Traitement des éventuelles erreurs */ if(erreur == 1) { fprintf(pFichierErreur, "Erreur lors du chargement des images. Veuillez vérifier ressources\\img\\... \n"); exit(EXIT_FAILURE); } else if (erreur == 2) { fprintf(pFichierErreur, "Erreur lors du chargement des polices. Veuillez vérifier ressources\\fonts\\... \n"); exit(EXIT_FAILURE); } else if (erreur == 3) { fprintf(pFichierErreur, "Erreur lors du chargement des animations. Veuillez vérifier ressources\\anim\\... \n"); exit(EXIT_FAILURE); } if (BMusique) { FMOD_System_GetChannel(pMoteurSon, M_LOAD, &channelEnCours); //On arrête la musique du chargement FMOD_Channel_SetPaused(channelEnCours, true); FMOD_Sound_SetLoopCount(pSons->music[M_JEU], -1); // On active la lecture en boucle FMOD_System_PlaySound(pMoteurSon, M_JEU, pSons->music[M_JEU], true, NULL); // On lit la musique du jeu FMOD_System_GetChannel(pMoteurSon, M_JEU, &channelEnCours); FMOD_Channel_SetVolume(channelEnCours, (float)(Volume/100.0)); FMOD_Channel_SetPaused(channelEnCours, false); } /* On regarde si on a appelé la fonction en mode jeu ou en mode éditeur */ if (pJoueur->mode == MODE_CAMPAGNE) { InitialiserInfos(pOptions, pJoueur); //On définit les infos sur la partie en cours erreur = BouclePrincipale(pJoueur, images, anim, pMoteurRendu, pMoteurSon, pSons, polices); //Boucle du jeu if(erreur == JEU_FIN_ERREUR_CHARGEMENT) { MessageInformations("Erreur lors du chargement d'un niveau, consultez le fichier erreurs.txt", polices, pMoteurRendu, NULL); } SauverMySql(pJoueur); //On sauvegarde l'avancée du joueur } else if(pJoueur->mode == MODE_PERSO) { InitialiserInfos(pOptions, pJoueur); //On définit les infos sur la partie en cours erreur = BouclePrincipale(pJoueur, images, anim, pMoteurRendu, pMoteurSon, pSons, polices); //Boucle du jeu if(erreur == JEU_FIN_ERREUR_CHARGEMENT) { MessageInformations("Erreur lors du chargement d'un niveau, consultez le fichier erreurs.txt", polices, pMoteurRendu, NULL); } } else if (pJoueur->mode == MODE_EDITEUR) { erreur = Editeur(pMoteurRendu, images, pMoteurSon, pSons, polices, pJoueur); //On lance la boucle de l'éditeur if(erreur == JEU_FIN_ERREUR_CHARGEMENT) { MessageInformations("Erreur lors du chargement d'un niveau, consultez le fichier erreurs.txt", polices, pMoteurRendu, NULL); } } /* Libération de la mémoire */ LibererMemoire(pMoteurRendu, images, anim, polices, pFenetre, pOptions); fclose(pFichierErreur); //On ferme le fichier d'erreur return 0; }