AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-28%
Le deal à ne pas rater :
Brandt LVE127J – Lave-vaisselle encastrable 12 couverts – L60cm
279.99 € 390.99 €
Voir le deal

 

 Créer un niveaux à partir d'un .mp3

Aller en bas 
2 participants
AuteurMessage
Mobi
Utilisateur confirmé: Rang ****
Mobi


Messages : 1256
Localisation : Dijon

Créer un niveaux à partir d'un .mp3 Empty
MessageSujet: Créer un niveaux à partir d'un .mp3   Créer un niveaux à partir d'un .mp3 EmptyMer 22 Aoû 2012 - 19:19

Bonsoir,
j'ai récemment fait l’acquisition de Symphony un Shoot'em up pas comme les autres. En effet, les niveaux sont créé en fonction de la musique.

Pour ceux qui n’ont rien comprit :

"Avant d'aborder l'aspect technique du jeu, parlons de son gameplay assez singulier et du procédé qui permet une telle expérience de jeu. Dans Symphony, comme je l'ai déjà dit, la musique est plus qu'importante, puisqu'elle est le noyau du jeu. Tout s'organise autour de la musique. En effet, Symphony consiste en un Shoot'em up dans lequel vos ennemis seront générés à partir du rythme et de l'intensité de la musique choisie. Plus le rythme s'emballe, plus les ennemis seront nombreux, et les moments les plus intenses de la chanson choisie laisseront apparaître des ennemis plus puissants et plus résistants. Cela est permis par un outil qui analyse la chanson choisie, que ce soit parmi celles proposées par le jeu ou parmi votre bibliothèque personnelle, puisque le jeu supporte toute une flopée de formats audio : MP3, M4A & AAC, OGG, WAV, FLAC, WMA, AIFF, WV, APE."



Donc je me demandais si il existe une dll ou une extension sur game maker pour créer ce genre de jeux !!!

Si vous avez des nouvelles ou des infos, faite moi signe !!!

_________________
Créer un niveaux à partir d'un .mp3 Penguin
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
[TheDarkTiger]


Messages : 7420
Localisation : Essonne

Créer un niveaux à partir d'un .mp3 Empty
MessageSujet: Re: Créer un niveaux à partir d'un .mp3   Créer un niveaux à partir d'un .mp3 EmptyMer 22 Aoû 2012 - 20:45

Je peux t'aider un peu sur la méthode a la dure.
Mais je ne le ferais qu'a partir d'un WAV, à toi d'adapter à un MP3.

Dans un premier temps, il te faut charger le fichier et en extraire le son.
Ensuite, il faut retrouver le rythme et le quantifier.
Enfin, il faut éventuellement prendre en compte d'autres bandes de fréquence pour différents ennemis, items, etc.

1:
Pour un fichier WAV PCM, l'en-tête est relativement simple, puis pour le son en lui même c'est un peu plus le bordel, mais ça reste abordable.
Exemple pour un fichier mono 8bits :
canal mono octet échantillon 1,
canal mono octet échantillon 2,
canal mono octet échantillon 3,
canal mono octet échantillon 4,
etc.


Exemple pour un fichier stéréo 16bits :
canal gauche octet poids faible échantillon 1,
canal gauche octet poids fort échantillon 1,
canal droit octet poids faible échantillon 1,
canal droit octet poids fort échantillon 1,
canal gauche octet poids faible échantillon 2,
canal gauche octet poids fort échantillon 2,
canal droit octet poids faible échantillon 2,
canal droit octet poids fort échantillon 2,
etc.


(Plus d'infos ici => http://fr.wikipedia.org/wiki/WAVEform_audio_format)

Bref, problème 1 résolu sous GM pour le WAV PCM.

2:
Le rythme, c'est la répétition d'un son. Généralement, ce sont les basses fréquences.
Il faudrait, en théorie, un système plus complexe, mais celui là devrait fonctionner sur quelques musiques (faut faire des tests).
Il faut virer les hautes fréquences (les aigües) pour n'avoir que les basses fréquences (le rythme) et donc savoir quand créer des ennemis ou modifier tel ou tel truc.

Pour faire un filtre passe bas, plein de solutions existent. Mais le plus simple, c'est une moyenne.
Explication vite fait, si on prends ces valeurs représentant le volume de la musique :

444444888888444444

Et qu'on fait une moyenne entre un terme et le suivant, on obtient :

44444688888644444

Premier truc qui saute aux yeux, on à perdu une valeur.
Deuxième chose, y a pas grand chose qui à changé. Prenons maintenant :

626264979798626264

On obtient :

44445788887744444

Il est déjà plus flagrant que ça change quelque chose.

Donc, en faisant un filtrage plus 'fort' (plus de termes) on verra plus les basses fréquences, et donc, le rythme que l'on essaye de trouver.

en gros, on se retrouve avec un truc du genre :

Code:
for(i=0; i<taille_musique-1; i+=1)
{
  Rythme[i] = (Musique[i] + Musique[i+1]) / 2;
}

3:
Je dois aller manger, je reviens tout à l'heure, mais un un mot, filtre passe haut, ou mieux, FFT.
EDIt : suite.

Donc, pour d'autres évènements (bonus, obstacles, ou que sais-je), il serait préférable de pouvoir se baser aussi sur les aigües ou autres fréquences.
Pour la dynamique, le filtre est simple, c'est la valeur absolue de la valeur actuelle moins la suivante.

Explication vite fait, si on prends ces valeurs :

444444888888444444

Et qu'on applique le filtre, on obtient :

00000400000400000

On voit clairement le changement de volume.
Prenons maintenant :

626264979798626264

On obtient :

44442522221244442

On voit que le changement est fort au début puis plus faible, puis de nouveau fort.

En gros, c'est du type :
Code:
for(i=0; i<taille_musique-1; i+=1)
{
  Rythme[i] = abs(Musique[i] - Musique[i+1]);
}


Pour aller plus loin, il faudra analyser plus finement la musique, mais je doute que tu puisse faire ça rapidement sous GM.
Il te faudrait notamment effectuer une analyse fréquentielle (FFT) de ta musique pour déterminer de façon plus fiable les changements dans la musique, les rythmes (qui ne sont pas forcément des basses) et les passages clefs (changement radical de spectre audio, fréquences de la voix présentes/absentes, etc.).
A un niveau plus abordable, tu pourrait remplacer le filtre passe bas (du 2) par un filtre plus sélectif, ne demandant pas beaucoup plus de calcul mais était bien plus performant.

Je te laisse te renseigner, et je te souhaite bon courage pour mettre tout cela en application !


_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
Créer un niveaux à partir d'un .mp3 U3dfr2Créer un niveaux à partir d'un .mp3 Sign l'antique
Bienvenue au 2630eme utilisateur : Mike Kennedy !
Revenir en haut Aller en bas
http://www.tdms.fr
Mobi
Utilisateur confirmé: Rang ****
Mobi


Messages : 1256
Localisation : Dijon

Créer un niveaux à partir d'un .mp3 Empty
MessageSujet: Re: Créer un niveaux à partir d'un .mp3   Créer un niveaux à partir d'un .mp3 EmptyJeu 23 Aoû 2012 - 11:00

Merci, d'avoir pris ton temps pour m'expliquer, j'ai tous compris Yum!
Maintenant il me reste plus qu'à l'appliquer sous GM, et là je pense que je vais avoir besoin de votre aide !!!!

De plus, je ne sais pas quels mots clé utiliser pour faire mes recherches sur le net : audio game ?

EDIT : J'ai la perle rare : http://sandbox.yoyogames.com/games/230-resonance

_________________
Créer un niveaux à partir d'un .mp3 Penguin
Revenir en haut Aller en bas
Contenu sponsorisé





Créer un niveaux à partir d'un .mp3 Empty
MessageSujet: Re: Créer un niveaux à partir d'un .mp3   Créer un niveaux à partir d'un .mp3 Empty

Revenir en haut Aller en bas
 
Créer un niveaux à partir d'un .mp3
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» créer un sprite à partir d'un autre sprite
» bug du lecteur de niveaux
» Un éditeur de niveaux
» Génération procédurale et niveaux aléatoires
» [c++] Icemaze (4 èmes version, skin, niveaux,...)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: