Audio-Technik in Dreams
Die Audio-Engine von Dreams
Dreams enthält eine Reihe leistungsstarker Werkzeuge, die dir dabei helfen, die Audio-Performance deiner Kreationen zu verstehen. Die meisten Schöpfer werden sich nicht eingehender damit befassen müssen, aber für diejenigen, die mehr Leistung aus der Engine herauskitzeln wollen, können sie enorm praktisch sein! Du kannst die Werkzeuge verwenden, um herauszufinden, warum manche deiner Sounds ausfallen, verzerrt werden oder mit Verzögerung abgespielt werden.
Werfen wir zunächst einen Blick auf die Technologie der Audio-Engine in Dreams. Sound in Dreams kommt in der Regel von Soundgeräten in deiner Szene. Wenn ein Soundgerät durch Logik ausgelöst wird, erzeugt es eine Instanz von sich selbst. Es ist möglich, dass ein Gerät mehr als eine Instanz gleichzeitig erzeugt, wenn es z. B. erneut ausgelöst wird, bevor die vorherige Instanz vollständig abgespielt wurde.
Jede Sound-Instanz kann dann eine Reihe von Stimmen erzeugen. Ein Soundeffekt löst im Allgemeinen eine Instanz mit einer Stimme aus, wobei die Stimme das ist, was die Audio-Sample-Daten tatsächlich abspielt. Ein Instrumenten-Clip erzeugt eine Sound-Instanz, die mehrere Stimmen erzeugt, eine für jede Note im Clip. Hier ist ein Beispiel dafür, wie dieser Ablauf aussieht und was in diesen Einheiten enthalten sein kann.
Darüber hinaus verwendet Dreams eine Granular-Engine und jede Stimme spielt den Ton in einzelnen Brocken ab, die als Klangpartikel bezeichnet werden. Man könnte sie mit den Flecken in der Grafik von Dreams vergleichen!
Die Audio-Analyse
Mit diesem Werkzeug kannst du sehen, wie viele dieser Ressourcen deine Kreation zu einem bestimmten Zeitpunkt beansprucht. Ein hilfreiches Video über die Audio-Analyse findest du hier:
Wenn du Audio analysieren startest und deine Kreation spielst, sammelt das Werkzeug im Laufe der Zeit Informationen und zeigt dir die entsprechenden Zahlen während des Spielens an. Wenn du das Werkzeug beendest, erscheint die Analyseübersicht (siehe Abbildung unten). Dabei handelt es sich um einen Bericht, der die Daten deines Spieldurchlaufs als Diagramm darstellt, in dem du sehen kannst, welche Teile deiner Kreation ressourcenintensiv sind. Du kannst im Diagramm einen beliebigen Zeitpunkt auswählen und das Bild rechts neben dem Diagramm zeigt dir, was zu diesem Zeitpunkt passiert ist.
Die wichtigste Statistik hier sind die Audiokosten. Dies sind die kombinierten Kosten von Stimmen, Instanzen, Klangpartikeln und allen Effekten wie Hall, Verzögerung, Kompressoren usw. Je mehr sich dieser Wert dem Maximalwert nähert, desto mehr Stimmen wird die Engine herausschneiden, um zu vermeiden, dass er 100 % erreicht – in der Regel erhältst du eine Warnung, wenn dies eintritt. Wenn die Kosten 100 % erreichen würden, wäre Dreams nicht mehr in der Lage, Audio richtig auszugeben. Daher wird die Engine alles tun, um das zu vermeiden.
Instanzen und Stimmen haben Höchstwerte und wenn diese erreicht werden, kann es sein, dass neue Sounds nicht abgespielt werden oder dass die, die bereits abgespielt werden, beendet werden. Die Grenze für Instanzen liegt bei 128. Bei Stimmen ist es etwas komplizierter, aber wir haben das Diagramm ebenfalls auf 128 begrenzt. Theoretisch könntest du mehr Stimmen laufen lassen, aber normalerweise haben sie ab diesem Wert erheblichen Einfluss auf die Performance, je nachdem, auf welchem System Dreams läuft.
Je mehr Stimmen und Instanzen ausgeführt werden, desto mehr steigen die Audiokosten. Anhand des Diagramms solltest du herausfinden können, wo optimiert werden muss.
Beachte, dass nicht alle Stimmen gleich sind. Die Granular-Engine führt dazu, dass einige Stimmen mit mehr sich überlagernden Klangpartikeln abgespielt werden als andere und daher viel mehr kosten. Die Klangpartikelkosten sind der Durchschnitt dieser Kosten für alle abgespielten Sounds in der Szene. Die meisten Stimmen haben durchschnittliche Klangpartikelkosten von 1x, aber diese können stark ansteigen, wenn du die Anpassungen für Granularsynthese und Granularrandomisierung in den Soundgeräten änderst. Die folgenden Diagramme zeigen Beispiele für teure und billige Einstellungen für die Klangpartikelüberlagerung.
Du kannst die Klangpartikelüberlagerung auf der Seite „Granularsynthese“ im Anpassungsmenü eines Sounds einstellen. Diese Anpassung erscheint auch auf der Seite „Granularrandomisierung“, wo eine Reihe anderer Regler ebenfalls die Klangpartikelkosten beeinflussen können.
Stimmen können auch teurer werden, wenn du Sound-Funktionen wie Oszillator, Verzerrung, Dynamikkompressor usw. aktivierst. Die billigsten Stimmen sind in der Regel einfache Soundeffekte, die ohne besondere Anpassungen abgespielt werden.
Wie kannst du diese Informationen also nutzen, um deine Kreationen zu optimieren? Am häufigsten wirst du den polyphonischen Grenzwert deiner Sounds herabsetzen wollen. Dies ist ein Höchstwert für die Anzahl der Stimmen, die von einem Sound erzeugt werden können. Wenn du sorgfältig vorgehst, wirst du wahrscheinlich nicht einmal einen Unterschied bemerken. Hier sind einige Beispiele, bei denen eine Reduzierung der Polyphonie nützlich sein könnte:
- Ein Musikclip, der viele sehr lange Noten übereinander spielt, z. B. ein Klavier oder ein Synthesizer mit einer langen Halten-Hüllkurve.
- Ein Explosions- oder Waffensound, der sich selbst überlagert, weil er in sehr schneller Folge hintereinander ausgelöst wird.
Der polyphonische Grenzwert ist normalerweise auf 20 voreingestellt, was bedeutet, dass die meisten Sounds unnötigerweise 20 Instanzen von sich selbst abspielen können, z. B. wenn sie wiederholt sehr schnell ausgelöst werden.
Eine weitere Möglichkeit besteht darin, Sounds mit starker Klangpartikelüberlagerung zu suchen und diese zu reduzieren. Dabei ist jedoch zu beachten, dass dies in der Regel den coolen Effekt beeinträchtigt, den diese Sounds durch Granularoptionen erhalten haben.
Alternativ kannst du auf der Soundeffekt-Seite einige oder alle dieser Optionen deaktivieren, wodurch die meisten dieser Sounds billiger werden sollten.
Und wenn nichts anderes hilft, solltest du dich in deinen Szenen nach Sounds umsehen, die du gänzlich löschen kannst.
Audio-Thermometer und Sound-Bereitschaft
Reden wir über das Audio-Thermometer! Aber zuerst werfen wir einen erneuten Blick auf die Engine.
Das Audio in Dreams besteht aus Samples, die in Abschnitte unterteilt werden. Samples sind das, was deine Mikrofonaufnahmen erzeugen, und Abschnitte sind das, was du im Abschnitt-Planer eines Sounds siehst.
Die Gesamtzahl an einzigartigen Samples ist begrenzt (im Thermometer als „einzigartige Geräusche“ bezeichnet). Außerdem gibt es eine Obergrenze für den Speicher, den diese Samples verwenden.
Zum Beispiel könnten dir die Samples ausgehen, wenn du sehr viele sehr kurze Aufnahmen hast, oder dir könnte der Speicher ausgehen, wenn du nur ein paar wenige, dafür aber sehr lange Aufnahmen hast. Die andere Grenze ist die Anzahl der importierten oder aufgenommenen benutzerdefinierten Sounds. Hier gibt es einen wichtigen Grundsatz, der das gesamte Audiosystem von Dreams untermauert und definiert:
Alle Mm-Audioinhalte wie Instrumente oder Effekte aus den Sammlungen haben 0 Downloadkosten.
Audiodaten sind in der Regel sehr teuer in Bezug auf Speicher und Downloadzeiten, daher kann man durch die Verwendung eines Standard-Sample-Sets in Dreams dazu beitragen, dass CoMmunity-Kreationen extrem schnell geladen werden. Wenn du Audioinhalte verwendest, die du selbst oder andere hochgeladen haben, wirkt sich das auf die Ladezeit der Kreationen aus – beispielsweise werden die Levelübergänge länger und nicht so nahtlos. Dies wirkt sich noch deutlich stärker aus, wenn du lange Audio-Samples wie ganze Lieder importiert hast.
Daher ist es immer sehr viel besser, Musik zu verwenden, die in Dreams mit den Mm-Instrumenten oder Derivaten von ihnen erstellt wurde. In vielen Fällen ist die Mm-Sample-Bibliothek mehr als ausreichend, um mit den eingebauten Effekten eine große Vielfalt an Sounds zu erzeugen. Wenn du Wert darauf legst, dass deine Kreationen sehr schnell geladen werden, solltest du zumindest sicherstellen, dass deine Audioimporte so weit wie möglich in ihrer Größe reduziert und wiederverwendet werden.
Es kann nicht genug betont werden, dass das Schneiden von Samples im Abschnitt-Planer eines Sounds keine dieser Kosten reduziert. Die Samples selbst können nach der Aufnahme nicht mehr verändert werden, daher solltest du immer versuchen, sie möglichst nah an der Form zu importieren, in der du sie verwenden möchtest. Wenn du eine Datei in Dreams importierst, von der Abschnitte als Sound verwendet werden sollen, solltest du dafür sorgen, dass sie bereits bearbeitet ist und möglichst viel Stille oder nicht benötigte Teile entfernt wurden. Wenn du einen der Höchstwerte überschreitest, kannst du deine Kreation weder freigeben noch speichern.
Hier ein Beispiel für zwei Sounds und ihre Kosten. Der Sound links verwendet zwei Abschnitte aus zwei verschiedenen Samples, der rechts zwei Abschnitte aus nur einem Sample. Der Sound rechts ist billiger, aber man hätte ihn noch billiger machen können, indem man die ungenutzten Teile vor dem Import herausgeschnitten hätte. Der Sound links ist ziemlich ineffizient! Bei Mm bevorzugen wir es, Soundeffekte und Instrumente mit Abschnitten zu erstellen, die aus nur einem Sample herausgeschnitten wurden, um die Gesamtkosten zu minimieren.
Es gibt einen sehr wichtigen Höchstwert, der schon immer existierte, aber nicht immer offen angezeigt oder erklärt wurde. Er nennt sich Sound-Bereitschaft.
Damit ein Sound beim Auslösen abgespielt werden kann, müssen seine Audiodaten „geladen“ sein. Wenn die Audiodaten nicht bereit sind, kommt es zu einer Verzögerung, wenn der Sound ausgelöst wird. Bei Musik oder bei Sprachaufnahmen, die zeitgleich zu Animationen abgespielt werden sollen, wirkt sich dies sehr negativ aus.
Aber so sehr wir Audio auch lieben – wenn wir jeden einzelnen Abschnitt aus jedem einzelnen Sound im Voraus laden würden, hätten wir keinen Speicher mehr für all die anderen coolen Elemente des Spiels. Daher muss die Engine ständig Kompromisse eingehen. Wir nennen dieses System Anheften: Jeder Sound versucht sicherzustellen, dass zu jeder Zeit mindestens einer seiner Abschnitte abspielbereit ist. Das hilft, aber wenn du zu viele Sounds in deiner Kreation hast, die alle versuchen, verschiedene Audioteile zu laden, wird dir dennoch irgendwann der Speicher ausgehen. Dann werden die Probleme mit verzögertem Abspielen gelegentlich wieder auftauchen.
Bisher geschah dies in Dreams im Hintergrund, aber jetzt wird eine Warnung angezeigt und du kannst ein spezielles Werkzeug verwenden, um herauszufinden, welche Sounds schuld daran sind.
Bei deinen Kreationen – vor allem bei solchen, die von anderen in ihre Levels gestempelt werden sollen – solltest du immer versuchen, diese Thermometerkosten zu minimieren. Niemand möchte dein Element stempeln und dann feststellen, dass seine Sprachausgabe dadurch verspätet abgespielt wird! In diesem Fall kann man jedoch noch immer optimieren, indem man andere Dinge weglässt. Sehen wir uns an, wie das geht.
Fangen wir mit dem Thermometer-Balken im Soundmodus an, der angezeigt wird, sobald die Sound-Bereitschaftskosten steigen. Wir haben dem Soundmodus das Menü Ein-/Ausblenden hinzugefügt, damit du das Thermometer durchgehend einblenden kannst. Normalerweise musst du dich aber nur darum kümmern, wenn die Sound-Bereitschaft-Obergrenze erreicht ist. Wenn du auf diesen Balken klickst, wird das Sound-Bereitschaft-Thermometer geöffnet, wo du Mehr Details anwählen kannst, um dir die 20 teuersten Sounds in der Szene anzeigen zu lassen. Denk dran, hierbei geht es nur um die Sound-Bereitschaftskosten!
Außerdem ist eine Aufschlüsselung nach Soundkanälen enthalten. Du kannst einen beliebigen Sound in der Liste auswählen, um zu seiner Position in deiner Szene gebracht zu werden (möglicherweise musst du ihn aus einem Mikrochip oder einer Zeitachse ausgraben). Eine blau blinkende Anzeige weist außerdem eine Weile lang darauf hin, wo sich der Sound befindet.
Du könntest feststellen, dass einige Sounds mehrfach in der Liste erscheinen. Wenn du dein Sound-Bereitschaftsbudget freischaufeln möchtest, musst du dich um diese Mehrfacheinträge kümmern, da sie allesamt Speicher belegen.
Als Nächstes solltest du entweder die teuersten Sounds löschen oder sie im Abschnitt-Planer zurechtschneiden. Das Schneiden ändert zwar nichts an den Audiokosten, wohl aber an den Kosten für die Sound-Bereitschaft, da sich nur die Kosten für einen Abschnitt und nicht die für das ganze Sample niederschlagen. Hier ein Beispiel für zwei Sounds, die verschiedene Teile eines längeren Samples verwenden.
Die Kosten ergeben sich aus dem Teil des Samples, den die beiden Abschnitte verwenden – die gemeinsam genutzten Teile werden nicht doppelt gezählt!
Sehr häufig werden Probleme mit der Sound-Bereitschaft durch unnötig lange Sounds verursacht. Hier ein Beispiel: Ein Umgebungs-Hintergrundsound, Forest Day, verbraucht 5,24 % des Budgets – fast so viel wie das gesamte Lied, das ebenfalls in dieser Szene vorkommt! In diesem Fall liegen wir weit unter dem Budget, aber wenn es nötig wäre, könnten wir den „Forest Day“-Sound wahrscheinlich in seinem Abschnitt-Planer zurechtschneiden.
Hier ein weiterer Tipp: Importierte Audiodateien wie lange Musikstücke, die im Voraus aufgezeichnet wurden, verbrauchen sehr schnell und ineffizient das Budget für die Sound-Bereitschaft. Dies ist einer der Gründe, warum die Verwendung von in Dreams erstellter Musik immer viel effektiver ist, wenn der Ton reibungslos laufen soll.
Das war‘s auch schon. Wir hoffen, dass dir diese Funktionen weiterhelfen. Denk daran, dass es viele Grenzfälle, knifflige Elemente und Dinge, die man beachten muss, gibt. Einige Beispiele:
- Jeder Sound bereitet nur einen seiner Abschnitte vor (mit Ausnahme des nächsten Punkts!). Wenn es also mehr als einen gibt, musst du vielleicht ein bisschen forschen, um herauszufinden, welcher das ist.
- Die Ausnahme hierbei sind Instrumente mit aktivierter Reihenzuordnung! Diese bereiten einen Abschnitt aus jeder Reihe in ihrer Notenrolle vor, die Noten enthält. Dadurch können sie ziemlich teuer werden!
- Die Kosten von Sounds, die fast die gleichen Teile eines Samples verwenden, aber nicht ganz, entsprechen dem Teil des Samples, den sie verwenden, auch wenn er gemeinsam genutzt wird. So kannst du sehen, in welchem Ausmaß sie vorbereitet werden müssen. Wie oben erwähnt verursachen gemeinsam genutzte Audio-Teile jedoch keine doppelten Gesamtkosten. Im Grunde werden Sounds in der Liste zu separaten Einträgen, wenn sie unterschiedlich zugeschnitten sind, auch wenn sie beinahe identische Audiodaten verwenden.
- Derzeit gibt es keine Möglichkeit, auszuwählen, welcher Abschnitt vorbereitet werden soll, aber wer weiß, was die Zukunft bringt!
Das Dreams-Benutzerhandbuch ist ständig in Arbeit. Achtet auf Aktualisierungen, da wir im Laufe der Zeit weitere Lern-Ressourcen und Artikel hinzufügen werden.