Hinweis: Ich frage nicht, wie ich einen Klon daraus machen soll. Ich frage, wie sie funktionieren.
Ich bin sicher, jeder hat die Spiele gesehen, in denen Sie Ihre eigenen Musikdateien (oder die bereitgestellten) verwenden, und die Spiele produzieren darauf basierende Level wie Audiosurf und Beat Hazard .
Hier ist ein Video von Audiosurf in Aktion, um zu zeigen, was ich meine.
Wenn Sie einen Heavy-Metal-Song liefern, erhalten Sie von Vivaldi ein völlig anderes Set an Hindernissen, Feinden und Spielerfahrungen.
Mich interessiert, wie diese Spiele funktionieren. Ich weiß nicht viel über Audio (nun ja, datenseitig), aber wie verarbeiten sie den Song, um zu verstehen, wann er sich beruhigt oder wann er sich beschleunigt? Ich vermute, sie könnten einfach die Tonhöhenwerte (vorausgesetzt, dass solche Dinge in Audiodateien vorhanden sind) eingeben, um einen Pegel zu bilden, aber das würde ihn nicht vollständig erklären.
Ich suche entweder eine Erklärung, Links zu Artikeln über diese Art von Dingen (ich bin mir sicher, dass es einen Begriff oder Begriffe dafür gibt) oder sogar eine Open-Source-Implementierung dieser Art von Dingen ;-)
EDIT: Nach einigem Suchen und etwas Hilfe habe ich etwas über FFT (Fast Fourier Transform) erfahren. Dies ist vielleicht ein Schritt in die richtige Richtung, aber es ist etwas, das für mich keinen Sinn ergibt ... oder zu meinem physikalischen Wissen über Wellen passt.
quelle
Antworten:
Der Begriff, nach dem Sie suchen, ist Signalverarbeitung / -analyse. Es gibt viele Techniken, aber die grundlegende, die diese Spiele verwenden, ist Beat Detection . Dadurch wird versucht, das Tempo des Songs und die Position der Beats in einem Takt zu berechnen und die Hindernisse so weit voneinander zu entfernen, dass sie mit jedem Beat übereinstimmen.
Die Art und Weise, in der die Spiele wissen, wann sie "einsteigen" müssen, kann sehr einfach sein und die Amplitude (Lautstärke) der Wellenform messen.
Wenn Sie interessiert sind, schauen Sie sich die digitale Signalverarbeitung an, um zu sehen, wie Sie Wellenformen analysieren können. Genau das tun diese Spiele in ihrer Ladephase.
Mit diesen Links können Sie loslegen:
Einführung in die
Theorie der Klangverarbeitung und Techniken der elektronischen Musik
Einführung in digitale Filter
Ich hoffe, das hilft :)
-Strahl
EDIT: Ich habe gerade Ihre Bearbeitung in Bezug auf Fourier-Transformationen gesehen und dachte, ich werde einen Einblick in sie geben, obwohl ich auf keinen Fall ein Experte darin bin!
FFT ist eine Methode zur Berechnung der tatsächlichen Fourier-Transformation einer Wellenform. Grundsätzlich wird beim Laden einer Audiodatei in Audacity die Wellenform mit der Timeline oben angezeigt . Diese wird als Zeitdomäne bezeichnet . Die FFT wandelt ein Signal aus dem Zeitbereich in den Frequenzbereich um (im Grunde alle Frequenzen, die innerhalb des Audios auftreten).
Diese Umwandlung ist nützlich für die Spektralanalyse. Wenn Sie in einem Spielbeispiel eine Fourier-Transformation durchführen, können Sie auf einfache Weise die Häufigkeit von Hochfrequenzereignissen im Audio berechnen und daraus visuelle Effekte, Sterne oder etwas hinzufügen, das mit typischen Hochfrequenztönen assoziiert ist. Für die tiefen Frequenzen können große, gefräßige Monster auftreten, die sich im Takt der Bässe usw. bewegen.
quelle
Hier ist eine großartige siebenteilige Tutorial-Serie von Badlogic Games zu diesem Thema. Sie decken alles von den Grundlagen bis zur Implementierung ab.
http://www.badlogicgames.com/wordpress/?cat=18
Sie versuchen, den Audiosurf-Algorithmus mit Code und allem nachzuahmen.
quelle
Die Daten, die aus der Analyse der Variation der spektralen Energie stammen, reichen aus, um diese Art von Karten zu erstellen. Hier kann das Problem sein, wenn zu viele Daten verarbeitet werden müssen: Nicht welche Art von Daten werden verwendet, sondern wie.
Nachdem ich einige Videos gesehen habe, glaube ich, dass die Daten in der Feature-Domain (Zeit-Domain -> Frequenz-Domain -> Feature-Domain) weiter verschoben werden. Die Software generiert Daten anhand der Änderungen der spektralen Energie und versucht, bekannte Merkmale zu erkennen. Anschließend verwendet sie die Informationen zu den Merkmalen, um die Karte einzurichten. Die Erkennung kann durch Clusterbildung, maximale Wahrscheinlichkeit, neuronale Netze, genetischen Algorithmus usw. erfolgen.
Nach Abschluss der Erkennung erhalten Sie folgende Informationen: Wo befindet sich das Merkmal in Zeit und Häufigkeit , welche Art von Merkmal befindet sich, mit welcher Geschwindigkeit bewegt sich der Merkmalsvektor ? Sie können diese Daten verwenden, um einen Kartengenerierungsalgorithmus zu erstellen, der Raum für Verbesserungen lässt, z. B. bessere Erkennungsalgorithmen, die Erkennung weiterer Funktionsfamilien, das Extrahieren weiterer Daten sowie neue Möglichkeiten zum "Rendern" dieser Daten und so weiter.
quelle