Techniques procédurales de génération de musique [fermé]


89

J'ai beaucoup réfléchi à la génération procédurale de contenu pendant un certain temps et je n'ai jamais vu beaucoup d'expérimentation avec la musique procédurale. Nous avons des techniques fantastiques pour générer des modèles, des animations, des textures, mais la musique est toujours soit complètement statique, soit simplement des boucles superposées (par exemple Spore).

Pour cette raison, j'ai pensé à des techniques de génération de musique optimales et je suis curieux de savoir ce que les autres ont à l'esprit. Même si vous ne l'avez pas déjà envisagé, qu'est-ce qui fonctionnera bien? Une technique par réponse, s'il vous plaît, et incluez des exemples si possible. La technique peut utiliser des données existantes ou générer la musique entièrement à partir de zéro, peut-être sur une sorte d'entrée (humeur, vitesse, peu importe).


19
Enfin une question musicale sur la programmation / création / génération de musique! : D
Oddmund

Réponses:


28

Automates cellulaires - lire .

Vous pouvez également l'essayer ici .

Éditer:

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


1
Wolfram est si intelligent! Excellent travail pour rendre ce genre de chose si accessible aussi ...
defmeta

Je n'ai pas pu le faire fonctionner sur ma boîte Ubuntu. :(
Calmarius


Le problème avec ceci est qu'il est piégé dans le système à 12 tonalités. Un véritable algorithme de génération de musique sera supérieur à une instrumentation normale et aura un contrôle de tonalité harmonique libre. Le piano a été conçu avec un système de son spécifique qui a été convenu comme standard à son époque. Pourtant, le système à 12 tons était brillant pour son temps.
Timothy Swan

42

Le système le plus efficace combinera probablement plusieurs techniques. Je doute que vous trouviez une technique qui fonctionne bien pour la génération de séquences de mélodie, d'harmonie, de rythme et de basse dans tous les genres de musique.

Les chaînes de Markov , par exemple, sont bien adaptées à la génération de séquences mélodiques et harmoniques. Cette méthode nécessite l'analyse des chansons existantes pour construire les probabilités de transition en chaîne. La vraie beauté des chaînes de Markov est que les états peuvent être ce que vous voulez.

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

Les réseaux de neurones sont bien adaptés à la prédiction de séries chronologiques (prévision), ce qui signifie qu'ils sont également adaptés pour `` prédire '' une séquence musicale lorsqu'ils sont entraînés contre des mélodies / harmonies populaires existantes. Le résultat final sera similaire à celui de l'approche en chaîne de Markov. Je ne peux penser à aucun avantage sur l'approche de la chaîne de Markov autre que la réduction de l'empreinte mémoire.

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

Des algorithmes génétiques peuvent être utilisés pour faire évoluer des sections rythmiques. Un modèle simple pourrait utiliser un chromosome binaire dans lequel les 32 premiers bits représentent le motif d'une grosse caisse, le deuxième 32 bits une caisse claire, le troisième 32 bits un charleston fermé et ainsi de suite. L'inconvénient dans ce cas est qu'ils nécessitent une rétroaction humaine continue pour évaluer l'adéquation des modèles nouvellement évolués.

Un système expert peut être utilisé pour vérifier les séquences générées par les autres techniques. La base de connaissances d'un tel système de validation peut probablement provenir de tout bon livre ou site Web de théorie musicale. Essayez musictheory.net de Ricci Adams .


10

Il y a plus de 50 ans de recherche sur ces techniques, souvent négligées par des développeurs peu familiers avec l'histoire de la MAO et de la composition algorithmique. Vous trouverez ici de nombreux exemples de systèmes et de recherches traitant de ces problèmes:

http://www.algorithmic.net


7

Un algorithme simple et quelque peu efficace consiste à utiliser le bruit 1 / f aka "bruit rose" pour sélectionner les durées et les notes à partir d'une gamme. Cela ressemble à de la musique et peut être un bon point de départ.

Un meilleur algorithme consiste à utiliser des "chaînes de markov". Scannez quelques exemples de musique et construisez une table de probabilités. Dans le cas le plus simple, ce serait quelque chose comme C a 20% de chances de suivre A. Pour améliorer cela, regardez la séquence des dernières notes, par exemple "CA B" est susceptible d'être suivi de B à 15%, et 4% susceptibles d'être suivis d'un si bémol, etc. Ensuite, choisissez simplement les notes en utilisant les probabilités des notes précédemment choisies. Cet algorithme remarquablement simple génère de très bons résultats.

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



4

Mon logiciel utilise la théorie évolutionniste appliquée pour "faire grandir" la musique. Le processus est similaire au programme The Blind Watchmaker de Richard Dawkins - MusiGenesis ajoute des éléments musicaux de manière aléatoire, puis l'utilisateur décide de conserver ou non chaque élément ajouté. L'idée est de garder ce que vous aimez et de laisser tomber tout ce qui ne vous convient pas, et vous n'avez pas besoin de formation musicale pour l'utiliser.

L'interface souffle, mais c'est vieux - poursuivez-moi.


4

J'ai toujours aimé les vieux jeux Lucasarts qui utilisaient le système iMuse, qui produisait une bande-son interminable et réactive pour le jeu et était très musical (car la plupart d'entre eux étaient encore créés par un compositeur). Vous pouvez trouver les spécifications (y compris le brevet) ici: http://en.wikipedia.org/wiki/IMUSE

Nintendo semble être la seule entreprise à utiliser encore une approche similaire à iMuse pour créer ou influencer la musique à la volée.

À moins que votre projet ne soit très expérimental, je n'abandonnerais pas l'utilisation d'un compositeur - un vrai compositeur humain produira des résultats beaucoup plus musicaux et écoutables qu'un algorithme.

Comparez cela à l'écriture d'un poème: vous pouvez facilement générer des poèmes absurdes qui semblent très avant-gardistes, mais reproduire Shakespeare avec un algorithme est difficile, pour le moins dire.


Très vrai, mais je pense que les utilisateurs seraient beaucoup plus intéressés par la musique "ok" ou "décente" qui réagit au gameplay que les 5 mêmes "super" morceaux encore et encore ...
RCIX

@RCIX: Avez-vous déjà joué à un jeu avec le système iMuse? Il réagit à des tas de choses, c'est très subtil ou évident, selon les besoins, mais il utilise de la musique écrite par un compositeur humain. Il ne génère pas de musique complètement nouvelle, jamais entendue auparavant, mais il fait de grandes transitions entre les cues, il peut modifier les arrangements (apporter de nouveaux instruments, en mélanger d'autres), il peut accélérer ou ralentir, le tout sans jamais manquer un battement . C'est très loin d'être "les mêmes 5 bons morceaux encore et encore". Je l'appellerais "un flux continu de musique façonné pour s'adapter à l'ambiance du jeu au moment présent".
Galghamon

3

Avez-vous jeté un œil à SoundHelix (http://www.soundhelix.com)? C'est un framework Java Open-Source pour la création de musique aléatoire algorithmique qui produit une musique assez soignée. Vous pouvez utiliser SoundHelix en tant qu'application autonome, en tant qu'applet intégré dans une page Web, en tant qu'applet basé sur JNLP ou vous pouvez l'inclure dans votre propre programme Java.

Des exemples générés avec SoundHelix peuvent être trouvés ici: http://www.soundhelix.com/audio-examples


3

La recherche sur la génération de musique procédurale non ennuyeuse remonte à loin. Parcourez les anciens et les nouveaux numéros de Computer Music Journal http://www.mitpressjournals.org/cmj (pas de vrai nom de domaine?) Il contient des articles techniques sérieux d'utilisation réelle pour les bricoleurs de synthèse musicale, les jockeys de fer à souder, les éleveurs de mors et les chercheurs universitaires. Ce n'est pas un chiffon de critiques et d'interviews moelleux, comme plusieurs des magazines que vous pouvez trouver dans les grandes librairies.


Je dois mentionner que ma connaissance de ce magazine est basée sur l'abonnement que j'avais mais qui a expiré il y a quelques années. je suppose que c'est toujours aussi bon!
DarenW

2

Un si gros sujet. Vous pouvez jeter un œil à mon application iPad, Thicket ou à mon logiciel Ripple sur morganpackard.com. D'après mon expérience, la plupart des approches académiques de la génération de musique dynamique proposent des choses qui semblent, enfin, académiques. Je pense que les trucs les plus réussis se trouvent en marge du monde club / electro. Monolake est mon héros à cet égard. Des trucs très écoutables, très générés par ordinateur. Ma propre musique n'est pas mauvaise non plus. "Alphabet Book" de Paul Lansky est un bel exemple de musique algorithmique extrêmement écoutable, d'autant plus qu'il est un universitaire.


1
Découvrez également les communautés autour des outils que les musiciens utilisent pour créer le contenu - Pure Data, SuperCollider, Max. Je commencerais par trouver un musicien dont vous aimez le travail et travailler à rebours à partir de là, plutôt que de commencer par chercher des techniques conceptuellement intéressantes.
morgancodes

1

La technique que j'ai envisagée est de créer de petits motifs musicaux, jusqu'à une barre ou deux. Marquez ces modèles avec des identifiants de sentiments tels que «excitation», «intense», etc. Lorsque vous voulez générer de la musique pour une situation, choisissez quelques modèles basés sur ces étiquettes et choisissez un instrument avec lequel vous voulez jouer. En fonction de l'instrument, déterminez comment combiner les motifs (par exemple, sur un piano, vous pourrez peut-être tout jouer ensemble, en fonction de la portée de la main, sur une guitare, vous pouvez jouer les notes en succession rapide) et ensuite le rendre au PCM . De plus, vous pouvez changer de clé, changer de vitesse, ajouter des effets, etc.


1

La technique spécifique que vous décrivez est quelque chose sur laquelle Thomas Dolby travaillait il y a dix ou quinze ans, même si je ne me souviens plus comment il l'a appelée, donc je ne peux pas vous donner un bon terme de recherche.

Mais voyez cet article de Wikipedia et cette page de métafiltre.


1
Vous pensez à la "musique générative" et au programme nommé "Koan".
MusiGenesis

1

Le livre Algorithmic Composition est un bon tour des différentes méthodes utilisées:

"Les sujets abordés sont: les modèles de markov, les grammaires génératives, les réseaux de transition, le chaos et l'auto-similitude, les algorithmes génétiques, les automates cellulaires, les réseaux de neurones et l'intelligence artificielle."

C'est un bon point de départ sur ce vaste sujet, mais il ne décrit jamais en profondeur le fonctionnement de chaque méthode. Il fournit un bon aperçu de chacun, mais ne sera pas suffisant si vous ne les connaissez pas déjà.


0

À la fin des années 90, Microsoft a créé un contrôle ActiveX appelé "Interactive Music Control" qui a fait exactement ce que vous recherchez. Malheureusement, ils semblent avoir abandonné le projet.


C'est parce que la musique qu'il a créée a complètement soufflé, ce qui est une caractéristique assez courante de la musique composée de manière algorithmique.
MusiGenesis

Le projet Wolfram Tones référencé par @thekidder ci-dessus est remarquable pour ne pas souffler. Je m'attendais au rnd noodling habituel ...
defmeta



0

J'ai cherché à faire cette proposition de projet - "8.1 " du groupe de recherche "Théorie et pratique en langage de programmation" de l'Université de Copenhague - département de CS:

8.1 Récolte automatisée et analyse statistique des corpus musicaux

L'analyse traditionnelle de la partition consiste en une ou plusieurs personnes analysant le rythme, les séquences d'accords et d'autres caractéristiques d'une même pièce, dans le contexte d'une comparaison souvent vague d'autres pièces du même compositeur ou d'autres compositeurs de la même période.

L'analyse automatisée traditionnelle de la musique a à peine traité les partitions, mais s'est concentrée sur l'analyse du signal et l'utilisation de techniques d'apprentissage automatique pour extraire et classer dans, par exemple, une humeur ou un genre. En revanche, la recherche naissante chez DIKU vise à automatiser certaines parties de l'analyse des partitions. La valeur ajoutée est le potentiel pour extraire des informations de grands volumes de partitions qui ne peuvent pas être facilement réalisées à la main et ne peuvent pas être analysées de manière significative par des techniques d'apprentissage automatique.

Ceci - comme je le vois - est le sens opposé de votre question, les données générées - j'imagine - pourraient être utilisées dans certains cas de génération procédurale de musique.


0

Mon opinion est que la musique générative ne fonctionne que lorsqu'elle passe par un processus de sélection rigoureux. David Cope, un pionnier de la musique algorithmique, passait par des heures de production musicale à partir de ses algorithmes (qui, je pense, étaient principalement basés sur Markov Chain) pour choisir les quelques-uns qui se sont réellement bien déroulés.

Je pense que ce processus de sélection pourrait être automatisé en modélisant les caractéristiques d'un style musical particulier. Par exemple, un style "disco" attribuerait beaucoup de points pour une ligne de basse qui comporte des contre-temps et des parties de batterie avec des caisses claires sur les contre-temps, mais soustrait des points pour les harmonies fortement dissonantes.

Le fait est que le processus de composition musicale est rempli de tant de pratiques idiomatiques qu'elles sont très difficiles à modéliser sans connaissance spécifique du domaine.


0

J'ai travaillé sur un module Python pour la musique procédurale. Je viens de programmer ce que je sais sur les notes, les gammes et la construction des accords, puis j'ai pu le laisser générer du contenu de manière aléatoire à partir de ces contraintes. Je suis sûr qu'il y a plus de théorie et de modèles qu'un système comme celui-ci pourrait être enseigné, en particulier par quelqu'un qui comprend mieux le sujet. Ensuite, vous pouvez utiliser ces systèmes comme contraintes pour les algorithmes génétiques ou la génération de contenu aléatoire.

Vous pouvez passer en revue mon implémentation ici , en particulier l'exemple de piste généré aléatoirement peut vous être utile. Quelqu'un avec une solide compréhension des progressions d'accords pourrait créer une structure de chanson à partir de techniques comme celle-là et implémenter des mélodies aléatoires contraintes comme celle-ci. Ma connaissance du solfège ne va pas aussi loin.

Mais fondamentalement, vous devrez encoder la théorie du type de musique que vous souhaitez générer, puis l'utiliser comme une contrainte pour un algorithme pour explorer de manière procédurale la portée de cette théorie.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.