Multi Speed Musikstücke

Aus C64-Wiki
(Weitergeleitet von Multi Speed)
Zur Navigation springenZur Suche springen

Multi-Speed-Musikstücke sind Musikstücke für den C64, bei denen die Musikroutine mehr als 1x pro Frame aufgerufen wird.

Funktionsweise[Bearbeiten | Quelltext bearbeiten]

Double-Speed-Musik in einer Music-Competition

Der Sinn einer Multi-Speed-Musikroutine ist, die SID-Register innerhalb eines Frames öfter als 1× neu zu beschreiben, um damit ein deutlich differenziertes Klangbild zu erhalten. So können mit Multi-Speed-Musikstücken "Instrumente" (i.S.v. Klänge) erzeugt werden, die so nicht 1:1 in Single-Speed möglich sind.

Die Häufigkeit, mit der der SID neu programmiert wird, kann auch per CIA-Timer-IRQ getrieben werden, welches höhere Flexibilität bietet, sich jedoch nicht gut mit gleichzeitiger Nutzung von Rasterzeilen-Interrupts verträgt: Wenn beispielsweise eine Rasterbar angezeigt wird, kommt der Timer-Interrupt erst danach durch. Ließe man den Interrupt parallel zu, würde das Zeitverhalten beeinflusst - die Rasterbar würde flackern. Ein frame-basierter mehrfacher Aufruf der Musikroutine stellt für Programmierer deshalb die optimale Lösung dar, um volle Kontrolle über den Bildschirmaufbau zu behalten, wobei die Aufrufe der Musikroutine idealerweise gleichmäßig über den Frame verteilt sein sollten.

Aufgrund des innerhalb eines Frames mehrfachen und somit in der Regel auch höheren Verbrauchs an Rasterzeit findet man Musiken mit Double-Speed (oder höher) überwiegend in weniger effektlastigen Demoparts. In Spielen werden sie sehr selten verwendet, da in der Regel nicht genug CPU-Zeit dafür übrig ist. Ausnahmen können Titelbilder sein oder Spiele, in denen kein Scrolling oder Sprite-Multiplexing stattfindet. Gern werden Multi-Speed-Musikstücke in Notes genutzt, da beim reinen Anzeigen von Text die durch das Abspielen von Musik verbrauchte Raster- bzw. Rechenzeit keine große Rolle spielt. Natürlich muss der Notemaker dies unterstützen (Ultraflash-Noter V3 z.B. kann bis Quad-Speed abspielen).

Bei der Teilnahme an einer Music Competition sind Multi-Speed-Stücke bei den Composern ebenfalls beliebt, da der C64 komplett für das Abspielen der Musik zur Verfügung steht. Neben der (hoffnungsvollerweise) sich von gewöhnlichen Stücken abhebenden Klangqualität kann man beim Abspielen eines solchen Beitrages oft auch optisch sehen, um welche Art Musik es sich handelt: Vor jedem Aufruf wird die Rahmenfarbe verändert, nach Abschluss der Play-Routine wieder zurückgesetzt, so dass genau zu sehen ist, wie viel Rasterzeit verbraucht wird. Bei einem Single-Speed-Stück sieht man folglich nur einen solchen Balken, beim Double-Speed-Sound sind es dann zwei, usw.


Gängige Faktoren[Bearbeiten | Quelltext bearbeiten]

Häufig anzutreffende Geschwindigkeiten sind:

  • Single-Speed: Die Play-Routine der Musik wird 1× pro Frame aufgerufen (Standard für fast alle Spiele und viele Demo-Musiken).
  • Double-Speed: Die Play-Routine der Musik wird 2× pro Frame aufgerufen.
  • Quad-Speed: Die Play-Routine der Musik wird 4× pro Frame aufgerufen.

Es gibt aber durchaus auch beispielsweise 3×, 8×, 9×, 12× oder 16× Speed-Tunes. Mit Hilfe des "One Rasterline Trackers" von Hermit wären auch sehr viel höhere Raten möglich.

Je nach dem, mit welchem Programm das Musikstück erstellt wurde, gibt es eine Hauptabspielroutine, die nur einmal pro Frame aufgerufen wird, und eine oder mehrere zusätzliche Routinen, die im selben Frame dann später aufgerufen werden müssen und welche dann nur an bestimmten SID-Registern Änderungen vornehmen. Bei anderen Musikstücken wird lediglich die Standard-Play-Routine einfach mehrmals pro Frame aufgerufen.

Half Speed[Bearbeiten | Quelltext bearbeiten]

Ziemlich selten trifft man auch auf das Gegenteil eines Double Speed Musikstücks, nämlich ein Half Speed Musikstück. Da bei Single Speed bereits die Routine 1× pro Frame aufgerufen wird, ist ein "halber" Aufruf nicht möglich - gemeint ist hier, dass die Musikroutine nur jeden zweiten Frame aufgerufen wird. Dies muss - wie bei Multi-Speed auch - natürlich beim Komponieren bereits berücksichtigt werden, und kann die gefühlte Qualität eines Musikstücks durchaus negativ beeinflussen. Gemacht wird es deshalb nur dann, wenn dringend Rasterzeit gespart werden muss, z.B. in einem Spiel, welches scrollt und in einem der von der Musikroutine nicht beanspruchten Frames dann die gesparte Zeit nutzen kann, um das Farb-RAM umzukopieren. Ein bekannter Vertreter von Half Speed Musik ist das Spiel Boom (Brainstorm).

Abspielen von Multi-Speed .SID-Files auf dem C64[Bearbeiten | Quelltext bearbeiten]

Einige Beispiele für Multispeed-Tunes, abgespielt auf PlayEm64V1.0, wobei in Hellblau im Border angezeigt wird, an welchen Rasterzeilen im Frame ein Aufruf erfolgt und wie viel Rasterzeit verbraucht wird.

Sowohl SIDPlay64 als auch PlayEm64 können - neben herkömmlichen .SID-Files - auch Multispeed-Tunes auf dem C64 abspielen. Dazu muss man lediglich (z.B. auf dem PC) die Datei-Endung ".PRG" an den Dateinamen eines .SID-Files hängen und die so behandelten Files per Drag-and-Drop auf ein Diskimage mit der jeweiligen Software ziehen, welche dann aus dem SID-Header-Informationen automatisch eine Abspielroutine via CIA-Timer-IRQ erstellt.

Sonstiges[Bearbeiten | Quelltext bearbeiten]

  • Nicht zu verwechseln ist der Multi-Speed-Ansatz mit Samples (Digis), bei denen der SID mit wesentlich höherer Frequenz mit Sample-Daten programmiert werden muss.
  • Normalerweise erfolgt der Aufruf der Musikroutine gleichmäßig über den Frame verteilt, es finden sich aber auch Ausnahmen zu dieser Regel.
  • Die "Holzhammermethode", eine Musikroutine eines Multispeed-Tunes einfach an einer Rasterposition x mal direkt hintereinander aufzurufen, findet sich oft in älteren Rips, führt aber zu einem verfälschten Klang.
  • Das .SID-Format zum Abspielen von C64-Musik auf modernen Systemen wie z.B. PC sieht zwei Modi vor: Rasterinterrupt-basiertes Abspielen und CIA-Timer-getriggertes Abspielen, ersteres jedoch leider nur 1x pro Frame - mehrmals pro Frame ist nicht vorgesehen. Beim Erstellen einer .SID-Datei eines Multi-Speed-Sounds wird deshalb eine kleine Routine davor gehängt (oder hinten dran), die den CIA-Timer auf die korrekte Abspielgeschwindigkeit des Stücks einstellt. Das erklärt auch, warum Multi-Speed-Stücke im .SID-Format oft merkwürdige Init-Adressen haben, z.B. $0FF4 anstatt $1000. Im SID-File-Header wird dann als Abspielart CIA-Timer-basiert eingestellt. Um solche Stücke wieder auf dem C64 abzuspielen, muss entweder neben dem Header ggf. auch diese zusätzliche CIA-Timerprogrammierung wieder entfernt werden, oder man nutzt ein Tool, welches .SID-Dateien direkt abspielt (siehe oben).

Kritik[Bearbeiten | Quelltext bearbeiten]

Beim Aufkommen von Multi-Speed-Musik war deren Sinn zunächst umstritten: Während einige bei den auf diese Weise generierten, ungewöhnlichen SID-Klängen überrascht aufhorchten, meinten andere wiederum, dass die Multi-Speed-Musiken zwar anders klingen, aber meist eher hässlich und unmelodisch - der doppelte (oder vierfache, etc.) Verbrauch an Rechenzeit wäre dies nicht wert. Ähnlich wie eine perfekte Spielegrafik ggf. nicht über ein unterdurchschnittliches Spielprinzip hinwegtäuschen kann, macht ein ausgefallener Klang allein auch noch kein gutes Musikstück, eine ansprechende Melodie sollte es dann doch schon sein. C64-Klassiker von Rob Hubbard, Thomas Detert, Matt Gray oder Ben Daglish kommen allesamt ohne Multi-Speed aus. Über die Jahre wurde Multi-Speed aber von den Composern mehr und mehr als zusätzliches Werkzeug zum Erstellen guter Musikstücke gesehen statt als Selbstzweck, so dass sich Multi-Speed-Stücke mittlerweile einen festen Platz im Herzen der SID-Liebhaber gesichert haben.

Weblinks[Bearbeiten | Quelltext bearbeiten]