previous up next
Vorherige Seite: Sound Aufwärts: NiX OpenGL Demo Nächste Seite: warum kein mpg?

Synching

Wichtig für einen stimmigen Gesamteindruck ist, das Grafik und Musik aufeinander abgestimmt sind, das sie gesynct sind.7 Grafik- und Soundeffekte sollen also synchron laufen. Dazu gibt es prinzipiell zwei Möglichkeiten: 1) der Sound synchronisiert sich zu der Grafik oder 2) die Grafik synchronisiert sich zum Sound.

Unsere akustische Wahrnehmung ist jedoch sehr viel ausgeprägter (besser) als die visuelle. So nimmt auch jeder Laie Unregelmäßigkeiten in der Tonhöhe (Leiern) oder in der Geschwindikeit (``aus dem Rythmus'') wahr. Veränderungen von Farbgebung oder Helligkeit eines Bildes, oder der für die Animation so wichtigen Frame Rate8 werden erst bei sehr viel größeren relativen Abweichungen erkannt. Es kommt also darauf an, das der Ton möglichst stabil läuft. Es ist also die obige zweite Möglichkeit zu wählen.

Zusätzlich zu den eigentichen musikalischen Daten werden in die Musik sog. Syncmarken eingefügt. Diese steuern dann die verschiedenen Aspekte des Demos, z.B. das ein neuer Effekt angezeigt werden soll. Die Musikroutine, welche in einem zweiten Thread die Musik berechnet, holt sich in jedem Bearbeitungszyklus die aktuellen Sounddaten9 und berechnet daraus den Sample Stream für die Sound Hardware. Trifft sie dabei auf eine Syncmarke, so legt sie diese in eine Queue für die weitere Bearbeitung durch den Grafikthread ab.

Der Grafikthread berechnet bei jedem Durchlauf genau ein Bild/Frame, welches als Abschluß des Laufs von der Grafikhardware ausgegeben wird. Am Anfang des Laufs wird in der Queue geschaut, ob eine neue Syncmarke eingetroffen ist. Ist eine vorhanden, so werden die damit verknüpften Aktionen ausgeführt. Die Zustandswechsel der Grafik werden also durch die Soundroutine gesteuert.

Wichtig ist nun, das der Soundthread mit einer höheren Priorität läuft als die Grafik. Dadurch ist sichergestellt, das es keine Beeinträchtigung der Soundberechnung gibt. Mit etwas übung kann man leicht sehen, das die Framerate im Demo von Effekt zu Effekt stark variert10, während die Musik auf jeden Fall ohne Probleme durchlaufen sollte.