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).
la source
Réponses:
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/
la source
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.
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 .
la source
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
la source
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
la source
Dmitri Tymoczko a quelques idées et exemples intéressants ici:
http://music.princeton.edu/~dmitri/whatmakesmusicsoundgood.html
la source
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.
la source
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.
la source
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
la source
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.
la source
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.
la source
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.
la source
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.
la source
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à.
la source
À 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.
la source
Ce n'est pas tout à fait ce que vous recherchez, mais je connaissais quelqu'un qui cherchait à générer automatiquement des DJ sets appelés Content Based Music Similarity .
la source
Si vous êtes dans des théories plus profondes sur la façon dont la musique est liée, le site de Bill Sethares a quelques rebondissements intéressants.
la source
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:
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.
la source
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.
la source
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.
la source