Bonjour à tous !
Je viens présenter un court projet sur la gestion simplifiée de l'audio avec SFML.
J'ai débuté ce projet il y a déjà quelques mois puis ensuite je suis reparti de 0 car il était trop brouillon et pas si simple à utiliser, mais cette version "test" m'a forcée à réfléchir sur cette nouvelle version.
Le but du projet est donc de n'avoir presque rien à gérer pour l'audio.
Le projet propose 2 classes :
- AudioFile : Contient le nom, le nom de fichier et le type d'une ressource audio. Elle contient aussi les données que fournissent les classes Music et Sound (position, volume, pitch, etc...)
- AudioManager : Permet de créer des AudioFiles et de les gérer. Gestion des ressources audio (sf::Music et sf::Sound). Gestion des sf::SoundBuffer automatique.
Voici un exemple :
#include <AudioManager.hpp>
#include <SFML/System.hpp>
int main()
{
// Création d'un AudioManager
am::AudioManager mgr;
// Création d'un AudioFile (qui sera aussi contenu dans notre AudioManager)
// Vous pouvez choisir le type de la ressource que vous voulez utiliser
// Ne JAMAIS créer un AudioFile vous même, passez TOUJOURS par un AudioManager !
am::AudioFile::Ptr a = mgr.create(am::FileType::Music,"test.ogg","test");
// On aurait pu aussi faire :
// am::AudioFile::Ptr a = mgr.createMusic("test.ogg","test");
// Maintenant on veut jouer une musique (Les 3 lignes suivantes font la même chose) :
mgr.play("test"); // Grâce au nom d'un AudioFile
mgr.play(a); // Grâce à un pointeur vers notre AudioFile
a->play(); // Directement avec notre pointeur (/!\ Votre pointeur provient bien de Manager::create /!\)
sf::Clock clock;
while(clock.getElapsedTime() < sf::seconds(2))
{
// Mise à jour de l'AudioManager, qui va supprimer les ressources inutiles (stoppées)
mgr.update();
}
return EXIT_SUCCESS;
}
Liste des prochaines améliorations :
- Gestion de Playlist
- Gestion de SoundGroup
- ...
Voilà, donnez vos avis et vos idées