89 votes

Techniques de génération de musique procédurale

J'ai mis beaucoup de pensée dans la procédure de génération de contenu depuis un moment et je n'ai jamais vu beaucoup d'expérimentation avec de procédure de la musique. Nous avons fantastique techniques pour générer des modèles, les animations, les textures, mais la musique est toujours soit complètement statique ou simplement couches de boucles (par exemple, des Spores).

À cause de cela, j'ai pensé optimal de la musique à des techniques de production, et je suis curieux de savoir ce que les autres ont à l'esprit. Même si vous ne l'avez pas déjà jugé, qu'en pensez-vous va bien travailler? Une technique par réponse s'il vous plaît, et de citer des exemples où c'est possible. La technique peut utiliser les données existantes ou de générer de la musique à partir de rien, peut-être sur une sorte d'entrée (de l'humeur, de la vitesse, peu importe).

42voto

Richard Poole Points 2410

La plus réussie du système sera probablement combiner plusieurs techniques. Je doute que vous en trouverez une technique qui fonctionne bien pour la mélodie, l'harmonie, le rythme et la basse génération de séquences dans tous les genres de musique.

Chaînes de Markov, par exemple, sont bien adaptés pour mélodique et harmonique de la génération de séquences. Cette méthode nécessite l'analyse de morceaux existants, de construire la chaîne d'probabilités de transition. La vraie beauté des chaînes de Markov est que les états peuvent être ce que vous voulez.

  • Pour la mélodie génération, essayez clés relatifs numéros de note (par exemple, si la clé est C minor, C 0, D 1, D#, serait de 2 et ainsi de suite)
  • Pour l'harmonie de la génération, essayez une combinaison de touche-par rapport à des numéros de note pour la racine de l'accord, le type d'accord (majeur, mineur, diminué, augmenté, etc.) et l'inversion de la corde (racine, le premier ou le deuxième)

Les réseaux de neurones sont bien adaptés à la prédiction de séries temporelles (de prévision), ce qui signifie qu'ils sont également adaptés à "prédire" une séquence musicale formés contre les mélodies populaires/les harmonies. Au final, le résultat sera similaire à celle de la chaîne de Markov approche. Je ne vois pas quel avantage, par rapport à la chaîne de Markov approche autre que la réduction de l'empreinte mémoire.

En plus de terrain, vous aurez besoin de la durée pour déterminer le rythme de l'généré des notes ou des accords. Vous pouvez choisir d'inclure ces informations dans la chaîne de Markov d'états ou de réseau de neurones de sorties, ou vous pouvez générer séparément et de combiner les indépendants hauteur et la durée des séquences.

Les algorithmes génétiques peuvent être utilisés pour évoluer au rythme des sections. Un modèle simple qui pourrait utiliser un binaire de chromosomes dans lequel les 32 premiers bits représentent le motif d'un coup de tambour, les 32 bits d'un piège, le troisième de 32 bits a fermé hi hat et ainsi de suite. L'inconvénient dans ce cas est qu'ils nécessitent humaine continue de rétroaction pour évaluer la pertinence de la nouvelle évolué modèles.

Un système expert peut être utilisé pour vérifier les séquences générées par les autres techniques. Les connaissances de base pour un système de validation peut probablement être levé par la toute bonne théorie de la musique livre ou site web. Essayez Ricci Adams musictheory.net.

28voto

thekidder Points 2237

Automates cellulaires - lire.

Vous pouvez aussi essayer ici.

Edit :

rakkarage a fourni une autre ressource : http://www.ibm.com/developerworks/java/library/j-camusic/

10voto

flexatone Points 89

Il y a plus de 50 ans de recherches sur ces techniques, bien souvent négligé par les développeurs ne connaissent pas l’histoire de l’informatique musicale et de composition algorithmique. nombreux exemples de systèmes et de recherche qui abordent ces questions peuvent être trouvées ici :

http://www.Algorithmic.net

7voto

joeld Points 5569

Un moyen facile et peu efficace de l'algorithme est d'utiliser bruit en 1/f aka "bruit rose" pour sélectionner des durées et des notes à partir d'une échelle. Cela sonne un peu comme de la musique et peut être un bon point de départ.

Un meilleur algorithme est d'utiliser des "chaînes de markov".. numériser quelques exemples de la musique et de construire un tableau de probabilités. Dans le cas le plus simple, ce serait quelque chose comme C est 20% de chances de suivre A. De faire mieux, regardez la séquence de ces quelques notes, par exemple "C" est de 15%, ce qui devrait être suivi par B, et 4% de chances d'être suivie par un Bb, etc. Ensuite, il suffit de choisir de notes à l'aide des probabilités de l'choisies précédemment notes. Cette remarquablement simple algorithme génère d'excellents résultats.

Chaînes de Markov pour la génération de musique

6voto

interstar Points 4118

Dmitri Tymoczko a des idées et des exemples intéressants ici :

http://Music.Princeton.edu/~Dmitri/whatmakesmusicsoundgood.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X