Question

Cela fait un moment que je réfléchis beaucoup à la génération procédurale de contenu et je n’ai jamais vu beaucoup d’expérimentation sur 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 totalement statique ou simplement des boucles superposées (par exemple, Spore).

À cause de cela, je réfléchis aux techniques optimales de génération de musique et je suis curieux de savoir ce que les autres ont à l’esprit. Même si vous n'y avez pas déjà pensé, qu'est-ce qui fonctionnera le mieux selon vous? Une technique par réponse, veuillez inclure des exemples si possible. La technique peut utiliser les données existantes ou générer la musique entièrement à partir de rien, éventuellement sur une entrée (humeur, vitesse, etc.).

Était-ce utile?

La solution

Automates cellulaires - lire .

Vous pouvez également l'essayer ici .

Modifier:

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

Autres conseils

Le système le plus performant 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, conviennent parfaitement à 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 note relatifs à la clé (par exemple, si la clé est en ut mineur, C serait 0, D serait 1, D # serait 2, etc.)
  • Pour créer une harmonie, essayez une combinaison de numéros de notes relative à la clé pour la racine de l'accord, le type de l'accord (majeur, mineur, diminué, augmenté, etc.) et l'inversion de l'accord (racine, premier ou deuxième)

Les réseaux de neurones conviennent bien à prédiction de séries chronologiques (prévisions), ce qui signifie qu'elles sont également appropriées pour" prédire "une séquence musicale lorsqu'elles sont formées contre des mélodies / harmonies populaires existantes. Le résultat final sera similaire à celui de l'approche de la chaîne de Markov. Je ne peux penser à aucun avantage par rapport à 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 de temps 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 indépendantes de hauteur et de durée.

Les

algorithmes génétiques peuvent être utilisés pour faire évoluer les sections rythmiques. Un modèle simple pourrait utiliser un chromosome binaire dans lequel les 32 premiers bits représentent le motif de une grosse caisse, la seconde 32 bits un piège, la troisième 32 bits un charley fermé et ainsi de suite. L’inconvénient dans ce cas est qu’ils ont besoin d’un retour d’information continu pour évaluer l’adéquation des nouveaux modèles.

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 pour un tel système de validation peut probablement être extraite de tout bon livre de théorie musicale ou site web. Essayez musictheory.net de Ricci Adams.

Il existe plus de 50 années de recherche sur ces techniques, souvent négligées par les développeurs non familiarisés avec l’histoire de la musique sur ordinateur 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

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

Un meilleur algorithme consiste à utiliser "chaînes de markov" ... pour analyser un exemple de musique et créer un tableau de probabilités. Dans le cas le plus simple, cela donnerait quelque chose comme C est susceptible de suivre 20 pour cent comme A. Pour le rendre meilleur, regardons la séquence des dernières notes, par exemple "C A B". est susceptible de 15% d'être suivi de B, et 4% susceptible d'être suivi d'un Bb, etc. Ensuite, choisissez simplement des 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

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

http://music.princeton.edu/~dmitri/whatmakesmusicsoundgood.html

Mon logiciel utilise la théorie de l'évolution appliquée pour "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, et Ensuite, l'utilisateur décide de conserver ou non chaque élément ajouté. L'idée est simplement de garder ce que vous aimez et de laisser tomber tout ce qui ne sonne pas bien, et vous n'avez pas besoin de formation musicale pour l'utiliser.

L’interface explose, mais c’est vieux - poursuivez-moi en justice.

J'ai toujours aimé les vieux jeux Lucasarts qui utilisaient le système iMuse, qui produisaient une bande-son réactive et sans fin pour le jeu et qui était très musicale (parce que la plupart étaient toujours créés par un compositeur). Vous pouvez trouver les spécifications (y compris le brevet) ici: http://fr.wikipedia.org/wiki/IMUSE

Nintendo semble être la seule société à utiliser encore une approche similaire à celle d'iMuse pour créer ou influencer la musique à la volée.

Si votre projet n’est pas très expérimental, je ne renoncerais pas à un compositeur - un vrai compositeur humain produira des résultats beaucoup plus musicaux et écoutables qu’un algorithme.

Comparez-le à la rédaction d’un poème: vous pouvez facilement générer des poèmes non séné qui semblent très avant-gardistes, mais il est difficile de reproduire shakespeare avec un algorithme, pour le dire avec douceur.

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

Des exemples générés avec SoundHelix sont disponibles à l'adresse suivante: http://www.soundhelix.com/audio-examples.

La recherche sur la génération de musique procédurale non ennuyeuse remonte à longtemps. Parcourez les anciens et nouveaux numéros de Computer Music Journal http://www.mitpressjournals.org/cmj (aucun nom de domaine réel?) Cela a de sérieux problèmes techniques articles d'utilisation réelle pour bricoleurs de synthèse musicale, jockeys en fer à souder, bergers et chercheurs universitaires. C’est une critique moelleuse et des interviews telles que plusieurs des magazines que vous pouvez trouver dans les principales librairies.

Un si gros sujet. Vous pouvez consulter 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 musicale dynamique proposent des trucs qui sonnent bien académiques. Je pense que les choses les plus réussies se trouvent en marge du monde du club / electronica. Monolake est mon héros à cet égard. Trucs très écoutables, très générés par ordinateur. Ma propre musique n'est pas mauvaise non plus. Paul Lansky's "Alphabet Book" est un bel exemple de musique algorithmique extrêmement à l'écoute, d'autant plus qu'il est un universitaire.

La technique que j'ai envisagée consiste à créer de petits motifs musicaux, allant jusqu’à un bar. Identifiez ces motifs avec des identifiants tels que "enthousiasme", "intense", etc. Lorsque vous souhaitez générer de la musique pour une situation donnée, choisissez quelques motifs en fonction de ces tags et choisissez l'instrument avec lequel vous souhaitez jouer. En vous basant sur 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 votre main. Sur une guitare, vous pourrez jouer les notes en succession rapide), puis les restituer au format PCM. . De plus, vous pouvez changer de clé, changer de vitesse, ajouter des effets, etc.

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

Mais voir cet article de Wikipedia et this page Métafiltre.

Le livre Composition algorithmique est un bon visite guidée des différentes méthodes utilisées:

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

C’est un bon point de départ pour ce vaste sujet, mais il n’explique jamais en détail le fonctionnement de chaque méthode. Il fournit un bon aperçu de chacun, mais ne suffira pas si vous ne les connaissez pas déjà.

À la fin des années 90, Microsoft a créé un contrôle ActiveX appelé "Contrôle interactif de la musique". qui fait exactement ce que vous cherchez. Malheureusement, ils semblent avoir abandonné le projet.

Ce n'est pas vraiment ce que vous recherchez, mais je connaissais quelqu'un qui envisageait de générer automatiquement des ensembles de DJ appelés Similarité musicale basée sur le contenu .

Si vous avez des théories plus profondes sur la manière dont la musique est liée, site Bill Sethares présente des rebondissements intéressants.

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

  

8.1 Récolte automatisée et analyse statistique des corpus de musique

     

Analyse traditionnelle des partitions   se compose d'une ou plusieurs personnes   analyser le rythme, les séquences d’accord et   autres caractéristiques d'un seul   pièce, mise dans le contexte d'un souvent   comparaison vague d'autres pièces par   le même compositeur ou d'autres compositeurs   de la même période.

     

Traditionnel   l'analyse automatisée de la musique a à peine   musique en feuille traitée, mais s'est concentré   sur l'analyse du signal et l'utilisation de   techniques d'apprentissage automatique à extraire   et classer dans, par exemple, l'humeur ou   genre. En revanche, la recherche naissante   à DIKU vise à automatiser des parties de la   analyse de partitions. L'ajouté   la valeur est le potentiel d'extraction   informations provenant de grands volumes de   des partitions difficiles à réaliser   à la main et ne peut pas être significatif   analysé par apprentissage automatique   techniques.

C’est, à mon avis, le contraire 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.

Mon avis est que la musique générative ne fonctionne que si elle est soumise à un processus de sélection rigoureux. David Cope, un pionnier de la musique algorithmique, passerait des heures à produire de la musique grâce à ses algorithmes (qui, je pense, étaient principalement basés sur la chaîne de Markov) pour en sélectionner quelques-uns qui se sont 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 " disco " style attribuerait beaucoup de points à une ligne de basse comportant des temps décalés et des parties de batterie avec des caisses claires sur les temps faibles, mais soustrait des points aux harmonies fortement dissonantes.

Le fait est que le processus de composition musicale est rempli de pratiques idiomatiques si complexes qu’elles sont très difficiles à modéliser sans connaissances spécifiques du domaine.

Je travaille 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 d’accord, puis j’ai été capable de le laisser générer de manière aléatoire un contenu à partir de ces contraintes. Je suis sûr qu'il y a plus de théories et de schémas qu'un système comme celui-ci pourrait être enseigné, en particulier par quelqu'un qui comprend mieux le sujet. Vous pouvez ensuite utiliser ces systèmes comme contraintes pour les algorithmes génétiques ou la génération de contenu aléatoire.

Vous pouvez consulter mon implémentation ici , en particulier le Un exemple de prospect généré aléatoirement peut vous être utile. Une personne ayant une solide compréhension des progressions d'accords pourrait créer une structure de chanson à partir de techniques comme celle-ci et mettre en œuvre des mélodies aléatoires contraintes comme celle-ci. Ma connaissance de la théorie musicale ne va pas aussi loin.

Mais en gros, vous aurez besoin de coder la théorie du type de musique que vous voulez générer, puis de l’utiliser comme contrainte pour un algorithme permettant d’explorer de manière procédurale la portée de cette théorie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top