2012-04-14 19 views
2

Ich habe ein "Format" erstellt, um Segmente von Musik (Auftaktteil, wiederholten Teil, Endteil) und Zeitinformationen für diese Segmente (Offset, gekerbt Länge) zu speichern, damit ich es mischen kann in Echtzeit, als wäre es ein Musikstück, während der wiederholte Teil (optional) auf unbestimmte Zeit wiederholt wird. Auf diese Weise können die Segmente Decay speichern, wo das nächste Segment gespielt wird, während das vorherige beendet ist. (Ich habe einen Player dafür in Java erstellt und die Clip-Klasse verwendet.)XNA Music Mischen Echtzeit

Ich wollte dieses Format, also kann ich eine endliche Musiklänge (für eine Jukebox-Funktion) bereitstellen, während ich Musik unendlicher Länge in spiele -Games.

Wenn ich jedoch eine Klasse in XNA programmieren wollte, die dieses "Format" verwaltet, ist mir aufgefallen, dass es keine offensichtliche Möglichkeit gibt, "Songs" gleichzeitig/überlappend zu spielen. Wie kann ich das tun/was ist die beste Vorgehensweise, das XNA-Framework nicht zu verlassen? (Ich möchte keine unendlichen Playlists erstellen.)

Antwort

2

Sie möchten wahrscheinlich in XACT suchen. Es sollte mit Ihrer Kopie von XNA installiert sein. XACT testet eine Software, mit der Sie in Ihrem Spiel Logik für Audio erstellen können. Es integriert sich im Grunde nahtlos in XNA. Ich denke, wenn Sie in einige erweiterte Funktionen von XACT schauen, können Sie es vielleicht tun, was Sie brauchen. Es ist sehr mächtig, aber mit einer Lernkurve.

Außerhalb von XACT wird es Ihnen viel schwerer fallen. Ich kann mir keine Möglichkeit vorstellen, es in Vanille C#/XNA-Code zu tun. XACT wurde entwickelt, um diesen Mangel auszugleichen, also sollten Sie es verwenden.

Wie für XACT Zukunft, ich glaube, es ist tot/sterben (wie in, kann nicht in der Zukunft unterstützt werden). Zumindest ist die DirectX-Version. Ich denke nicht, dass sie die Idee ganz aufgeben werden, denn wie ich schon sagte - es gibt wirklich keine vergleichbare Art, wie ich Audio in XNA mit diesem Maß an Kontrolle verwalten kann.

+0

Das ist traurig, weil ich geplant hatte, mein Projekt in C++ zu portieren, und so versuchte ich, so wenig verschiedene Version der Ressource zu erstellen, wie möglich. Aber wenn es wirklich stirbt, bedeutet das, dass sie in Zukunft XNA dafür entwickeln müssen, erweiterte Logik dafür hinzuzufügen. Ich werde dann zu XACT schauen. Vielen Dank! –

+0

Nicht unbedingt. Sie könnten XACT einfach so lassen, wie es ist, und es niemals einfach aktualisieren, aber niemals erweiterte Audiodaten zu XNA hinzufügen. Im Moment ist es ziemlich gut. Wenn Sie bei der Portierung auf C++ mit DirectX arbeiten, sollten Sie sich die Version von XACT für Vanilla DirectX ansehen. Ich verstehe, dass es eine gewisse Übertragbarkeit zwischen XNA XACT und DirectX XACT gibt, daher ist es am Ende vielleicht nicht so schwierig, Ihre Audio-Integration zu bewegen. –

+0

Ich bin ein Cross-Plattform-Freak, und ich möchte es auf System portieren, wo DirectX nicht verfügbar ist, so dass das keine Option für mich ist, aber danke nochmal. :) –