Orchester in 16 Bit - Der Falcon als Mini-Stereo-Anlage

Mit der trostlosen Arbeit am Computer ist es jetzt vorbei. Dank seiner Musikqualitäten mausert sich der Falcon zur Stereo-Anlage. Einfach den CD-Player oder Walkman anschließen, unser Programm »PlayMan« laden und los geht´s.

Außer einem gelegentlichen Bing oder Fiep lassen Computer während der Arbeit nicht viel von sich hören. Und auch das monotone Rauschen der Festplatte ist den leiseren Lüftern der Neuzeit zum Opfer gefallen. Dem stillen Platz fehlt es an Musik, mit der die Arbeit ja bekanntlich leichter von der Hand geht. Für Besitzer eines ST, STE oder TT sorgt das Programm »Paula« (TOS-Diskette 7/92) seit längerem für Abhilfe. Es spielt sogenannte »MOD-Files« im Hintergrund und sorgt auf diese Weise für die musikalische Begleitung.

Sound-Subsystem

Mit dem Falcon eröffnen sich ganz neue Perspektiven. An der Gehäuserückseite befinden sich die passenden Anschlüsse: Ein Mikrofoneingang und ein Kopfhörerausgang. Mit ein wenig Software lassen sich nun die eingehenden Musikdaten eines CD-Players oder Walkmans direkt über den Monitorlautsprecher und den Kopfhörerausgang ausgeben, der beispielsweise Aktivboxen versorgt. Da das komplette Sound-Subsystem des Falcon DMA-unterstützt ist, bleibt der Prozessor trotz der anfallenden Datenmengen völlig unangetastet. Komplizierte Vektorverbiegungen oder Interrupt-Routinen sind nicht notwendig.

Folgende Hardwarekomponenten des Falcon spielen dabei eine wichtige Rolle: Der integrierte A/D- und D/A-Wandler (CODEC), der maximal 16 Bit und 50 kHz Abtastrate unterstützt. Damit liegt er qualitativ sogar über dem CD-Standard. Die Entwickler des Falcon gaben dem Sound-Subsystem noch zwei Besonderheiten mit auf den Weg. Das Eingangssignal läßt sich um maximal 22,5 db anheben, das Ausgangssignal um bis zu 22,5 db dämpfen. Damit fällt eine Anpassung verschiedener Ausgänge wie »Line Out«, »Phono« oder die eines einfachen Kopfhörerausgangs leicht. Außerdem entlockt eine spezielle Baß-Boost-Schaltung im Falcon sogar dem Monitorlautsprecher satte Bässe.

PlayMan

Auf der TOS-Diskette finden Sie das Programm »PlayMan« im gleichnamigen Archiv. Es arbeitet als gewöhnliches Programm oder als Accessory (Bild 1). Die beiden Schieberegler sind für die bereits erwähnte Verstärkung des Eingangs- bzw. Dämpfung des Ausgangssignals verantwortlich. Ist der Button »Musik« selektiert, erfüllt Musik den Raum, vorausgesetzt, eine Musikquelle befindet sich am Mikrofoneingang. Natürlich bleibt die Musik auch an, wenn Sie PlayMan wieder verlassen. Andere Programme bleiben hiervon völlig unangetastet. Klicken Sie nochmals auf den Button »Musik«, herrscht wieder Ruhe. Mit »OK« verlassen Sie Play Man.

Programmierung

Das Archiv »PlayMan enthält die Quelltexte für Pure C. Bei der Beschreibung der Funktionsweise beschränken wir uns nur auf die Fähigkeiten der Sound-Hardware.

In der Regel sollte jedes Programm, das das Soundsubsystem des Falcon benutzt, dieses während seiner Arbeit für andere Anwendungen sperren. Da PlayMan aber ständig aktiv ist, testen wir am Programmanfang lediglich, ob jemand die Hardware für sich beansprucht. Liefert die Funktion »locksound« den Wert -129, war das Soundsubsystem bereits gesperrt:

if ( locksnd( ) = -129 )
{
    /* Soundsubsystem schon gesperrt*/ . . .
}
else
{
    unlocksnd( ) ; /* wieder freigeben */
}

Die Hauptarbeit von PlayMan übernehmen Betriebssystemfunktionen, die folgende Aufgaben bewältigen.

  1. Den Mikrofoneingang des Falcon als Eingabequelle des A/D-Wandlers deklarieren
  2. Den Ausgang des A/D-Wandlers auf den Eingang des D/A-Wandlers schalten

Für den ersten Schritt verwenden wir die Funktion »soundcmd()« (siehe Tabelle). Sie bestimmt, welche Musikdaten der A/D-Wandler bekommt, und ist außerdem für die angesprochene Dämpfung und Verstärkung der Musik verantwortlich. Jedes Programm sollte die aktuellen Daten vor Gebrauch retten, um diese beim Programmende zu restaurieren. Der Befehl

    soundcmd (ADCINPUT, 0);

realisiert bereits Schritt 1. Analog hierzu passen wir die Lautstärke den Reglerstellungen an. Gleichzeitig dient der Parameter »ADCINPUT« als An- und Ausschalter für die Musik. So sorgt

    soundcmd (ADCINPUT, 3);

wieder für Ruhe, da der A/D-Wandler jetzt nur Daten des Soundchips verarbeitet. Für den weiteren Weg müssen wir etwas weiter ausholen: Das Soundsubsystem umfaßt vier Sende- und Empfangseinheiten, die sich in einer Datenpfadmatrix verbinden lassen. Für uns sind nur der A/D- und D/A-Wandler interessant, die wir wie folgt verknüpfen.

    devconnect (ADC, DAC, CLK_25M, CLK50K, NO_HANDSHAKE);

devconnect() verbindet hier A/D- und D/AWandler, das eben digitalisierte Signal wird also sofort wieder zurückgewandelt - Musik erklingt. Der Parameter »CLK_25M« besagt dabei, daß die Grundfrequenz vom internen 27 MHz-Quarz kommt. Über den Vorteiler »CLK5OK« erhalten wir die endgültige Abtastrate von 49.2 kHz Da bei Verwendung des Handshake-Modus ein kontinuierlicher Datenfluß vom A/D- zum D/A-Wandler nicht garantiert ist, verzichten wir auf diesen. Der Datenfluß zwischen den Soundkomponenten läuft dabei unabhängig zum Prozessor, der sich weiterhin mit Tabellenkalkulationen und TextVerarbeitung herumschlagen darf - die trostlosen Zeiten aber sind vorbei. Mehr über das Sound-Subsystem erfahren Sie in einer der nächsten Ausgaben. Dort beschäftigen wir uns ausführlicher mit den weiteren Funktionen und der Einbindung des DSP.

Die Parameter von soundcmd (mode, dato)

mode Beschreibung data
0 »LTATTEN«: Ausgang linker Kanal in -1,5 db Schritten dämpfen 0x00L0
1 »RTATTEN«: Ausgang rechter Kanal in -1,5 db Schritten dämpfen 0x00R0
2 »LTGAIN«: Eingang linker Kanal in +1,5 db Schritten anheben 0x00L0
3 »RTGAIN« Eingang rechter Kanal in +1,5 db Schritten anheben 0x00R0
4 »ADDERIN«: Quelle für den 16 Bit-Addierer Bit 0: A/D-Wandler
Bit 1: Multiplexer
5 »ADCINPUT«: Eingabequelle des A/D-VVandlers. Linker bzw. rechter Kanal
des Mikrofons (Bit gelöscht) oder des Soundchips (Bit gesetzt).
Bit 0 : Rechter Kanal
Bit 1: Linker Kanal
6 »SETPRESCALE«: Vorteiler für die Rückwärtskompatibilität zum STE.
Gilt nur, falls Vorteiler bei devconnect() = 0;
1: Vorteiler = 640
2: Vorteiler = 320
3: Vorteiler = 160

Tabelle. Bei soundcmd() spielt die Musik
Armin Hierstetter


Links

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