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).
quelle
Antworten:
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/
quelle
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.
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 .
quelle
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
quelle
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
quelle
Dmitri Tymoczko hat hier einige interessante Ideen und Beispiele:
http://music.princeton.edu/~dmitri/whatmakesmusicsoundgood.html
quelle
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.
quelle
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.
quelle
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
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
Nicht ganz das, wonach Sie suchen, aber ich kannte jemanden, der sich mit der automatischen Generierung von DJ-Sets namens Content Based Music Similarity befasste .
quelle
Wenn Sie sich mit tieferen Theorien darüber beschäftigen, wie Musik zusammenhängt, hat die Website von Bill Sethares einige interessante Wendungen.
quelle
Ich habe mich mit diesem Projektvorschlag befasst - "8.1 " aus der Forschungsgruppe "Theorie und Praxis in der Programmiersprache" der Universität Kopenhagen - Abteilung CS:
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.
quelle
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.
quelle
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.
quelle