2012-12-29 10 views
6

Echtzeit ist nicht unbedingt erforderlich, aber ich erstelle ein Spiel für mein Projekt im letzten Jahr und möchte die Kraft des Tons nutzen, um dynamische Pegel zu erstellen, die ausschließlich auf einem Musiktitel basieren, der gerade abgespielt wird. Ich möchte dieses Spiel für die PS Vita mit Playstation Mobile und C# erstellen, aber wenn ich will, kann ich auf C++ und PSP wechseln.Benötigen Sie eine Audioanalysebibliothek, um Echtzeitrückmeldungen aus Audiodateien zu erstellen?

Ich kann eine WAV-Datei verwenden, und hoffentlich die Amplitude der Wellenform extrahieren, sowie andere Merkmale wie Durchschnittsfrequenz und ungefähre BPM aus diesen Daten berechnen, um ein Niveau zu erstellen.

Ich habe keine Skrupel zu versuchen, mit diesen Rohdaten zu arbeiten, ich möchte nur einen Weg, wie ich diese Informationen zuerst bekommen kann. Wenn ich die Samples extrahieren und verschiedene Eigenschaften dieser Samples feststellen kann, kann ich sie speichern und Änderungen in der Lautstärke, Tonhöhe und mehr berechnen, um Notizen usw. zu erstellen.

Ich benutze C#, aber wenn überhaupt möglich kann ich entweder Verwenden Sie p/invoke oder wechseln Sie mein Projekt zu einem anderen Gerät, das C++ anstelle von C# verwendet.

Ich panische ein bisschen hier, weil ich wirklich ein bisschen ratlos bin.

Vielen Dank Jungs.

Antwort

3

Das Problem, das du hier beschreibst, ist eines von Musik/Audio Merkmalsextraktion und eine beträchtliche Menge akademischer Arbeit existiert, auf die du zurückgreifen kannst. Ein weiterer nützlicher Ausdruck für die Suche ist Music Information Retrieval (MIR).

Die Liste der "Merkmale", die Forscher aus Aufzeichnungen zu finden versucht haben, ist groß und variiert von deterministischen Dingen wie Tonhöhe und Tonart bis hin zu emotionalen Merkmalen wie "Energie".

Die meisten von diesen erweisen sich als schwieriger als Sie sich vorstellen, und in der Regel nur etwa 60-70% genau - obwohl für Ihre Anforderungen wahrscheinlich ist dies ausreichend.

Ein guter Einstiegspunkt könnte der Download Sonic Visualiser, für die eine große Anzahl von Feature-Extraktion-Plug-Ins vorhanden sind, und sind Open-Source. Sie werden zumindest ein Gefühl dafür bekommen, was möglich ist.

Update: Ein weiterer nützlicher Begriff der Kunst ist Onset-Erkennung - das wird typischerweise verwendet, um Beat-Erkennung Algorithmen zu beschreiben.

4

Leider glaube ich nicht, dass Sie C# dazu verwenden können - AFAIK, es gibt keinen JIT-Compiler dafür. Ich erinnere mich daran, etwas über Mono gelesen zu haben, das es für die Verwendung mit C# verfügbar machen würde, aber ich bin mir momentan nicht sicher.

Das sagte - ich würde mit C++ gehen. Wenn Sie so vorgehen, können Sie eine große Anzahl von Audioanalysebibliotheken wie CLAM (http://clam-project.org/) verwenden.

Keine Panik (stellen Sie sich große, freundliche Briefe vor.) Stellen Sie sich die notwendigen Teile für das Projekt Schritt für Schritt vor, gehen Sie einzeln vor, und Sie sind in kürzester Zeit fertig. =)

1

Aubio ist eine C/C++ - Bibliothek, die unter anderem Pitch-Tracking, Onset-Erkennung und BPM-Tracking durchführt.

Wie "Extrahieren der Amplitude der Wellenform" ist die Wellenform Amplitude, d.h., könnten Sie einfach das Audio-Sample mit dem größten absoluten Wert für alle n Samples auswählen und diesen Wert für den "Amplituden" -Teil der Visualisierung verwenden.

Here's some code, die Ihnen helfen könnten, WAVE-Daten in C# zu lesen.

Here's some information über das Schreiben eines C# -Wrapper für die FFTW-Bibliothek.

Verwandte Themen