[http://fr.wikipedia.org/wiki/FMOD FMOD] est une libraire commerciale non distribuée par Debian. Elle permet de géréer les sons et la musique dans le développement d'un projet C/C++.
- Ici nous traitons de la manière de l'installer sur notre système préféré.
?TableOfContents(2)
FMOD version 3
Récupération de la librairie de développement
Aller sur le site officel http://www.fmod.org
Aller dans la section Download et télécharger la version FMOD 3 Programmers API pour Linux
Vous devriez télécharger un fichier nommé fmodapi375linux.tar.gz (ou similaire)
Décompresser cette archives dans votre répertoire personnel ~/
Installation de la Librairie dans le système
Ce qu'il faut installer
- ~/fmodapi375linux/fmodapi375linux/api/libfmod-3.75.so
- ~/fmodapi375linux/fmodapi375linux/api/inc/*.h
libfmod-3.75.so : C'est la librairie en tant que telle. inc/*.h : Les fichiers d'entête permettant à votre compilateur de connaitre les prototype des fonctions de FMOD.
La librairie
En principe, vos librairies maintenues par les dépôts Debian sont installés dans /usr/lib. Nous sommes dans un cas particulier car nous installons une librairie non maintenue. L'installation s'effectue dans /usr/local/lib.
sudo cp ~/fmodapi375linux/api/libfmod-3.75.so /usr/local/lib/
Les entêtes
Même problématique. Les entêtes sont à installer dans /usr/local/include au lien de /usr/include.
sudo cp ~/fmodapi375linux/api/include/*.h /usr/local/include/
Compilation
gcc
En ligne de commande, ajouter la librairie FMOD:
gcc [OPTIONS] /usr/local/lib/libfmod-3.75.so -o [EXE]
Exemple:
gcc -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/local/include -L/usr/lib -lSDL -lSDL_image -L/usr/local/lib -lfmod-3.75 libtest.c -o libtest
KDevelop
- Ouvrir votre projet C++
Aller dans {{{Projet > Options du projet > Options de "configure" > C++ > Drapeaux du compilateur (CXXFLAGS)
- Ajouter l'argument suivant aux arguments déjà présent:
/usr/local/lib/libfmod-3.75.so
Test
A rédiger ...
#include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #include <fmod.h> int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL, *viseur = NULL; SDL_Event event; SDL_Rect position; int continuer = 1; FSOUND_SAMPLE *tir = NULL; int test1 = 0; FSOUND_SetOutput(FSOUND_OUTPUT_ALSA); /* Initialisation de FMOD */ test1 = FSOUND_Init(44100, 32, 0); if (test1) { fprintf(stderr, "FSOUND initialisé\n"); } else { fprintf(stderr, "FSOUND par en sucette?\n"); } /* Chargement du son et vérification du chargement */ tir = FSOUND_Sample_Load(FSOUND_FREE, "pan.wav", 0, 0, 0); if (tir == NULL) { fprintf(stderr, "Impossible de lire pan.wav\n"); //exit(EXIT_FAILURE); } /* 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 */ FSOUND_PlaySound(FSOUND_FREE, tir); 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; } 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 FMOD */ FSOUND_Sample_Free(tir); FSOUND_Close(); return EXIT_SUCCESS;
Dépannage
http://www.siteduzero.com/forum-83-356196-3310992-impossible-de-trouver-le-fichier-son.html#r3310992
Liens externes
http://www.fmod.org - Site officiel
http://www.siteduzero.com/tutoriel-3-14156-jouer-du-son-avec-fmod.html - Apprendre facilement à utiliser FMODv3
http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALHIERARCHY - Pourquoi le choix de /usr/local/