Prozedurale Musikgenerierungstechniken [geschlossen]


89

Ich habe eine Weile viel über die prozedurale Generierung von Inhalten nachgedacht und noch nie viel mit prozeduraler Musik experimentiert. Wir haben fantastische Techniken zum Generieren von Modellen, Animationen und Texturen, aber Musik ist immer noch entweder vollständig statisch oder einfach geschichtete Loops (z. B. Spore).

Aus diesem Grund habe ich mir optimale Techniken zur Musikgenerierung ausgedacht und bin gespannt, was andere Leute vorhaben. Was wird Ihrer Meinung nach gut funktionieren, auch wenn Sie es vorher noch nicht in Betracht gezogen haben? Bitte eine Technik pro Antwort und geben Sie nach Möglichkeit Beispiele an. Die Technik kann vorhandene Daten verwenden oder die Musik vollständig von Grund auf neu generieren, möglicherweise über eine Eingabe (Stimmung, Geschwindigkeit, was auch immer).


19
Endlich eine Musikfrage zum eigentlichen Programmieren / Machen / Generieren von Musik! : D
Oddmund

Antworten:


28

Zelluläre Automaten - lesen .

Sie können es auch hier ausprobieren .

Bearbeiten:

Rakkarage hat eine weitere Ressource bereitgestellt: http://www.ibm.com/developerworks/java/library/j-camusic/


1
Wolfram ist so schlau! Großartige Arbeit, um so etwas auch so zugänglich zu machen ...
defmeta

Ich konnte es auf meiner Ubuntu-Box nicht zum Laufen bringen. :(
Calmarius


Das Problem dabei ist, dass es im 12-Ton-System gefangen ist. Ein echter Musikgenerierungsalgorithmus ist der normalen Instrumentierung überlegen und verfügt über eine freie harmonische Klangregelung. Das Klavier wurde mit einem speziellen Tonsystem entworfen, das zu seiner Zeit als Standard vereinbart wurde. Trotzdem war das 12-Ton-System für seine Zeit brillant.
Timothy Swan

42

Das erfolgreichste System wird wahrscheinlich mehrere Techniken kombinieren. Ich bezweifle, dass Sie eine Technik finden, die sich gut für die Erzeugung von Melodie, Harmonie, Rhythmus und Basssequenzen in allen Musikgenres eignet.

Markov-Ketten eignen sich beispielsweise gut zur Erzeugung melodischer und harmonischer Sequenzen. Diese Methode erfordert die Analyse vorhandener Songs, um die Kettenübergangswahrscheinlichkeiten zu erstellen. Die wahre Schönheit von Markov-Ketten ist, dass die Staaten alles sein können, was Sie wollen.

  • Versuchen Sie für die Melodieerzeugung die Tastennoten (z. B. wenn die Tonart c-Moll ist, wäre C 0, D wäre 1, D # wäre 2 und so weiter).
  • Versuchen Sie zur Erzeugung von Harmonie eine Kombination aus tastenbezogenen Notennummern für den Grundton des Akkords, den Typ des Akkords (Dur, Moll, vermindert, erweitert usw.) und die Umkehrung des Akkords (Grundton, erster oder zweiter).

Neuronale Netze eignen sich gut für die Vorhersage von Zeitreihen (Prognosen), was bedeutet, dass sie gleichermaßen für die "Vorhersage" einer Musiksequenz geeignet sind, wenn sie gegen vorhandene populäre Melodien / Harmonien trainiert werden. Das Endergebnis wird dem des Markov-Kettenansatzes ähnlich sein. Ich kann mir keinen anderen Vorteil gegenüber dem Markov-Kettenansatz vorstellen, als den Speicherbedarf zu verringern.

Zusätzlich zur Tonhöhe benötigen Sie eine Dauer, um den Rhythmus der erzeugten Noten oder Akkorde zu bestimmen. Sie können diese Informationen in die Markov-Kettenzustände oder die neuronalen Netzwerkausgänge integrieren oder sie separat generieren und die unabhängigen Tonhöhen- und Dauerfolgen kombinieren.

Genetische Algorithmen können verwendet werden, um Rhythmusabschnitte zu entwickeln. Ein einfaches Modell könnte ein binäres Chromosom verwenden bei dem die ersten 32 Bits das Muster einer Kick-Drum darstellen, die zweiten 32 Bits eine Snare, die dritten 32 Bits eine geschlossene Hi-Hat und so weiter. Der Nachteil in diesem Fall ist, dass sie ein kontinuierliches menschliches Feedback benötigen, um die Fitness der neu entwickelten Muster zu beurteilen.

Ein Expertensystem kann verwendet werden, um Sequenzen zu verifizieren, die durch die anderen Techniken erzeugt wurden. Die Wissensbasis für ein solches Validierungssystem kann wahrscheinlich aus jedem guten musiktheoretischen Buch oder jeder Website entnommen werden. Probieren Sie Ricci Adams ' musictheory.net .


10

Es gibt über 50 Jahre Forschung zu diesen Techniken, die oft von Entwicklern übersehen werden, die mit der Geschichte der Computermusik und der algorithmischen Komposition nicht vertraut sind. Zahlreiche Beispiele für Systeme und Forschung, die sich mit diesen Problemen befassen, finden Sie hier:

http://www.algorithmic.net


7

Ein einfacher und etwas effektiver Algorithmus besteht darin, 1 / f-Rauschen, auch "rosa Rauschen" genannt, zu verwenden, um Dauer und Noten von einer Skala auszuwählen. Das klingt nach Musik und kann ein guter Ausgangspunkt sein.

Ein besserer Algorithmus ist die Verwendung von "Markov-Ketten". Scannen Sie einige Beispielmusik und erstellen Sie eine Tabelle mit Wahrscheinlichkeiten. Im einfachsten Fall würde C mit einer Wahrscheinlichkeit von 20% auf A folgen. Um dies zu verbessern, sehen Sie sich die Reihenfolge der letzten paar Noten an. Beispiel: "CA B" wird mit einer Wahrscheinlichkeit von 15% von B gefolgt. und 4% wahrscheinlich gefolgt von einem Bb usw. Wählen Sie dann einfach Noten mit den Wahrscheinlichkeiten der zuvor ausgewählten Noten aus. Dieser bemerkenswert einfache Algorithmus liefert ziemlich gute Ergebnisse.

Markov-Ketten für die Musikgenerierung



4

Meine Software verwendet angewandte Evolutionstheorie, um Musik zu "wachsen". Der Vorgang ähnelt Richard Dawkins ' The Blind Watchmaker- Programm - MusiGenesis fügt zufällig musikalische Elemente hinzu, und dann entscheidet der Benutzer, ob jedes hinzugefügte Element beibehalten werden soll oder nicht. Die Idee ist, einfach zu behalten, was du magst, und alles wegzulassen, was nicht richtig klingt, und du musst keine musikalische Ausbildung haben, um es zu benutzen.

Die Schnittstelle bläst, aber es ist alt - verklage mich.


4

Ich habe die alten Lucasarts-Spiele, die das iMuse-System verwendeten, immer gemocht, das einen nie endenden, reaktiven Soundtrack für das Spiel produzierte und sehr musikalisch war (weil das meiste davon noch von einem Komponisten erstellt wurde). Die technischen Daten (einschließlich des Patents) finden Sie hier: http://en.wikipedia.org/wiki/IMUSE

Nintendo scheint das einzige Unternehmen zu sein, das noch einen ähnlichen Ansatz wie iMuse verwendet, um die Musik im laufenden Betrieb zu erstellen oder zu beeinflussen.

Wenn Ihr Projekt nicht sehr experimentell ist, würde ich die Verwendung eines Komponisten nicht aufgeben - ein echter menschlicher Komponist wird viel musikalischere und hörbarere Ergebnisse erzielen als ein Algorithmus.

Vergleichen Sie es mit dem Schreiben eines Gedichts: Sie können leicht Nonsen-Gedichte erstellen, die sehr avantgardistisch klingen, aber Shakespeare mit einem Algorithmus zu replizieren, ist, gelinde gesagt, schwierig.


Sehr wahr, aber ich denke, Benutzer wären viel mehr an "ok" oder "anständiger" Musik interessiert, die auf das Gameplay reagiert, als immer wieder dieselben 5 "großartigen" Tracks ...
RCIX

@RCIX: Hast du jemals ein Spiel mit dem iMuse-System gespielt? Es reagiert auf viele Dinge, ist je nach Bedarf sehr subtil oder offensichtlich, verwendet jedoch Musik, die von einem menschlichen Komponisten geschrieben wurde. Es erzeugt keine völlig neue, nie zuvor gehörte Musik, aber es macht großartige Übergänge zwischen den Cues, es kann Arrangements ändern (neue Instrumente einbringen, andere ausblenden), es kann beschleunigen oder verlangsamen, ohne jemals einen Beat zu verpassen . Dies ist weit entfernt von "den gleichen 5 großartigen Tracks immer und immer wieder". Ich würde es "einen kontinuierlichen Musikstrom nennen, der der aktuellen Stimmung des Spiels entspricht".
Galghamon

3

Haben Sie sich SoundHelix (http://www.soundhelix.com) angesehen? Es ist ein Open-Source-Java-Framework für die algorithmische Erstellung zufälliger Musik, das ziemlich ordentliche Musik erzeugt. Sie können SoundHelix als eigenständige Anwendung, als in eine Webseite eingebettetes Applet, als JNLP-basiertes Applet verwenden oder in Ihr eigenes Java-Programm aufnehmen.

Mit SoundHelix generierte Beispiele finden Sie hier: http://www.soundhelix.com/audio-examples


3

Die Forschung zur nicht langweiligen prozeduralen Musikgenerierung reicht weit zurück. Durchsuchen Sie alte und neue Ausgaben des Computer Music Journal http://www.mitpressjournals.org/cmj (kein richtiger Domainname?). Hier finden Sie ernsthafte technische Artikel, die für Musiksynthese-Bastler, Lötkolbenjockeys, Bithirten und akademische Forscher von Nutzen sind. Es ist kein flauschiger Bericht und Interview-Lappen wie einige der Magazine, die Sie in großen Buchhandlungen finden können.


Ich sollte erwähnen, dass mein Wissen über dieses Magazin auf dem Abonnement basiert, das ich hatte, aber vor einigen Jahren abgelaufen bin. Ich nehme an, es ist immer noch so gut!
DarenW

2

So ein großes Thema. Sie können sich meine iPad-App, Thicket oder meine Ripple-Software unter morganpackard.com ansehen. Nach meiner Erfahrung kommen die meisten akademischen Ansätze zur dynamischen Musikgenerierung auf Dinge, die akademisch klingen. Ich denke, das erfolgreichere Zeug befindet sich am Rande der Club- / Electronica-Welt. Monolake ist in dieser Hinsicht mein Held. Sehr hörbares Zeug, sehr computergeneriert. Meine eigene Musik ist auch nicht schlecht. Paul Lanskys "Alphabet Book" ist ein schönes Beispiel für extrem hörbare algorithmische Musik, besonders wenn man bedenkt, dass er ein akademischer Typ ist.


1
Schauen Sie sich auch die Communitys rund um die Tools an, mit denen Musiker das Zeug erstellen - Pure Data, SuperCollider, Max. Ich würde damit beginnen, einen Musiker zu finden, dessen Arbeit Sie mögen, und rückwärts davon arbeiten, anstatt zunächst nach konzeptionell interessanten Techniken zu suchen.
Morgancodes

1

Die Technik, über die ich nachgedacht habe, besteht darin, kleine Musikmuster zu erstellen, bis zu einer Bar oder so. Kennzeichnen Sie diese Muster mit Gefühlsbezeichnern wie "Aufregung", "intensiv" usw. Wenn Sie Musik für eine Situation generieren möchten, wählen Sie anhand dieser Tags einige Muster aus und wählen Sie ein Instrument aus, mit dem Sie sie spielen möchten. Finden Sie anhand des Instruments heraus, wie Sie die Patterns kombinieren können (z. B. können Sie auf einem Klavier je nach Handspanne alles zusammen spielen, auf einer Gitarre können Sie die Noten schnell hintereinander spielen) und rendern Sie sie dann in PCM . Außerdem können Sie die Tonart ändern, die Geschwindigkeit ändern, Effekte hinzufügen usw.


1

Die spezielle Technik, die Sie beschreiben, ist etwas, an dem Thomas Dolby vor zehn oder fünfzehn Jahren gearbeitet hat, obwohl ich mich jetzt nicht erinnern kann, wie er es genannt hat, sodass ich Ihnen keinen guten Suchbegriff geben kann.

Aber sehen Sie diesen Wikipedia-Artikel und diese Metafilter-Seite.


1
Sie denken an "generative Musik" und ein Programm namens "Koan".
MusiGenesis

1

Das Buch Algorithmic Composition bietet einen guten Überblick über die verschiedenen verwendeten Methoden:

"Die behandelten Themen sind: Markov-Modelle, generative Grammatiken, Übergangsnetzwerke, Chaos und Selbstähnlichkeit, genetische Algorithmen, zelluläre Automaten, neuronale Netze und künstliche Intelligenz."

Es ist ein guter Ausgangspunkt für dieses breite Thema, beschreibt jedoch nie ausführlich, wie jede Methode funktioniert. Es bietet einen guten Überblick über die einzelnen Elemente, reicht jedoch nicht aus, wenn Sie noch keine Kenntnisse darüber haben.


0

In den späten 90er Jahren hat Microsoft ein ActiveX-Steuerelement namens "Interactive Music Control" erstellt, das genau das tat, wonach Sie gesucht haben. Leider scheinen sie das Projekt aufgegeben zu haben.


Das liegt daran, dass die Musik, die sie erstellt hat, völlig durchgebrannt ist, was ein ziemlich häufiges Merkmal für algorithmisch komponierte Musik ist.
MusiGenesis

Das Wolfram Tones-Projekt, auf das @thekidder oben verwiesen hat, ist bemerkenswert erfolgreich darin, nicht zu blasen. Ich hatte das übliche Nudeln erwartet ...
defmeta



0

Ich habe mich mit diesem Projektvorschlag befasst - "8.1 " aus der Forschungsgruppe "Theorie und Praxis in der Programmiersprache" der Universität Kopenhagen - Abteilung CS:

8.1 Automatisierte Ernte und statistische Analyse von Musikkorpora

Die traditionelle Analyse von Noten besteht aus einer oder mehreren Personen, die Rhythmus, Akkordsequenzen und andere Merkmale eines einzelnen Stücks analysieren. Dies steht im Zusammenhang mit einem oft vagen Vergleich anderer Stücke desselben Komponisten oder anderer Komponisten aus derselben Zeit.

Die traditionelle automatisierte Analyse von Musik hat Noten kaum behandelt, sich jedoch auf die Signalanalyse und den Einsatz maschineller Lerntechniken konzentriert, um beispielsweise Stimmung oder Genre zu extrahieren und zu klassifizieren. Im Gegensatz dazu zielt die beginnende Forschung an der DIKU darauf ab, Teile der Analyse von Noten zu automatisieren. Der Mehrwert ist das Potenzial zum Extrahieren von Informationen aus großen Mengen von Noten, die nicht einfach von Hand erstellt und mit maschinellen Lerntechniken nicht sinnvoll analysiert werden können.

Dies ist - wie ich es sehe - die entgegengesetzte Richtung Ihrer Frage. Die generierten Daten könnten - wie ich mir vorstellen kann - in einigen Fällen der prozeduralen Generierung von Musik verwendet werden.


0

Meiner Meinung nach funktioniert generative Musik nur, wenn sie einem strengen Auswahlprozess unterzogen wird. David Cope, ein Pionier der algorithmischen Musik, ging stundenlange musikalische Ausgabe seiner Algorithmen durch (von denen ich denke, dass sie hauptsächlich auf Markov-Ketten basierten), um die wenigen herauszufinden, die sich tatsächlich als gut herausstellten.

Ich denke, dieser Auswahlprozess könnte automatisiert werden, indem die Eigenschaften eines bestimmten Musikstils modelliert werden. Zum Beispiel würde ein "Disco" -Stil viele Punkte für eine Basslinie vergeben, die Offbeats und Drum-Parts mit Snares auf den Backbeats enthält, aber Punkte für stark dissonante Harmonien subtrahiert.

Tatsache ist, dass der Prozess der Musikkomposition mit so vielen idiomatischen Praktiken gefüllt ist, dass sie ohne spezifische Fachkenntnisse nur sehr schwer zu modellieren sind.


0

Ich habe an einem Python-Modul für prozedurale Musik gearbeitet. Ich habe gerade programmiert, was ich über Noten, Skalen und Akkordkonstruktionen weiß, und konnte dann zufällig Inhalte aus diesen Einschränkungen generieren lassen. Ich bin sicher, es gibt mehr Theorie und Muster, die ein solches System lehren könnte, insbesondere von jemandem, der das Thema besser versteht. Dann können Sie diese Systeme als Einschränkungen für genetische Algorithmen oder die Erzeugung randomisierter Inhalte verwenden.

Sie können meine Implementierung hier durchgehen , insbesondere das zufällig generierte Lead-Beispiel kann für Sie hilfreich sein. Jemand mit einem soliden Verständnis für Akkordfolgen könnte aus solchen Techniken eine Songstruktur erstellen und darüber eingeschränkte Zufallsmelodien wie diese implementieren. Meine musiktheoretischen Kenntnisse reichen nicht so weit.

Grundsätzlich müssen Sie jedoch die Theorie der Art von Musik codieren, die Sie generieren möchten, und diese dann als Einschränkung für einen Algorithmus verwenden, um den Bereich dieser Theorie prozedural zu untersuchen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.