Atarium: Der Soundhardware auf die Finger geschaut

Auf der Suche nach einem interessanten Thema bin ich diesen Monat auf ein kleines GEM-Programm gestoßen, daß schon seit einiger Zeit fertig ist, aber mangels Gelegenheit nie veröffentlicht wurde. Bevor es ganz zustaubt, habe ich es etwas aufpoliert und mit den ‘letzten’ Neuigkeiten (Iconify) versehen.

Das ‘DMA-Sound-Oszilloskop’ entstand, als ich etwa vor Jahresfrist meinen CD-ROM-Treiber mit der Fähigkeit versehen habe, von Toshiba-Laufwerken Audiodaten digital zu kopieren. Sie sich anhören zu können, war schon nett; aber eigentlich wollte ich auch mal ‘live’ die Wellenmuster sehen. Daher war die erste Version dieses Programms, das einfach in die STE/TT-Soundregister hineinsieht und die entsprechenden Daten in einem GEM-Fenster darstellt, schnell fertiggestellt. Zu meiner damaligen Verblüffung hatte das Programm auf einem TT in monochromer Darstellung nicht die geringsten Geschwindigkeitsprobleme - also zusätzlich noch eine nette Demonstration, was der Rechner so alles kann.

Von Rechts wegen müßte das Programm natürlich auch die XBIOS-Funktionen des Falcon unterstützen. Dazu sollten alle Zugriffe auf die Soundhardware über eine Library vonstatten gehen. Wer mag, kann das Programm entsprechend erweitern und sich bei mir melden.

Bevor ich mich einigen Details zuwende, will ich doch noch einen Gesamtüberblick geben. ‘OSZI.APP’ schaut in regelmäßigen in dem DMA-Soundregi-ster nach, ob gerade Sound abgespielt wird (wenn es das oberste Fenster besitzt, 50 mal pro Sekunde, sonst zehnmal). Ist dies der Fall, werden die gerade abgespielten Samples in einer monochromen Offscreen-Bitmap aufbereitet und schließlich in das GEM-Fenster kopiert. Zusätzlich zeigt der Fenstertitel den momentanen Soundmodus an. Außerdem Schließfeld (Control-U und -Q), dem Iconify-Feld (Ctrl-Alt-Blank) und der HELP-Taste (Copyright) gibt es keine weiteren Bedienelemente. Ich hatte doch erwähnt, daß es ein ‘kleines’ Programm ist, oder?

Überblick über die einzelnen Funktionen

appl_xgetinfo() und has_iconify() haben wir schon im Mai-Heft (Iconify-Demo) eingesetzt. Die Funktionen wind_xget() und wind_xset() sind lei-derfür Pure-C notwendig, weil die Standard-Bindings die neuen MultiTOS-Opcodes teilweise nicht korrekt behandeln. getsnddataf) liest aus der DMA-Hardware den aktuellen Modus (Mono/ Stereo, Frequenz, an/aus) sowie den Zeiger auf das gerade abgespielte Sample aus. init_table() baut Tabellen auf, über die die Ausgabe der Kurve in die Offscreen-Bitmap passiert. disp() schließlich benutzt diese Routinen, um den Inhalt der Bitmap auf den aktuellen Stand zu bringen.

Der Rest des Programms ist eine typische GEM-Anwendung. Erwähnenswert sind vielleicht noch der Iconify-Support (ähnlich dem im Beispielprogramm im Mai-Heft) sowie in register_-aes() die Abfrage, ob das AES die Anmeldung der AP_TERM-Fähigkeitper shel_write() versteht (AP_TERM wird genau dann unterstützt, wenn das betreffende AES die Meldung kennt und das Programm nicht als Accessory gestartet wurde). Das Programm befindet sich aufgrund der Länge des Listings (665 Zeilen) auf der Mega-Disk dieser Ausgabe.


Julian F. Reschke
Aus: ST-Computer 07 / 1995, Seite 89

Links

Copyright-Bestimmungen: siehe Über diese Seite