Die Hexer (Teil 3)

»The Exceptions« gehen im dritten Teil ihrer Serie für Assembler-Programmierer in die vollen: 17 KByte Sourcecode liefern Ihnen den Traum-Synthesizer, der auf dem ST seinesgleichen sucht. »Symphony ST« spielt parallel zu jedem anderen Programm Musik und entlockt dem schmächtigen ST-Soundchip Töne, die niemand für möglich hielt. Frequenzmodulation, beliebige ADSR-Hüllkurven, Vibrato und Soundeffekte mit bis zu drei Stimmen gleichzeitig, liefert dieses definitive Werkzeug für Computermusik in Profiqualität. Doch damit nicht genug: Schreiben Sie die beste Eingabehilfe für »Symphony« und gewinnen Sie 1000 Mark!

Was, schon wieder ein Monat vorbei? Wahnsinn! Früher habe ich ungeduldig auf das Erscheinen dieser Zeitschrift gewartet, aber seitdem wir eine Serie für das STMagazin schreiben, erscheint dieses Blatt mindestens doppelt so oft wie früher!
Aber was soll das Gejammere, schließlich interessieren Sie nicht unsere Terminprobleme, sondern Sie möchten etwas über Musikprogrammierung auf dem ST erfahren.
Diesmal gibt es ein besonderes Bonbon für alle, die an den bescheidenen Klangfähigkeiten des ST bisher verzweifelten: eine exklusive Synthesizer-Routine fürs ST-Magazin, lauffähig in eigenen Programmen und mit etlichen Spezialeffekten ausgerüstet! Sie kennen unser Muster: Erst werde ich, Erik, mit einer kleinen Hintergrundgeschichte und einigem Grundwissen unser Honorar für diesen Monat in die Höhe treiben, und dann wird Sie der Fachmann für den Bereich Musikprogrammierung, Jochen, vollends darüber aufklären, wie man dem ST Wohlklänge zu entlocken vermag.
Unser zweites Demo (LSD, Little Sound Demo; ST-Magazin 8/88) war kaum fertiggestellt, da begann er seine Synthesizerroutine schon wieder zu verbessern. Angeheizt von wahren Soundorgien, die besonders der englische Musikprogrammierer Robb Hubbard auf dem C 64 feierte, versuchte »Mad Max« verzweifelt, ähnliche Effekte auf dem Uralt-Soundchip des ST zu vollbringen. Eines muß man dabei vorausschicken:
Objektiv betrachtet, hat unser guter ST den schlechtesten Soundchip aller derzeit verbreiteten Heimcomputer. Sowohl der C 64 als auch der Amiga sind ihm in dieser Hinsicht um Längen voraus. Doch man muß in aller Unbescheidenheit sagen, daß sich Jochen von Hardware-Unzulänglichkeiten genausowenig beeindrucken läßt, wie der Rest unserer merkwürdigen Truppe.
Alsbald verschwand mein alter C 64 immer öfter von seinem angestammten Platz, um bei unserem Musikfreak als Referenz bei der Umsetzung von Robb Hubbards Spielesoundtracks zu dienen. Denn nachdem wir einige positive Reaktionen auf unsere Demoschreiberei erhalten hatten, wuchs die Motivation, mit einem dritten Demo alles bisher Dagewesene in den Schatten zu stellen.
Während sich meine Wenigkeit daran machte, am ST ein kleines Portrait des erwähnten Mr. Hubbard zu malen, und Udo sich mit meinen komischen Ideen für neue Effekte herumschlug, war auch Jochen nicht untätig. Deshalb ein paar Worte zur Umsetzung eines Liedes vorn 64er auf den ST.

Zur Zeit des dritten Demos war die Sache noch wirklich mühselig. Jochen konnte das Format, in dem die Noten für ein Lied im Speicher des Commodore lagen, zwar lesen wie andere ihre Comics, doch mußte das Ganze ausgedruckt, im Kopf in Jochens Notenformat umgerechnet und dann in den ST getippt werden. Anschließend mußte er noch versuchen, die Klänge, die der »Brotkasten« von sich gab, so gut wie es eben ging mit den bescheidenen Mitteln des Yamaha-Soundchips nachzubilden. So entstanden acht Songs, die zur damaligen Zeit ihresgleichen suchten.
Außer dem guten Sound gab es zwei besonders herausragende Dinge zu bestaunen: eine »Dreikanal-LED-Aussteuerungsanzeige« und einen in Dutzenden von Farben leuchtenden Scrolltextstreifen, der dem Programm den Namen »LCD« (Little Color Demo) einbrachte. Danach war erst einmal eine Weile Ruhe. Wie noch heute im LCD zu lesen ist, wollten wir fürs erste keine weiteren Demos mehr produzieren (waren wir naiv!), denn seit einiger Zeit arbeiteten Udo und ich an unserem ersten kommerziellen Programm, natürlich einem Spiel.
Zu dem Zeitpunkt, da Sie diese Zeilen lesen, wird es wohl immer noch nicht im Handel sein. Das wundert allerdings niemanden, am wenigsten uns selbst, denn natürlich konnten wir es nicht lassen, mit weiteren Demoprogrammen unsere Zeit zu verschwenden. Zunächst konnten wir der Versuchung nicht widerstehen, ein Diashow-Programm für Neochrome-Bilder zu programmieren. Ein Freund in Mannheim mit dem Pseudonym ALYSSA hatte entdeckt, wie man im unteren Bildschirmrand des ST Grafik erscheinen läßt. Folglich schaffte es Udo, komplette Bilder anzuzeigen, im Rahmen eine Scrollzeile laufen zu lassen, Rasterinterrupts zu setzen, Musik mit digitalisiertem Schlagzeug abzuspielen und mit dem Betriebssystem Bilder zu laden: und zwar alles gleichzeitig.

Heute interessiert uns die Musik. Jedem, der unsere Demos kennt, fällt dabei das B.I.G.-Demo ein, denn es enthält 127 verschiedene Musikstücke. Derjenige, der den Stein für das B.I.G.Demo ins Rollen brachte, war unser guter Freund Richard Karsmakers aus Holland, seines Zeichens Herausgeber des wohl besten Diskettenmagazins für den Atari, den »ST-News«. Nachdem er uns, sprich Jochen, dazu überredet hatte, seine Disketten- Zeitschrift mit Hintergrundmusik zu versorgen, fing er auf einmal an, uns mit Plänen für ein Demo zu bombardieren, das uns den Atem verschlug. Er meinte knochentrocken, es wäre doch toll, in diesem Demo alle Musiken des von ihm (und uns) verehrten Robb Hubbard unterzubringen. Bevor wir auch nur entsetzt Luft holen konnten, hatte »Mad Max« schon zugestimmt. Sein »Ja« kam so schnell, da wir kurz zuvor eine nützliche Erfindung gemacht hatten. Denn während ich ein Kabel zur Datenübertragung von C64 zum ST zusammenlötete, programmierte Udo ein wenig auf beiden Computern herum, und siehe da, der ganze Speicherinhalt des 64ers ließ sich in wenigen Sekunden ins üppige RAM des Ataris schleudern. Nun gehörte die lästige Tipperei für Jochen der Vergangenheit an. Was lag aber näher, als zusätzlich eine Konvertierungsroutine zu schreiben, die Robbs Musik automatisch in eine Form brachte, die Jochens Synthesizerroutine gefiel. Es bleibt zwar noch genug Arbeit übrig, da sich nicht alle Informationen sinngerecht umsetzen lassen, außerdem muß das Klangbild der einzelnen Stimmen bis auf den heutigen Tag sorgfältig per Hand eingestellt werden. Aber dieses Kabel war immerhin die Voraussetzung, so etwas Verrücktes wie das B.I.G.-Demo überhaupt in Erwägung zu ziehen. Außerdem hatte TEX mittlerweile tatkräftige Unterstützung in Form von Michael (Daryl) und Gunter (6719) bekommen.

Über drei Monate hinweg arbeiteten wir mehr oder weniger intensiv an unserem 5. Demo. Letztlich investierten wir alle mehr Arbeit, als ursprünglich gewollt und es unserem Spiel gutgetan hätte. Die programmtechnischen und grafischen Tricks des B.I.G.-Demos enthüllen wir Ihnen ein andermal. Soundmäßig war uns nämlich die endlose Liste von Musiktiteln dieses Programmes noch nicht genug.

center
Wann gehört das B.I.G.-Demo endlich zum Lieferumfang des STs? Über fünf Stunden Musik (127 Stücke) in Synthesizer-Qualität, fast drei Stunden Scrolltext und atemberaubende Grafik.- Mit dem B.I.G.-Demo lieferten die »Exceptions« ihr Meisterstück ab.

Im B.I.G.-Demo hatte deshalb noch ein weiteres Programm von Jochen Weltpremiere: der Digitalsynthesizer! Er ist zu nichts geringerem fähig, als nach dem gleichen Prinzip Töne zu erzeugen, wie es der Soundchip des Amiga tut.

Unterhalten wir uns zunächst einmal darüber, wie ein »normales« Synthesizerprogramm Musik mit dem eingebauten Soundchip erzeugt. Dieser Soundchip wurde ursprünglich von General Electric entwickelt und findet sich im ST in Form eines Yamaha-Clones mit dem Namen »YM- 2149« wieder. Zur Zeit seiner Markteinführung war er ein Segen für die Coin-Op-Hersteller und versorgte somit neueste Spielhallengeräte mit noch nie dagewesenem Sound.
Gemeint sind so aktuelle Spielhallenschlager wie Pac-Man, Asteroids und andere Heuler, an die man heute noch mit Tränen der Rührung zurückdenkt.

Tränen des Zorns treibt es einem jedoch in die Augen, wenn man so ein ehrwürdiges Stück Technik in einem der modernsten Heimcomputer Ende der achtziger Jahre wiederfindet.
Wahrscheinlich betrachteten Jack Tramiels Entwickler den YM sowieso hauptsächlich als Portbaustein, an dem versehentlich noch ein paar armselige Schwingkreise hängengeblieben sind. Ja, ja, in Ordnung, ich höre jetzt mit dem Geläster auf. Die technischen Daten des Chips sprechen Bände: Die erwähnten Ports, zwei an der Zahl, einer als Ein- und einer als Ausgang geschaltet, übernehmen beispielsweise die Datenübertragung zum Diskettenlaufwerk und zum Drucker. Zur Klangerzeugung tragen sie allerdings aus naheliegenden Gründen nicht allzuviel bei. Eher geeignet scheint da einer der drei Tonkanäle zu sein.

Für jeden dieser Kanäle lassen sich folgende Einstellungen treffen:
1. Lautstärke: regelbar von 0 bis 15.
2. Frequenz: einstellbar von 30 bis 125000 Hz (?!?).
3. Hüllkurve: Eine von zehn fest eingestellten Hüllkurven auswählbar.

Als Hüllkurve bezeichnet man, wie sich ein Ton beim Anschlag, Abschwellen, Halten und Abklingen des Instrumentes verhält. Ins Englische übersetzt heißt das Attack, Decay, Sustain und Release, weshalb nicht nur wir von ADSRHüllkurven sprechen. Ein Klavier hat zum Beispiel einen schnellen Anschlag, hält den Ton fast gar nicht, klingt aber sehr lange aus.
Damit ist schon fast zuviel über die Hüllkurven gesagt, denn leider klingen die vorgegebenen ADSR-Kurven unseres Soundchips zwar nicht gut, dafür aber alle fast gleich.

Der YM-2149 kennt nur eine Wellenform, nämlich die Rechteckwelle. Ferner läßt sich allen Stimmen ein einziger Rauschgenerator zuschalten. Das war's. Im Ernst, mehr ist nicht!
Damit Sie erkennen, wie wenig das wirklich ist, schauen wir kurz auf den SID, den Soundchip des C 64 hinüber: Auch er verfügt nur über drei Stimmen, die sich sogar ein einziges Lautstärkeregister teilen. Dafür hat er zusätzlich:

  1. vier verschiedene Wellenformen (Rechteck, Dreieck, Sägezahn, Rau- schen)
  2. bei Rechteck: einstellbare Pulsweite (das Verhältnis des negativen zum positiven Kurvenanteil).
  3. Ringmodulation: Mit der Frequenz einer Stimme läßt sich eine zweite modulieren.
  4. einstellbare Hoch- und Tiefpaßfilter.
  5. beliebig einstellbare Hüllkurven.

Alle Features lassen sich für jede einzelne Stimme einstellen. Insgesamt liefert der 64er ein wesentlich abwechslungsreicheres Klangbild, und das, obwohl es diesen Computer schon seit 1982 gibt! Vielleicht wundern Sie sich jetzt, warum ein gestandener ST-Freak so übel über die Soundfähigkeiten seines Gerätes herzieht. Der Soundchip im ST ist aber einfach mies... Wenn man in Testberichten von Spielen oder Musikprogrammen liest, »daß der Sound seltsamerweise schlechter als beim C 64 ist«, sehen wir einmal mehr, daß die Menscheit im allgemeinen und manche Softwaretester im besonderen (nein, nicht Du, Boris!) eben nicht ausreichend über die technischen Hintergründe aufgeklärt sind. Besonders ärgerlich ist es, wenn sich ein Programmierer viel Mühe gab, dem Soundchip mit programmtechnischen Tricks einen besseren Klang zu entlocken, ohne daß es irgend jemand merkt. Ich denke da unter anderem an »Sapiens«, ein Programm aus Frankreich mit sehr gutem, dreistimmigen Digi-Sound im Hintergrund, das bei uns nie auf den Markt kam.

So, genug gewettert.

Denn es gibt, wie Sie sicherlich schon gemerkt beziehungsweise gehört haben, einige Methoden, sich nicht mit den kläglichen Piepsern des YM- 2149 zufriedenzugeben. Wie immer, muß hier die Software herhalten. Sehen wir uns deshalb die prinzipielle Arbeitsweise einer Synthesizerroutine an.

Zunächst sollte sie im Hintergrund, das heißt auf einem Interrupt, laufen. So läuft die Musik parallel zum Hauptprogramm. Ferner ergibt sich daraus, daß die Soundbearbeitung gleichmäßig abläuft. Im ST eignen sich dafür beispielsweise der 200-Hz-Timer, oder, wie bei unserem Programm, der VBLInterrupt (Vertical BLank), der bekanntlich 50oder 60mal in der Sekunde aufgerufen wird.
Prinzipiell macht ein solches Programm nichts anderes, als sich aus einer Tabelle Note und Notenlänge zu holen und diese, anhand einer Frequenzliste umgerechnet, in den Soundchip zu schreiben. Durch das regelmäßige Auf- rufen einer solchen Routine läßt sich ein Sound beliebig verändern. Die so erzeugten Effekte gehen weit über die vorgesehenen Fähigkeiten des Chips hinaus. In unserem hier abgedruckten Synthesizer »Symphony ST« sind folgende Effekte eingebaut:

Der zweite Coup, das Amiga-Demo: Grafik und Digitalmusik stammen vom Amiga, nur der Computer ist ein ST! Jochens Digital-Synthesizer produziert für jedes der minutenlangen Stücke einen makellosen Sound

  1. Frequenzmodulation: Das regelmäßige leichte Verändern der aktuellen Frequenz erzeugt ein neues Klangbild. Man könnte es als »Klingeln« bezeichnen.
  2. Vibrato: Diese gesondert anzugebene Frequenzmodulation bringt den Ton zum »Schweben«.
  3. Beliebige ADSR-Hüllkurven. Was man nicht hat, muß man sich eben programmieren. Anhand einer Tabelle aus Lautstärkewerten läßt sich das An- und Abschwellverhalten eines Tones beliebig einstellen.

All diese Effekte bringen zusammen ein verblüffendes Ergebnis aus Ihrem Lautsprecher. Hören Sie sich nur einmal das kleine Demo-Lied an, das am Ende des Listings beigefügt ist.

Bevor Ihnen Jochen nun die genaue Erklärung zu seinem Programm liefert, gehe ich noch kurz auf die Arbeitsweise des »Digitalsynthesizers« ein. Dieses Wunderwerk der Programmierkunst (Protz!) bringt dem ST, wie schon erwähnt, ähnliche Soundfähigkeiten wie dem Amiga bei, allerdings auf Kosten der Rechenzeit. Es wird im Speicher nur ein einziger digitalisierter Ton eines beliebigen Instrumentes benötigt. Die Software gibt diesen Ton in beliebiger Frequenz und Länge wieder. Bis zu vier solcher Stimmen werden anschließend gemischt und dann simultan über den Soundchip ausgegeben. Jochen benutzt dabei übrigens nur die Lautstärkeregister, die, als Analog- Digital-Wandler mißbraucht, die Samples abspielen. Das Ganze läuft zwar noch auf Interrupt, fairerweise muß man aber einräumen, daß diese Methode der Klangerzeugung zwischen 70 und 80 Prozent der Rechenzeit verbraucht. Wie der Digital-Synthesizer nun genau funktioniert, soll bis auf weiteres unser Geheimnis bleiben, alles wollen wir ja auch nicht verraten. Statt dessen übergebe ich nun die Tastatur an Jochen, er wird sie nun genau über die Arbeitsweise seines Listings aufklären.

Grüezi, Musikfreaks. Hier ist nun Jochen am Keyboard. Die Anrede ist mit Bedacht gewählt, denn der Synthesizer verfügt zur Zeit noch über keine Eingabehilfe. Die Noten und Effekte müssen Sie daher direkt innerhalb des Assemblers eingeben. Das ST-Magazin macht aber tatsächlich 1000 Mark für denjenigen Programmierer locker, der die beste Benutzeroberfläche für »Symphony ST« programmiert. Da ich den Quellcode ausführlich dokumentiere, ist das Schreiben einer soliden Benutzeroberfläche wohl nicht mehr so schwierig.

Übrigens arrangiere und komponiere ich mit meinem »großen« Synthesizerprogramm, das ich für unsere Demos und kommerzielle Spiele verwende, auch innerhalb des Assemblers. Zur besseren Übersichtlichkeit habe ich die Anleitung zu »Symphony ST« zusammen mit dem Listing auf Seite 74 tabellarisch zusammengefaßt. Sie erklärt alle Programmteile, die für das Schreiben eigener Musik von Bedeutung sind.

So weit, so gut. Ich hoffe, Sie finden die Anleitung einigermaßen verständlich. Viel Spaß beim Ausprobieren und Experimentieren! Nun wissen Sie hoffentlich auch über die Musikprogrammierung des STs Bescheid, liebe Leser. Nächstes Mal kümmern wir uns nicht ums Ohr, sondern verwöhnen das Auge: grafische Tips und Tricks sind angesagt. Bis dann, Tschüß!

»The Exceptions«
Jochen und Erik


Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]