Quick-Tips

DMA-Sound mal ganz anders

Wer ein CD-ROM-Laufwerk besitzt, kennt das Problem: Alles klappt wunderbar, nur eins hätte man doch ganz gerne etwas Anwenderfreundlicher Die Sound-Ausgabe bei der Wiedergabe von Audio-CDs. Da die meisten CD-ROM-Laufwerke über eine Line-Out-Buchse an der Chassis-Rückwand verfügen, müßte es doch möglich sein, mit diesem Signal etwas anzufangen. Und das kann man auch und zwar äußerst komfortabel.

Die folgende Lösung schließt nicht nur den gewöhnlichen Anschluß eines Boxenpaares (mit Verstärker) ein, sondern ermöglicht es sogar, Musik von einer Audio-CD direkt in das DMA-Sound-System eines STEs einzuspeisen. Dies hat zur Folge, daß man z.B. die Musik direkt über den Monitorlautsprecher (oder eine über die Cinch-Buchsen des STEs angeschlossene Stereoanlage o.ä.) abspielen kann. Außerdem ist es möglich über das SOUND-Modul des CPX-Kontrollfeldes, Einstellungen wie Höhen, Tiefen, Balance und Lautstärke auch für Klänge von der Audio-CD zu tätigen.

Zum Aufbau: Zuerst öffnen wir das Gehäuse und vergessen nicht, wie immer, vorher den Netzstecker zu ziehen. Je nach Rechner kämpfen wir uns nun durch eine riesige Schicht von Abschirmblechen deren Laschen mit einer Zange vorsichtig entsprechend umgebogen werden. Nun legen wir das offene Rechnergehäuse mit der Hauptplatine vor uns hin und versuchen den etwas größeren Chip mit der Aufschrift LMC 1992 (längliche Bauform) zu finden. Wenn wir ihn gefunden haben, suchen wir den etwas kleineren, 14poligen Chip mit der Aufschrift LF 347N, welcher sich etwas oberhalb befinden müßte. Wie in der Zeichnung zu sehen, müssen von der kleinen, runden Markierung ausgehend die 14 Pins abgezählt werden und die entsprechenden Leitungen (linker und rechter Kanal sowie die Masse) vorsichtig mit einem feinen Lötkolben angelötet werden. Da das Signal von den CD-Lauf-werken meist sehr stark ist und Übersteuerungen eine sehr schlechte Klangqualität verursachen, ist es empfehlenswert, noch einen lKQ-Widerstand jeweils in die Leitung des linken und rechten Kanals zwischenzulöten. Wie immer beim Löten an ICs ist auch hier auf kurze Lötzeit und geringe Erwärmung des ICs zu achten. Nun werden entsprechende Lötstellen noch mit Klebeband oder besser mit Heißkleber isoliert, damit kein Kontakt zum darüberliegenden Netzteilgehäuse entstehen kann. Das Audio-Kabel führen wir am besten über den ROM-Port nach draußen, wer will, kann stattdessen in die Gehäuserückwand eine kleine Buchse einbauen und das Kabel hier anlöten (entspr. Bauteile finden Sie in jedem Elektronik-Shop). Nun folgt der erste Test: Starten Sie Computer & CD-Laufwerk und beginnen Sie mit der Wiedergabe eines Titels. Entsprechende Töne müßten nun durch Ihren Monitor (bzw. durch die bereits angeschlossene Stereoanlage) dröhnen. Versuchen Sie nun, einige Veränderungen über das SOUND-Modul im Kontrollfeld (X-Control) zu tätigen. Daraufhin müßten sich die Einstellungen sofort auswirken, d.h. die Lautstärke müßte sich ändern etc.

Probieren Sie ruhig die verschiedenen Möglichkeiten aus. Es kann nichts kaputtgehen! Sogar Sounds vom Computer und von der CD können gleichzeitig wiedergegeben werden, d.h. die Ausgabe wird einfach gemischt. Es ist also nicht nur dem Falcon Vorbehalten, Sounds einzuspielen und in Echtzeit verändert wieder auszugeben.

Corvin Falk

Rechenfehler in GFA-BASIC

ln letzter Zeit ist der Rechenfehler des Pentium-Prozessors in aller Munde. Daß auch das GFA-BASIC (neben einigen anderen Bugs) von Rechenfehlern nicht frei ist, wissen allerdings die wenigsten. Da der GFA-Rechenfehler im Gegensatz zum Pentium-Fehler durch die Software hervorgerufen wird, läßt sich dieser natürlich durch entsprechende Programmierung umschiffen. Dafür ist es allerdings erforderlich, daß der Programmierer den Fehler kennt, und daher jetzt ein Beispiel:

x-2.3
y&=x*10
PRINT y&

Auf dem Bildschirm erscheint „22“! Trägt der verwunderte Programmierer für x den Wert 2.2 oder 2.4 ein, so wird er feststellen, daß das Programm den korrekten Wert von 22 bzw. 24 errechnet. Erst die 2.8 ist in dieserZahlenreihe der nächste Wert, der falsch berechnet wird. Da der Fehler nur bei bestimmten Zahlenkombinationen auftritt, bleibt er beim Austesten der Programme meist unentdeckt. Das Problem tritt bei allen GFA-BASIC-Versionen 3.x sowohl im Compiler als auch im Interpreter auf. Wo liegt jetzt das Problem? Der Verdacht, daß es sich um einen Rundungsfehler handeln könnte, läßt sich schnell bestätigen:

x=2.3
y&=x*10+0.00001 PRINT y&

Jetzt erscheint der korrekte Wert von „23“. Vorher ist also intern ein Wert von „22.9999...“ errechnet worden, und bei der Übergabe in eine Integer-Zahl ist der Nachkommaanteil natürlich abgeschnitten worden. Wer genau nachforscht, wird feststellen, das der Rundungsfehler erst an der zwölften Stelle nach dem Komma auftritt. Die fatale Abweichung von über 4% im Ergebnis kommt erst durch die gleichzeitige Wandlung in eine Integerzahl zustande. Um die genaue Fehlerursache zu finden, muß das Listing weiter zerbrö-selt werden:

x=2.3
x=x*10
y&=x
PRINT x,y&

Es erscheinen auf dem Bildschirm die Zahlen 23 und 22. Jetzt wird klar, daß der Fehler erst bei der Wandlung von einer Fließkommazahl in eine Integer-Zahl auftritt und nicht bei der Multiplikation. Aber ist das immer so?

x=23
y&=x
PRINT x,y&

Jetzt wird korrekt 2 mal die 23 ausgegeben. Die Fließkommazahl muß also das Ergebnis einer Multiplikation sein, damit der Rundungsfehler bei der Wandlung in eine Integerzahl auftritt. Was tun? Wenn eine Fließkommazahl multipliziert und dann in eine Integer-Zahl gewandelt wird, ist meistens bereits vorher bekannt, daß das Ergebnis keinen Nachkommateil besitzt. Ein gutes Beispiel sind Geldbeträge, die ja nur 2 Kommastellen haben können (die Pfennigbeträge) und von Programmierern zur Geschwindigkeitssteigerung und Speicherplatzersparnis häufig intern erst mit 100 multipliziert und dann in eine Integer-Zahl gewandelt werden. In diesem Fall kann ganz simpel mit dem Befehl ROUNDQ gearbeitet werden:

y&=ROUND(x*10)

Ist nicht genau klar, ob das Ergebnis einen Nachkommaanteil besitzt, ist eine absolut exakte Berechnung nur dann möglich, wenn auf eine Wandlung in eine Integer-Zahl verzichtet wird. Kommt es auf die allerletzten Kommastellen nicht so stark an und entsteht nur zeitweilig ein Nachkommaanteil, so fährt man mit einer Addition von 0.000000000001 bei der Übergabe besser.



Aus: ST-Computer 04 / 1995, Seite 116

Links

Copyright-Bestimmungen: siehe Über diese Seite