Ergebnis 1 bis 13 von 13

[Tool] Soundmodding

  1. #1 Zitieren
    Keksmaster  Avatar von Lord Demon
    Registriert seit
    Mar 2011
    Beiträge
    15.783
    Der folgende Beitrag zum Soundmodding unter AFdZ stammt von dem Benutzer Nachgrimm aus dem AFdZ Modding Forum von dtp entertainment vom 01.07.2010, 19:36:17.

    Geschafft

    Ich weiß gerade nicht, ob ich mich freuen oder maßlos frustriert sein soll :silly: . Ich hab die letzten Tage noch ein wenig herumexperimentiert und u.a. das Checksummenproblem gelöst (FCS16-Checksumme), d.h. mein Perlskript kann in Soundbanks einfügen, ohne obigen Fehler zu produzieren. Leider kam ich vom Regen in die Traufe, weil der oben erwähnte "etwas merkwürdige" indexChunk in Wahrheit eine Hashtabelle mit verketteten Listen ist - sprich: statt eines Checksummenalgorithmus durfte ich endlos (und vergeblich) nach einer Hashfunktion suchen. Ist aber alles egal:
    Durch Zufall hab ich rausgefunden, dass ich mir völlig umsonst die letzten Wochen mit dem Enträtseln der Soundbank-Struktur und dem Programmieren meines Skripts um die Ohren geschlagen hab :evil: . Kenntnisse über die Soundbankstruktur? - Braucht man gar nicht!! Tool zum Einfügen in die Soundbanks? - Geschenkt! Denn Drakensang 2 lädt bei Spielbeginn nicht nur die zum Spiel gehörenden Soundbanks - nein: es lädt einfach ALLE Soundbanks im audio-Verzeichnis (<Drakensang aFdZ-Ordner>\export\audio)... also auch solche, die man mit XACT aus dem DirectX-SDK selbst erstellt hat... und bei denen ist die Hashtabelle und der ganze Rest natürlich korrekt!

    In meinem ersten Posting hatte ich ja schon erklärt, was die Begriffe XACT, .xwb (Wavebank), .xsb (Soundbank), Waves, Tracks, Sounds, Cues und Cuenames bedeuten und wo man zum Beispiel in der static.db4 den cueNamen für "Fulminictus Donnerkeil" ändert. An diesem Beispiel möchte ich jetzt zeigen, wie man den Sound ändert, der beim Casten von "Fulminictus Donnerkeil" ertönt, d.h. wie man seine eigene Soundmod erstellt: Als Voraussetzung brauchen wir:
    a) die einzufügende .wav-Datei, z.B. "donner.wav"
    b) das Microsoft DirectX SDK vom März 2009 (Achtung beim Download: 514MB), denn dieses ist das letzte SDK, das Sound+Wavebanks der Version 43 (wie sie in Drakensang 2 verwendet werden) erstellt
    c) einen SQL-Editor, um am Schluß unseren CueName in die Spieledatenbanken einzufügen

    Nach SDK-Installation ruft man XACT (Cross-Platform Audio Creation Tool, steht in "DirectX Utilities") auf.
    XACT besteht aus drei Bereichen (siehe Abbildung): Projektbaum, Eigenschaftsfenster und Soundbank/Wavebankfenster

    xact-screenshot2.jpg


    (Nummerierung: siehe Abbildung)
    1. Zuerst erstellt man mit File->New Project ein neues Projekt, z.B. "meinemod" (Name ist egal, aber man sollte sich den Projektordner merken)
    2. Im Projektbaum erstellt man durch Rechtsklick auf WaveBanks->"New Wavebank" eine neue Wavebank und nennt diese "static_meinemod" (Name ist NICHT egal!!!!). Im Eigenschaftsfenster hat man die Wahl, die wavebank zu einer "In-memory" oder einer "Streaming Wavebank" zu machen. "In memory" bewirkt, dass die XACTEngine zur Laufzeit die kompletten Audiodaten in den Speicher lädt, sobald wir darauf zugreifen, d.h. eigentlich sollte man das nur für oft benutzte Sounds verwenden. Wenn man aber das sinnvollere "Streaming" auswählt, reagiert aFdZ beim Spielstart mit "Nebula3-Error..XACTEngine::CreateInMemoryWaveBank failed...". Fazit: die Wavebank muss als "in Memory" angelegt werden und man sollte aus Speicherplatzgründen nicht zu viele und nicht zu große Wavs in die eigene Mod einfügen!

    3. Ebenso erstellt man durch Rechtsklick auf Soundbanks->"New Soundbank" eine neue Soundbank namens "ui_meinemod".
    Erstaunlicherweise sind die Namen von Wavebank und Soundbank NICHT egal! Ich hatte meine Wavebank "meinemodw" und die Soundbank "meinemods" genannt, woraufhin mein Cue im Spiel NICHT abgespielt wurde - diese Einschränkung kommt m.E. nicht durch die XACT-Engine, sondern muss irgendwie mit Drakensang zu tun haben. Also: nennt Eure Soundbank: ui_<irgendwas> und die Wavebank static_<irgendwas>. Für Mods, die explizit in z.B. Nadoret spielen, sollte die .xsb vermutlich amb_locr01_irgendwas heissen... aber genaues weiß ich dazu noch nicht.
    4. Wie schon im 1.Posting beschrieben, stehen in den Spieledatenbanken cueNames; in der .xsb der zugehörige Cue; dieser enthält Sounds, dieser wiederum Tracks und ein Track referenziert eine Wave aus einer -der Soundbank zugeordneten- Wavebank. Genau das machen wir jetzt in XACT (nur umgekehrt): via Explorer ziehen wir zunächst per Drag&Drop unsere Donner.wav in das Wavebank-Fenster
    5. Das Soundbankfenster ist zweigeteilt: oben Sound(Namen), unten Cue(Namen). Aus dem Wavebankfenster ziehen wir nun unsere donner.wav einfach in das Sound-Fenster, wodurch automatisch ein neuer, gleichnamiger Sound erstellt wird (im rechten Fensterabschnitt sieht man, dass automatisch auch ein zugehöriger Track erstellt wird). Im Eigenschaftsfenster (unten links) setzen wir die Volume des Sounds auf das Maximum, denn schließlich soll es ordentlich donnern :mrgreen: .
    6. Der fast schon letzte Schritt ist, den Sound wiederrum ins Cuefenster zu ziehen, wodurch ein neuer Cue erstellt wird. Dessen Namen ändern wir in "ui_meinemod01". Das ist dann auch der Cuename, den wir anschließend in die Spieledatenbanken eintragen.
    7. Jetzt gehen wir auf File->Build (oder klicken auf das im Screenshot gezeigte "Build"-Icon). Daraufhin öffnet sich ein Fenster 'Build-Projekt', dass uns zur Eingabe einer Reportdatei auffordert (einfach "None" wählen und "Finish" klicken).
    8.Wenn man nun per Explorer in den Projektordner geht, findet man dort die Projektdatei meinemod.xap und den Unterordner win. In diesem stehen nun die Dateien ui_meinemod.xsb und static_meinemod.xwb. Diese beiden kopieren wir in den Audio-Ordner von Drakensang (<aFdZ-Ordner>/export/audio)
    9. Der letzte Schritt ist, per SQL-Editor die Tabelle _Template_Zauber aus der static.db4 zu öffnen, die Zeile mit FulminictusDonnerkeil zu suchen, in der Spalte Intro_Sound (sollte Spalte 28 sein) den Wert "spell_impact_fulminictus_rel" durch "ui_meinemod01" (=unseren CueName) zu ersetzen... und fertig.
    Beim nächsten Casten von Fulminictus Donnerkeil sollte es dann auch tatsächlich donnern.

    Wer sich nicht das Microsoft DirectX SDK runterladen, sondern diese Mini-Mod einfach nur mal ausprobieren will (leider ist der Donner nicht perfekt.. ich hab halt den erstbesten Donner genommen, den ich finden konnte), für den habe ich die beiden oben erstellten Dateien static_meinemod.xwb und ui_meinemod.xsb mal in das angehängte zip-file donner.zip verpackt: zur "Installation" die zip-Datei einfach ins Audio-Verzeichnis entpacken und Schritt 9 (cueName in Spieledatenbank eintragen) ausführen.

    Auch wenn Soundmodding jetzt funktioniert: ich ärgere mich ziemlich, dass ich so unglaublich viel Zeit in das Skript gesteckt hat. Es ist, als würde man wochenlang konzentriert und intensiv an der Herstellung eines kostbaren Gegenstandes arbeiten...nur um dann zu entdecken, dass man ihn im Supermarkt um die Ecke dutzendweise kriegt... und obendrein kostenlos. Ehrlich: dass es am Ende nun sooooooo einfach ist, ist fast wie ein Schlag ins Gesicht :motz: :mrgreen:
    Andererseits muss ich aber sagen: diese Lösung ist wesentlich besser als meine "Tool-Lösung", denn:
    -mit meinem Skript hätte man nur das einfache Abspielen einzelner Wavs einfügen können. Wenn man zum Erstellen der Mod aber schon XACT verwendet, dann kann man (wenn man will) auch die ganzen Funktionen&DSP-Soundeffekte nutzen, die XACT bietet
    -die Integration in eine größere Mod ist mit der "XACT-Lösung" wesentlich einfacher: man packt alle Wavs, die man braucht, in die selbsterstellte .xsb/.xwb, kopiert diese beiden Files ins Audio-Verzeichnis und ändert die Datenbankeinträge. Mein Tool dagegen hätte jede einzelne Wav erstmal in die bestehenden .xwbs einfügen müssen - da die .xwbs z.T. größer als 100MB sind, hätte alleine das schon ne Weile gedauert.

    Kleiner Tipp noch: achtet darauf, eine Stereo-Wav einzufügen. Die Mono-Wavs hört man je nach Einstellung selbst bei voller Lautstärke kaum (speziell in einem Kampf).
    So, nach diesem ultralangen Posting stoß ich jetzt mal mit Euch allen auf erfolgreiches Soundmodding an :cheers: .
    In diesem Beitrag vom 06.09.2010, 12:40:31 bechreibt Nachgrimm sein Tool xactxtract, mit dem die Sounds aus AFdZ ausgelesen und ins wave Format konvertiert werden können. Das Tool kann hier heruntergeladen werden.

    Tataaaa (*Trompeten-werf und Konfetti-blas*) :cheers: : hier ist nun mein Tool zum Extrahieren der xwb-Sounddateien in .xwma-Dateien.
    Vorbemerkung
    Zum ABSPIELEN der erzeugten .xwma-Dateien hab ich bislang nur einen einzigen Freewareplayer gefunden, der aber immer nur EIN File aufnimmt (d.h. keine Playlists unterstützt). Man müsste also per Drag&Drop jedes xwma File einzeln auf den Player ziehen... angesichts von über 15000 xwma Files, die in den XWB-Dateien von aFdZ stecken, macht das nicht gerade Spaß ;-)

    Daher solltet ihr den zweiten Weg wählen: im DirectX SDK (März 2009) von Microsoft gibt es das Utility xWMAEncode(unterster Link), welches .xwma Dateien in "ganz normal" abspielbare .wav Dateien verwandelt, d.h. Ihr könnt dann einfach ein paar hundert .wav Dateien markieren und in das Playlistfenster Eures Lieblingsplayers (z.B. WinAmp) ziehen. Ladet Euch also von einer der verlinkten Seiten das Tool xWMAEncode.exe herunter(der DirectX SDK-Link ist die offizielle Variante, aber da müsst Ihr Euch das komplette SDK runterladen+installieren, unter dem zweiten Link ist das benötigte Tool direkt verfügbar).
    Damit ihr nicht jedes Mal mein XACTxtract UND anschließend xWMAEncode aufrufen müsst, hab ich mein Tool so erweitert, dass es (wenn gewünscht) die .xwb Dateien in .xwma extrahiert, dann (durch Aufruf von xWMAEncode) in .wav-Dateien wandelt und zuletzt die (von mir erstellten und dann nicht mehr benötigten) .xwma-Dateien gleich wieder löscht. Allerdings solltet Ihr noch ein *wenig* freien Festplattenplatz haben, denn die Kompressionsrate ist mind. 10:1, d.h. das Entpacken der insgesamt knapp 900MB Drakensang2-xwb-Dateien ergibt ca. 10 GB .wav-Dateien!!

    Entpacken (und Konvertieren)
    Am einfachsten ist es also, wenn Ihr meine xactxtract.exe und die xWMAEncode.exe direkt in das Drasa2-Audioverzeichnis (<Drakensang -Am Fluss der Zeit-Ordner>\export\audio) kopiert und mit der Kommandozeile ebenfalls in dieses Verzeichnis wechselt.

    Um eine .xwb-Datei lediglich in .xwma Dateien zu entpacken gebt ihr dann in die Kommandozeile ein:
    xactxtract -x <name>.xwb
    extrahiert alle xWMA-Dateien aus der angegebenen Wavebank in das Unterverzeichnis name. Beispiel: Nach Ausführung von "xactxtract -x static_spells.xwb" wird im akt. Verzeichnis ein Unterverzeichnis static_spells erstellt mit den Dateien static_spells00000.xwma, static_spells00001.xwma,...

    Langsamer, aber besser ist extrahieren und in .wav konvertieren (dazu muss die xWMAEncode.exe mit im Audioverzeichnis sein):
    xactxtract -x2 <name>.xwb
    Bsp: "xactxtract -x2 static_spells.xwb" liefert Euch ein Unterverzeichnis static_spells mit den Dateien static_spells00000.wav, static_spells00001.wav, usw, die ihr dann bequem in die Playlist Eures Lieblingsplayers ziehen könnt.

    Wer alles auf einmal extrahieren und konvertieren will, nimmt:
    xactxtract -x2 *.xwb
    Aber Vorsicht: Das DAUERT (auf meinem PC 15min) und braucht mind. 10GB freien Festplattenspeicher

    P.S.: Wundert Euch nicht über die enorme Größe von xactxtract.exe (derzeit 3.2MB). Wie gesagt ist es eigentlich ein Perl-Skript. Da ich Euch nicht zumuten wollte, extra Perl zu installieren, hab ich es in eine Executable-Datei umgewandelt... dabei wird eine komplette Perl-Laufzeitumgebung (ähnlich der JVM bei Java) zum Skript dazugebunden.
    P.S.2: Als Sonderhinweis für alle Sorgenvollen: beim Extrahieren werden die Orginaldateien von Drakensang2 (.xwb-Dateien) nur lesend geöffnet und nicht verändert. Wer ganz, ganz supervorsichtig sein will, kann auch einfach xactxtract.exe, xWMAEncode.exe und die .xwbs, die er/sie extrahieren möchte, zusammen in irgendein Verzeichnis (z.B. nach c:\irgendeinVerzeichnis :mrgreen: ) kopieren und das Entpacken in diesem Verzeichnis ausführen.

    Changelog:
    Update auf v0.95: Zum Übersetzen des Skripts in ein executable wurde statt einer zeitl. befristeten Version von PerlApp (Teil des "ActiveState Perl Dev Kit") die Freeware Strawberry Perl und PAR benutzt. Folge:
    xactxtract.exe ist nun zeitlich unbefristet nutzbar

  2. #2 Zitieren
    Lehrling
    Registriert seit
    Mar 2014
    Beiträge
    17
    Vielen Dank!
    Leider funktioniert es nicht mit "Dragensang DSA"

  3. #3 Zitieren
    Keksmaster  Avatar von Lord Demon
    Registriert seit
    Mar 2011
    Beiträge
    15.783
    Zitat Zitat von John Hannibal Smit Beitrag anzeigen
    Vielen Dank!
    Leider funktioniert es nicht mit "Dragensang DSA"
    Was meinst du mit Drakensang DSA? Den ersten Teil? Dann musst du das SDK von November 2007 nehmen. Mit neueren Versionen kommt das Spiel nicht klar.

  4. #4 Zitieren
    Lehrling
    Registriert seit
    Mar 2014
    Beiträge
    17
    Welches SDK? Strawberry Perl?
    Ich fürchte, es außerhalb meiner reichweite ist.
    Ich bin doch kein Programmierer. Na gut, man kann ohne Begleier-Stimme spielen.
    Trotzdem vielen dank!

  5. #5 Zitieren
    Keksmaster  Avatar von Lord Demon
    Registriert seit
    Mar 2011
    Beiträge
    15.783
    Zitat Zitat von John Hannibal Smit Beitrag anzeigen
    Welches SDK? Strawberry Perl?
    Ich fürchte, es außerhalb meiner reichweite ist.
    Ich bin doch kein Programmierer. Na gut, man kann ohne Begleier-Stimme spielen.
    Trotzdem vielen dank!
    Natürlich das Microsoft DirectX SDK. Ohne das kannst du keine neuen Vertonungen ins Spiel einbauen. Und um das zu verwenden muss man kein Progrmmierer sein. Bin ich auch nicht.

  6. #6 Zitieren
    Lehrling
    Registriert seit
    Mar 2014
    Beiträge
    17
    Das Problem ist die .xwb Dateien in .xwma zu extrahieren.
    Dieses Tool funktioniert leider nicht.

    [Bild: drak.gif]

    Ich kann .xwb Dateien in .pcm extrahieren (XWB Extractor).
    Softe Audio Tools soll .pcm in .wav konvertieren, aber ich habe kein Glück mit ihm.
    Vielleicht funktioniert das XWB Extractor schlecht and die pcm-Datei ist corrupt.

  7. #7 Zitieren
    Keksmaster  Avatar von Lord Demon
    Registriert seit
    Mar 2011
    Beiträge
    15.783
    Zitat Zitat von John Hannibal Smit Beitrag anzeigen
    Das Problem ist die .xwb Dateien in .xwma zu extrahieren.
    Dieses Tool funktioniert leider nicht.

    [Bild: drak.gif]

    Ich kann .xwb Dateien in .pcm extrahieren (XWB Extractor).
    Softe Audio Tools soll .pcm in .wav konvertieren, aber ich habe kein Glück mit ihm.
    Vielleicht funktioniert das XWB Extractor schlecht and die pcm-Datei ist corrupt.
    Das Tool von Nachgrimm ist für AFdZ gemacht. Gut möglich, dass es mit Drakensang nicht funktioniert. Ich habe es nie getestet.

    Sprachaufnahmen aus dem Spiel kannst du aber auch aufnehmen, wenn du während des Spielens einen Audiorekorder mitlaufen lässt. Die musst du dann eben noch zurechtschneiden.

  8. #8 Zitieren
    Lehrling
    Registriert seit
    Mar 2014
    Beiträge
    17
    In diesem Beispiel haben wir nur eine .wav-Datei (donner.wav).
    female_actor_02 ist aber eine Soundbank.
    OK, I give up. My german is not so good to explain.
    So: sounds must be attached to the actions.
    A few variants of sound for the attack etc.
    Can't understand how to edit it. I'll keep trying.

  9. #9 Zitieren
    Lehrling
    Registriert seit
    Mar 2014
    Beiträge
    17
    Ich habe einen XWB-Extractor gefunden.
    Jetzt habe ich alle WAV-Datei vom «Drakensang 1».
    Ich brauche die Strukrur von female_actor_02 zu kennen.
    Irgendwelche Ideen?

  10. #10 Zitieren
    Keksmaster  Avatar von Lord Demon
    Registriert seit
    Mar 2011
    Beiträge
    15.783
    Das SoundSet des Begleiters ist unwichtig. Dafür musst du Dialoge anlegen. Die Sounddateien kommen in die Spalte TakeSound der Tabelle _Story_DialogTakes. Die Wav Dateien dazu packst du in eine neue xwb Datei, die du in den Audio Ordner von AFdZ kopierst.

  11. #11 Zitieren
    Lehrling
    Registriert seit
    Mar 2014
    Beiträge
    17
    Ich verstehe aber nicht.
    Wohin kann ich die Sounds «fur Rhondra!» «Trinke Blut, mein Schwert» usw. setzen?

  12. #12 Zitieren
    Keksmaster  Avatar von Lord Demon
    Registriert seit
    Mar 2011
    Beiträge
    15.783
    Zitat Zitat von John Hannibal Smit Beitrag anzeigen
    Ich verstehe aber nicht.
    Wohin kann ich die Sounds «fur Rhondra!» «Trinke Blut, mein Schwert» usw. setzen?
    Mal eine Gegenfrage. Weißt du, wie man Dialoge erstellt? Wenn nicht, solltest du dich erst damit beschäftigen. Ohne Dialog nützen dir auch die Sounddateien nicht.

  13. #13 Zitieren
    Lehrling
    Registriert seit
    Mar 2014
    Beiträge
    17
    Leider nicht jetzt. Das ist mein Problem.
    Ich werde weiter versuchen.
    So habe ich 2 Spalten mit den Blob-Datei, 3 Spalten mit den Code-Datei (c47f08eb-7ac3-43f5-a09b-0992011fc631 usw), 4 Spallten mit Worten (backup_takes_pc_cuanousw).Ich mochte einen neuen Begleiter (pc_amazone) hinzufugen. Ergo brauche ich diese Spalten zu fullen. Hm... Habe keine Ahnung jetzt aber ich werde weiter untersuchen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •