RaydiumWikiNi

TutorielUtiliserLeSon

PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes ec2-3-145-56-150.us-east-2.compute.amazonaws.com
Ceci est une version archivée de TutorielUtiliserLeSon à 2005-02-21 23:22:19.

Tutoriel Raydium: Utiliser le son dans raydium


Ref: RaydiumTutoriels

NB: Ce tutoriel devrait présenter un exemple (qq1 ?). NB2: il faudrait aussi parler de l'interaction physique/son (autre tuto ? chapitre supplémentaire ?)

Mise en place:



Quelques bases


La partie son de raydium utilise l'API OpenAL, dans cette API, on distingue deux objets importants: le spectateur (listener) ainsi qu'une ou de multiples sources sonores, nous travaillerons donc principalement sur les sources dans un premier temps.

Initialisations


Les initialisations des variables internes de la partie son de Raydium sont faites automatiquement. Pour pouvoir commencer à utiliser le son, il vous suffit de placer des instructions relatives à celui-ci juste après avoir utilisé la fonction raydium_window_create

Commençons avec le plus simple, jouer de la musique !

Pour utiliser cette fonction il vous suffit de connaître l'emplacement d'un fichier ogg et d'utiliser la fonction suivante: raydium_sound_load_music

Elle s'utilise comme suit:

raydium_sound_load_music("fichier.ogg");

Elle lance donc directement la lecture de ce fichier musical en boucle jusqu'à la sortie de l'application. (pour le moment, il n'existe pas encore dans raydium de fonction pour l'arrêter ou changer la musique utilisée (implémentation quand j'en aurai pris le temps :) )

L'avancement dans le fichier, la correction des sauts dans le son et le relancement de la lecture quand les conditions sont trop mauvaises (plus assez de temps processeur disponible par exemple) sont réalisés directement par Raydium.
Plus intéressant, la gestion des sons proprement dite:

Comme expliqué un peu plus haut, OpenAL et donc raydium travaillent avec des sources. Ces sources sont ici accessibles au travers d'un numéro d'index de type int.

exemple:

int moteur=raydium_sound_LoadWav("moteur.wav");


On charge donc dans Raydium le son de type wave nommé moteur et on retrouve dans moteur son index pour pouvoir modifier ses propriétés.

Par défaut, Raydium considère qu'un son doit être joué en boucle, ce qui est bien ce que nous recherchons ici pour notre moteur.

Toutefois, si l'on désire un simple son qui ne doit pas boucler, comme un klaxon par exemple, on lui changera son attribut de bouclage en utilisant la fonction suivante:

raydium_sound_SetSourceLoop(klaxon,0);

(en supposant que klaxon est un index de source attribué à un son déjà chargé)

Revenons donc à notre moteur, le son est bien chargé en mémoire et attribué à une source, seulement il n'est pas encore en lecture, ce que nous allons lancer comme suit:

raydium_sound_SourcePlay(moteur);

Notre moteur est maintenant en marche et ne s'arrêtera que si on lui demande: raydium_sound_SourceStop(moteur);

ou bien si l'on quitte l'application.

Nous pouvons maintenant simuler une accélération de ce moteur en changeant le pitch du son: raydium_sound_SetSourcePitch(moteur,1.5);

(les valeurs acceptables pour le pitch se situent entre 0.1 et 2 et sont de toute manière bridées par Raydium pour éviter tout problème)

Si l'on souhaite tout simplement lire la valeur du pitch d'une source donnée, on utilisera cela:

ALfloat pitch_lu;
raydium_sound_GetSourcePitch(moteur, &pitch_lu);

Si l'on souhaite maintenant augmenter ou diminuer la force du son, voici ce que l'on doit faire:

raydium_sound_SetSourceGain(moteur, 1.5);

(les gains inférieurs à 0 sont interdits et automatiquement attrappés par Raydium pour être rendus valides)

Une fois de plus, si l'on désire simplement lire cette valeur, on l'obtient grâce à:
ALfloat gain_lu;
raydium_sound_GetSourceGain(moteur, &gain_lu);


la suite plus tard .... (déplacement du son dans l'espace, etc......) ;)