This document is available in english, too. Please load 'DIGIBLAS.TXT'.

Der original Text ist von A.Stroiczek und dem DMV-Verlag (CPC International
8/9'91) und wurde konvertiert von Tim Riemann (TCS-Software@t-online.de).
Bitte schreiben Sie mir bei eventuellen Fehler!

CPC-Digiblaster
===============

>Der Sound aus dem Druckerport<

Wenn es um die Soundfaehigkeit des Computers geht, koennen CPC-Besitzer nur
neidisch auf die 16-Bit-Kollegen Amiga, Atari ST, Mac und PC (mit Soundkarte)
blicken. Wir koennen da mit einer unkomplizierten Schaltung weiterhelfen.

Leider ist der CPC nur in der Lage, blecherne Rechteckfrequenzen auszugeben.
Der Amiga und andere Computer hingegen arbeiten mit digitalisierten Instrumen-
ten, die intern ueber Digital-/Analog-Wandler ausgegeben werden. Genaugenom-
men verfuegt auch der CPC ueber Moeglichkeiten, digitalisierte Klaenge wieder-
zugeben. Hierfuer wird das Lautstaerkeregister benoetigt. Dieses Register kann
16 verschiedene Lautstaerkewerte annehmen. Es waere also moeglich, Samples mit
4 Bit abzuspielen. Doch auch hier enttaeuscht der Soundchip.
Um fuer das menschliche Ohr einen linearen Lautstaerkeanstieg zu erzeugen,
verlaeuft die Spannung am Soundausgang logarithmisch. Die auszugebenden Werte
muessen deshalb linearisiert werden. Effektiv kommt man dabei nur noch auf 3
Bit. Der Amiga hat mit seinen 8-Bit-Samples die Nase vorn. Wer nun sagt: "Na
schoen, halb so gut wie der Amiga ist immer noch genug", hat sich getaeuscht.
Mit 3 Bit lassen sich acht verschiedene Werte darstellen mit 8 Bit ganze 256!
Mit dem CPC ist also gerade eine Wiedergabe von leisen Digitalisierungen nicht
moeglich.
Langer Rede kurzer Sinn: Von der umstaendlichen Programmierung einmal abgeseh-
en kann der CPC-Soundchip seinen Kollegen nicht das Wasser reichen. Doch aus-
gerechnet die magere Druckerschnittstelle buegelt dieses Manko aus.
Um 8-Bit-Samples auszugeben, benoetigen wir eine 8-Bit-Schnittstelle und eine
Schaltung, die diese Bits in einen passenden Spannungswert umwandelt. Der
Druckerport stellt uns 8 Bit sowie einen Spannungspegel von 5 Volt zur Verfue-
gung (Bit 7 = STROBE).

>Der Druckerport macht's moeglich<

Um einen D-/A-Wandler aufzubauen, benoetigt man normalerweise ein entsprech-
endes IC, welches alleine schon zwischen 15 und 20 DM kostet. Ausserdem
braucht ein solches IC natuerlich eine Spannungsversorgung, die uns der Drucker-
schnittstelle nicht bietet. Die hier vorgestellte Schaltung (siehe Schaltbild 
{Anmerkung: 'DIGIBLAS.GIF'}) kostet 3 bis 12 DM und kommt ohne Spannungsver-
sorgung aus, da sie nur aus passiven Bauelementen besteht. Dies hat jedoch
auch einen kleinen Nachteil: Die erzeugte Spannung laeuft nicht exakt linear.
Daher ist dieser D-/A-Wandler nicht fuer Steuerungsaufgaben verwendbar.
Beim Aufbau ist folgendes zu beachten:
Die Dioden muessen richtig herum eingeloetet werden, wobei die Seite mit dem
schwarzen Ende vom Druckerport wegzeigen muss. Die Widerstaende sollten moeg-
lichst toleranzarm sein (1%). Ueber den regelbaren Widerstand laesst sich die
Lautstaerke einstellen. Den Ausgang der Schaltung stellt eine 3,5-mm-Klinken-
buchse (stereo) dar. Fuer die Verbindung zu einem Verstaerker kann das Kabel
fuer den im CPC eingebauten Soundausgang benutzt werden. Es kann auch direkt
ein Kopfhoerer angeschlossen werden.

>Aller guten Dinge sind drei<

Natuerlich bringt der D-/A-Wandler nichts ohne ein Beispielprogramm. Da digi-
talisierte Instrumente sehr lang sind, ist ein Abdruck der Samples nicht
moeglich. Die Demoprogramme auf der DATABOX {Anmerkung: nicht mehr erhaeltlich}
heissen DIGI1 und DIGI2 und koennen einfach mit RUN gestartet werden.
Zum Abtippen generiert Ihnen der Datalader DATA1 {Anmerkung: DATA1.BAS} ein
kleines Beispielprogramm, dass verschiedene Tonhuellkurven ueber den D-/A-
Wandler ausgibt. Seltsamerweise ergab sich bei der Programmierung eine bessere
Klangqualitaet wenn das Upper-ROM eingeschaltet war.

>Die Programmierung<

Das Programm spricht direkt die Hardware des Centronics-Ports an. Der Port
wird ueber die Adresse &EFxx angesprochen (xx steht hier fuer einen beliebigen
Wert, hier kann beispielsweise 00 eingetragen werden). Da der CPC-Druckerport
nur eine breite von 7 Bit hat, aber durch den Digiblaster 8 Bit genutzt werden
sollen, wird dazu das Strobe-Signal genutzt. Da dies aber hardwaremaessig ne-
giert wird, muss es vor der Ausgabe noch softwaremaessig invertiert werden.
Die softwareseitige Behandlung vereinfacht sich, da das Strobe-Signal durch
das siebte Bit des Ausgabebausteins dargestellt wird.
Hier ein Besipiel:

LD A,&C5        ;Wert laden
LD B,&EF        ;Portadresse in BC laden, der Wert im Register C ist beliebig
XOR &80         ;Bit sieben des Akkus invertieren
OUT (C),A       ;Ausgabe des Akkumulatorinhalts auf die Portadresse im
                ;Register BC

Der Akku bzw. der Akkumulator ist das Register A.
Der Centronics-Anschluss des CPC hat folgende Pin-Belegung:

Pin   1         /STROBE
Pin   2         D0
Pin   3         D1
Pin   4         D2
Pin   5         D3
Pin   6         D4
Pin   7         D5
Pin   8         D6
Pin   9         GND
Pin   11        BUSY
Pin   14        GND
Pin   16        GND bis Pin 28 GND
Pin   33        GND

Alle nicht genannten Pins sind nicht belegt.
Wenn Sie den CPC in Rueckansicht vor sich stehen habe, so beginnt die Zaeh-
lung der Pins rechts oben mit 1, links oben ist die Nummer 18, links unten
die Nummer 19 und rechts unten die Nummer 36.

>Einfache Wandlung<

An dieser Stelle wollen wir auch einmal kurz erwaehnen, wie eigentlich dieser
D-/A-Wandler funktioniert. Das Prinzip ist sehr einfach. Wie jedem aus dem
Physikunterricht bekannt sein duerfte, ist die Spannung, die ueber einen Wider-
stand abfaellt, proportional zu dem durch ihn fliessenden Strom. Auf dem
Schaltplan erkennt man, dass jedem Datenbit ein bestimmter Widerstandswert und
damit ein bestimmter Stromfluss zugeordnet ist. Jedes gesetzte Bit erzeugt
also einen definierten Strom ueber den Einstellregler (470 Ohm), und damit
liegt eine dem Bit entsprechende Spannung ueber dem Widerstand. Sind mehrere
Bits gesetzt, so addieren sich die jeweiligen Stroeme, und die Spannung ueber
dem Einstellregler waechst proportional dazu an.
Gibt man nun schnell hintereinander auf den Druckerport Werte einer Sinuskurve
aus, so folgt die Spannung der Kurve, und es wird ein annaehernder Sinuston
ausgegeben. Ebenso wird mit anderen Tonsignalen verfahren.
Wie schnell und wie oft nun solche Werte ausgegeben werden, wird durch die
sogenannte Sampling-Rate bestimmt. Dieser Wert sollte mindestens dreimal
hoeher als die hoechste zu sampelnde Frequenz ein.
Es ist moeglich, mehrere Instrumente gleichzeitig ueber einen D-/A-Wandler aus-
zugeben. Hierzu muessen die Bytes, die gerade gespielt werden sollen, addiert
und entsprechend heruntergeteilt werden. Nach meiner Kalkulation muesste vier-
stimmige Musik mit digitalisierten Instrumenten mit dieser Erweiterung auf dem
CPC machbar sein.

Andreas Stroiczek

-----------------------------------------------------------------------------
konvertiert 1996 von Tim Riemann (TCS-Software@t-online.de)
