[Musique] Une solution pour la musique adaptative - suite

5e et dernier billet sur la musique adaptative, la solution donnée est décrite plus en détails.

Une solution, suite.

Le plus important, pour moi, est que le musicien connaisse précisément le scénario du jeu et l'étudie. Dans beaucoup de jeux amateurs, le musicien a juste une liste de musiques à faire, et elles sont souvent faites indépendamment du jeu (il a une vague description de ce qu'il doit faire). A contrario, dans les films, la musique à être faite en accord avec le reste. La musique est adaptée à l'image, et l'image s'adapte aussi à la musique (par exemple, faire durer la scène une seconde de plus pour que ça tombe bien).

Je pense qu'il est préférable que la musique soit réfléchie une fois que le scénario détaillé est prêt. Il convient ensuite de lister les musiques à faire et de créer un graphe sur papier. Sur le graphe, chaque nœud représente une musique, chaque arc indique qu'une transition sera nécessaire. Il peut être intéressant de pondérer les arcs avec l'importance de la transition (qui est liée avec la probabilité de son apparition). Cela permet de se concentrer en priorité sur les passages essentiels. Sur le graphe, il faut aussi noter si la transition doit être subtile (une simple évolution de la musique) ou si elle marque un changement (deux musiques différentes).

Lorsque l'on fait une simple évolution, il est préférable que les aspects de la musique soient composés en parallèle. Les deux musiques devraient avoir la même mesure et durer le même temps. Ainsi, lors d'une transition, on peut jouer la musique B à la position précise où s'est arrêtée A. Cela permet de garder la continuité de la musique, en particulier si la mélodie est la même.

Lorsque l'on fait un changement de musique, il est plus simple de commencer la musique B au début et marquer la transition (par exemple, avec une cymbale). Pour plus de variété, il peut être intéressant de noter plusieurs points de commencement possibles. Par exemple, au lieu de jouer B du début, on peut jouer B à partir d'une position t décidée à l'avance. Cela permet, si le joueur fait des allers-retours entre deux zones, de briser la monotonie et de ne pas toujours jouer les mêmes passages (le début de la musique).

De même, si les joueur est susceptible d'alterner entre deux zones, il est judicieux de prévoir plusieurs transitions possibles. Le moteur de son en choisit alors une au hasard. Cela casse une certaine linéarité et une prédictibilité. Cela génère bien entendu un surplus de travail. Il est donc important de bien concevoir le graphe, de noter les relations entre les musiques pour travailler en détail les parties qui méritent l'attention. De même, puisque le graphe peut potentiellement être complexe, je conseille d'implémenter une transition par défaut (de type fondu). Cette transition sera jouée quand aucune autre n'a été faite.



Conclusion

La solution présentée est donc un bon compromis entre la playlist classique et le format tracker. Elle permet d'avoir une très bonne qualité de son, un faible coût en CPU, et permet des transitions agréables. Cependant, il faut garder à l'esprit que cela demande beaucoup plus d'efforts pour le musicien. Chaque transition devra être travaillée individuellement. Cela pose aussi des restrictions sur les musiques, qui ne pourront pas être aussi complexes que le musicien pourrait le souhaiter. Il est donc important de réfléchir et de décider à quels endroits une transition fluide est nécessaire, et à quels endroits une discontinuité dans la musique peut convenir.