Wer auf Videospiele steht und innerhalb der letzten 40 Jahre nicht unter einem Stein gelebt hat, wird wohl oder übel schon mal über das Thema „Chiptunes“ gestolpert sein.
Einfach gesagt sind Chiptunes Musikstücke, welche zu einhundert Prozent von, bzw. auf einem Computer erzeugt werden. Dabei kommen also keine Instrumentensamples oder Gesangsstücke zum Einsatz, sondern nur vollständig synthetische Klänge, welche vom jeweiligen Soundchip des Computers generiert werden. Häufig wird der Begriff Chiptune mit „8-Bit-Musik“ gleichgesetzt, da der Ursprung der computergenerierten Musik im Heimcomputer- und Konsolen-Bereich liegt.
Fun Fact: Die 8 Bit beziehen sich dabei nicht auf eine Anzahl von Farben oder gar die Samplingtiefe der Musikstücke, sondern auf die Prozessorarchitektur der damaligen Geräte, auf welchen solche Chiptunes entstanden sind.
Tatsächlich sagt die Prozessorarchitektur aber kaum etwas über die Audiofähigkeiten eines Gerätes aus. Viele 8-Bit-Rechner können gar keinen Sound oder maximal ein paar Pieptöne ausgeben. Einige Geräte hatten dedizierte Soundchips verbaut (wie z.B. der Commodore 64 mit seinem SID-Chip), um mehrere Töne parallel zu erzeugen und im Extremfall die gleichen Möglichkeiten zu bieten, die man mit einem analogen Synthesizer auch hätte. Jedes Gerät funktioniert dabei unterschiedlich und es mussten stets spezielle Routinen programmiert werden, um die jeweilige Soundhardware möglichst ideal auszunutzen.
Fun Fact: Während z.B. mit einem NES (Nintendo Entertainment System) fünf Stimmen gleichzeitig abgespielt werden können (drei für Melodien, eine für Percussion und eine für PCM-Wave-Files), kann der C64 nur drei Töne parallel erzeugen. Dafür lässt sich die Klangfarbe der drei Stimmen vielfältiger und flexibler gestalten (z.B. Änderung der Stimmen während der Laufzeit).
Das schöne daran ist, dass durch diese technischen Limitationen ganz eigene, nur auf einer spezifischen Plattform lauffähige Chiptunes entwickelt wurden. Richtige Freaks erkennen anhand der Klangfarbe eines Chiptunes sofort, ob es sich um ein Stück für z.B. das NES oder den C64 handelt. Diese Vielfältigkeit, bzw. spezielle „Identität“ von Musikstücken ist meiner Meinung nach im Lauf der Jahre verloren gegangen. Heutzutage merkt man keinen Unterschied, ob ein Soundtrack von einer CD, einer Nintendo-Konsole oder einer Playstation abgespielt wird. Echt schade!
Doch es ist nicht alle Hoffnung verloren! Auch heute werden noch Chiptunes produziert! Sei es nun als akustische Begleitung in einem Indie-Spiel (siehe Artikel 205), oder als Hintergrundgedudel in einem Stück fragwürdiger Keygen-Software (siehe Artikel 267). Und selbst in der elektronischen Musikszene sind Chiptunes voll angekommen und werden regelmäßig in Mixe eingearbeitet, oder gar live mit Game Boy und anderer Retro-Hardware auf Konzerten vorgetragen. Fucking awesome! 🙂
Uff, wie langweilig. Was soll denn überhaupt diese Geschichtsstunde über alte, piepsige Musik? Nun, ich wollte den heutigen Beitrag nutzen, um euch auf ein paar spezielle Chiptunes aufmerksam zu machen. Darf ich vorstellen? Hier kommen die „System Beeps“:
Bei System Beeps handelt es sich um ein 2019 veröffentlichtes Chiptune-Album des russischen Komponisten Alex S., in der Szene besser als „shiru8bit“ oder „Shiru“ bekannt. Hm ok, und was ist an dem Album so besonders? Viele aktuelle Chiptunes entstehen auf moderner Hardware und sind nur auf „retro“ getrimmt. Einige Komponisten verwenden aber auch zeitgenössische Tools und erstellen Chiptunes auf originaler Hardware, welche dann auch (z.B. in Form eines NES- oder Game Boy-Moduls) auf echten Geräten lauffähig sind.
System Beeps kombiniert diese beiden Vorgehensweisen. Während die eigentlichen Kompositionen auf moderner Hardware entstanden sind, wurde das Album für die Ausgabe auf dem PC Speaker produziert. Moment – was? Der PC Speaker?! Das ist so ziemlich die primitivste Form, überhaupt irgendwelche Klänge zu erzeugen. Wie zur Hölle soll man darauf ein ganzes Album abspielen? Damit das klappt, hat Shiru ein eigenes Audioplugin entwickelt, welches Daten aus MIDI-Dateien und einem MML-ähnlichen Beschreibungsformat für Musik in Textform entgegennimmt und in für den PC Speaker verständliche Frequenzen konvertiert.
Fun Fact: Im Endeffekt werden dabei die gleichen Techniken angewandt, welche Spielentwickler in den Achtzigern und Neunzigern für die Ausgabe von Musik über den PC Lautsprecher (siehe z.B. hier und hier) verwendet haben. Dabei hat der gute Shiru alles versucht, um das maximale Potential aus dem extrem beschränkten Systemlautsprecher herauszuholen. Abgefahren!
Ok, das ist beeindruckend, aber immer noch nichts Außergewöhnliches. Der entscheidende Faktor, der System Beeps für mich zu etwas Besonderem macht, ist die Tatsache, dass das Album nicht nur als digitaler Download im MP3- oder FLAC-Format auf Bandcamp veröffentlicht wurde, sondern man auch kostenlos das Album im Form eines MS-DOS-Programms herunterladen kann, welches auf einem alten IBM-PC lauffähig ist!
Na, wenn das mal keine Einladung ist, dass wir uns das Programm etwas genauer ansehen! 😉 Zumindest in einer DOSBox scheint das Album schon mal einwandfrei zu laufen.
Fun Fact: Die bunten Balken sind nicht etwa Fehler bei der Bildausgabe, sondern ein netter Equalizer-Effekt, der beim Abspielen passend zum Takt der Musik im Vordergrund ausgegeben wird.
Aber sind wir mal ehrlich – es geht doch nichts über echte Hardware! Laut Beschreibung ist das Programm bereits ab MS-DOS 3.3 auf einem Intel 8080 mit 4,77 MHz und 256 kB RAM lauffähig. Ich denke mit dem Philips-PC aus Artikel 309 samt seiner 80286 CPU (10 MHz) und 640 Kilobyte Arbeitsspeicher sollten wir doch ein mehr als geeignetes System zur Verfügung haben.
Ob wir das Album wirklich auf der Kiste zum Laufen bekommen? Es gibt nur einen Weg das herauszufinden. Das nur 42 Kilobyte (!) große Programm (sb.com) ist schnell auf eine Diskette kopiert und auf den Philips-PC übertragen:
Leider bleibt der Bildschirm beim Start komplett dunkel und Musik ist auch nicht zu hören. Was ist das Problem?
Mist – eine Systemanforderung haben wir übersehen! Ich zitiere mal die beiliegende README-Datei: „The compilation is confirmed to work on lower end XT-compatibles with Intel 8088 @ 4.77 MHz, 256K RAM, CGA video, under DOS 3.3 or better.“
Na, ist euch das Problem aufgefallen? Wir haben keine CGA-Grafikkarte! 🙁 Zur Erinnerung: In dem Philips-PC ist nur eine Hercules-Karte verbaut, welche lediglich eine monochrome Grafikausgabe unterstützt. Zugegeben – etwas anderes würde auch keinen Sinn machen, da wir auch keinen CGA-Monitor haben, aber trotzdem ist es schade, dass wir so das Album nicht abspielen können. Und jetzt? 🙁
Natürlich habe ich probiert, das Album mit einem der in Artikel 321 getesteten Emulatoren zu starten, leider ohne Erfolg. Aufgeben ist nicht so mein Ding, aber um ehrlich zu sein, habe ich keine Idee, was wir jetzt noch tun könnten. Tja, wenn man gar keinen Plan hat, hilft manchmal nur eins: Nett fragen! 🙂
Diese Anfrage wurde an einem Freitagabend um halb elf nach Russland geschickt. Um ehrlich zu sein, habe ich mit keiner oder wenn doch mit einer ernüchternden Antwort im Sinne von „geht nicht, weil…“ gerechnet, aber sage und schreibe 42 Minuten später (!) hatte ich folgende Antwort bei mir im Postfach:
Das kann nicht sein?! Wie zur Hölle soll der gute Alex das so schnell angepasst haben? Ungläubig habe ich die neue Hercules-Version des Albums („sbh.com“) auf den Philips-PC kopiert:
Unfassbar. Tatsächlich lässt sich die für den monochromen Grafikmodus angepasste Version starten…
…und wir können uns die einzelnen Tracks auf unserem Philips-PC reinziehen. Ich fasse es nicht!
Fun Fact: Dank des in Artikel 314 verbauten Schalters am Rahmen des 3,5“-Diskettenlaufwerks können wir sogar die Lautstärke des PC Speakers zur Laufzeit zwischen lauter und leiser verändern! 😉
Mir geht, bzw. ging es im heutigen Beitrag viel weniger darum, groß etwas über Chiptunes, den PC Speaker oder gar das Album System Bleeps zu erzählen, wenn auch der Artikel so getauft wurde. Vielmehr wollte ich euch die – aus meiner Sicht – unfassbare Geschichte erzählen, wie die monochrome Hercules-Version des Albums letztendlich zu Stande kam.
Man muss sich das mal auf der Zunge zergehen lassen: Im Endeffekt hat der gute Shiru das Problem erkannt, den Quellcode entsprechend angepasst, das in Assembler (!) geschriebene Programm kompiliert (bzw. assembliert), in einem Emulator (DOSBox) getestet (weil er keine originale Hardware zur Verfügung hatte), die Dokumentation aktualisiert, die Dateien neu zusammengepackt, hochgeladen und mir geantwortet. Und das alles innerhalb von nicht mal einer Stunde?! WTF…
Ich arbeite auch schon seit einigen Jahren im IT-Umfeld und habe (gerade früher) gerne mal was programmiert, aber so etwas habe ich noch nicht gesehen. Selbst wenn es nur ein paar Zeilen gewesen sein sollten – immerhin reden wir hier von der Anpassung einer Software auf einen anderen Grafikstandard. Wahnsinn. Zu allem Überfluss steht uns dank „CC-BY-Lizenz“ sogar der Quellcode zur Verfügung und das Recht, diesen nach Belieben zu verändern und zu vertreiben, solange wir den originalen Autor nennen. Auf meine verdutzte Nachfrage, wie das alles so schnell umgesetzt worden sein kann, hat mir Alex dann noch folgendes geantwortet:
Fun Fact: Wer sich wundert, auf was der zweite Satz bezogen ist: Ich habe natürlich gleich ein Bild des funktionierenden Programms auf dem monochromen Bildschirm zurückgeschickt! 😉
Was für eine Legende! Natürlich habe ich es nicht lassen können, mir den Assembler-Quellcode anzusehen, um herauszufinden, was Alex gemacht hat, damit auch der Hercules-Grafikmodus unterstützt wird. Im Endeffekt werden (wie bereits in Artikel 321 erklärt) die Grafiken an der Adresse 0xb0000 im Videospeicher abgelegt (anstelle der Adresse 0xb8000 für CGA-Grafiken). Diese Änderung zieht sich – in Form einer eigens dafür angelegten Variable durch den gesamten Code. Ebenso wird die Systemroutine zum Setzen des Videomodus (INT 10,0) unterschiedlich aufgerufen. Der Wert „3“ steht hierbei für CGA, „7“ steht für den monochromen Textmodus.
Fun Fact: Die Variable „TEXT_VRAM“ wird noch an vier weiteren Stellen im Code angepasst, bzw. eingebaut. Ich habe die Stellen in der folgenden Auflistung weggelassen, weil wir sonst mehrfach die gleiche Zeile Code sehen würden und das wäre ja langweilig! 😉
Um zu entscheiden, für welchen Grafikmodus das Programm assembliert wird, wird eine externe Konstante (HERCULES) definiert, welche dann innerhalb des Programms mit „%ifdef“ abgefragt werden kann. Sehr clever! 🙂
Abschließend vielleicht doch noch ein Satz zu dem Album selbst. Auf „Seite A“ (in der linken Spalte) finden sich originale, extra für den PC Speaker komponierte Stücke. „Seite B“ beinhaltet Coverversionen von älteren Chiptunes anderer Plattformen und auf „Seite X“ findet sich noch ein spezieller Bonustrack, welchen Shiru ursprünglich für ein auf dem Z80-Prozessor basierendes Telefon entwickelt hatte.
Fun Fact: Der Track „Square Wave“ kam mir doch gleich bekannt vor! In einer etwas abgewandelten Form kommt das Stück als Titelmelodie im 2018 erschienenen Echtzeitstrategiespiel „Planet X3“ von David Murray zum Einsatz. Brave retrololo-Leser sollten das Spiel bereits aus den Artikeln 284 und 296 kennen! 😉
So, genug geschwärmt (oder gewundert?), es wird Zeit, den Beitrag abzuschließen. Um ehrlich zu sein, bin ich von „System Bleeps“ – und der Art und Weise wie es programmiert wurde – begeistert. Der piepsige Mini-Lautsprecher ist nicht gerade dafür bekannt, ganze Musikstücke ausgeben zu können. Schon unfassbar, was möglich ist, wenn man die Technik ausreizt. Und das alles ohne Soundkarte! Echt geil! 🙂
Vielen Dank nochmal an Shiru für die Hercules-Version!
In diesem Sinne – bis die Tage, ciao!