
                             *** Tetrax V1.00 ***
                           (C) 2000 by Thomas Huth
                           Replay routine by Griff


Was ist Tetrax? Nun, einfach gesagt: Tetrax ist ein sog. MOD-Player.
Fr die, die es noch nicht wissen: MODules sind aus dem Amigabereich
stammende Musikdateien. Inzwischen haben sie sich aber auch auf anderen
Systemplattformen durchgesetzt.
Fr Ataris gibt es auch schon dutzende von Player. Das besondere an Tetrax
ist, dass es sauber in GEM programmiert ist und seine Soundroutinen nur
auf das Betriebssystem (XBIOS) zugreifen, so dass Tetrax auch auf Rechnern
mit Soundhardware laufen sollte, die nicht von Atari selbst kommt, z.B.
Milan und Hades mit Soundkarte und falconkompatiblem Sound-XBIOS.

Wer meine anderen Programme kennt, hat bestimmt schon mal TeTra (ohne X)
in den Hnden gehabt. Tetrax ist nun eine Weiterentwicklung von TeTra,
wobei Hauptziel der Entwicklung von Tetrax war, dass Tetrax auch auf dem
Milan luft - und dies lies sich nur durch Benutzen der sauberen Betriebs-
systemfunktionen gewhrleisten. Mit ein bisschen Glck sollte Tetrax also
auf allen Ataris laufen, die Soundausgabe via XBIOS erlauben.

Um die verschiedenen Rechner und Soundtreiber mglichst gut zu untersttzen
und auszureizen, bietet Tetrax fnf verschiedene Wiedergabemodi an. Leider
hngt nun die Soundqualitt von Tetrax sehr stark von dem Treiber und dem
ausgewhlten Wiedergabemodus ab. Standartmig ist der normale Polling-Modus
eingestellt, dies lsst sich jedoch jederzeit im Einstellen-Dialog ndern.
Das Problem bei der stndigen Soundwiedergabe wie beim Abspielen von MODs ist,
dass das Programm irgendwie in Erfahrung bringen muss, wann ein Soundbuffer
fertig abgespielt wurde. Grundstzlich gibt es auf dem Atari hierfr zwei
Mglichkeiten: Polling und Interrupts.
Bei Polling wird nun stndig das XBIOS (ein Teil des Betriebssystems) abge-
fragt, ob der Buffer fertig gespielt wurde und falls ja wird dann ein neuer
Buffer gesetzt. Dies kostet sehr viel Rechenzeit und falls Tetrax beim Abfragen
(z.B. durch einen Taskwechsel im Multitaskingbetrieb oder Festplattenzugriffe)
gestrt wird, fngt der Sound an zu hngen oder eiern. Polling hat jedoch den
Vorteil, dass es so gut wie auf allen Rechnern funktionieren sollte und auch
nicht so absturzfreudig wie Interrupts ist.
Interrupts hingegen funktionieren jedoch nicht auf allen Rechnern. Zudem muss
das XBIOS auch noch "reentrant", d.h. aus einem Interrupt aufrufbar, sein.
Mit und eben NUR mit dem GSXB XBIOS Soundtreiber von Odd Skancke kann man auf
jedenfall schon mal den Menpunkt "Interrupt (GSXB mode)" auswhlen.
Die beiden anderen Modi (Timer-A und MFP-i7) sind fr alle anderen Treiber
gedacht, die Interrupts untersttzen. Mit meinem Treiber XSOUND funktionieren
sie recht gut und das Milanblasterxbios ist laut Anleitung auch dazu fhig
diese zu benutzen. Das XBIOS des Falcons jedoch ist nicht richtig reentrant.
Hierfr ist nun das Programm RXSETBUF.PRG, das auch auf dem Falcon die
entsprechende XBIOS-Funktion reentrant zur verfgung stellt, so dass man auch
auf dem Falcon den Timer-A oder MFP-i7 Interrupt verwenden kann.
Interrupts bieten auf jedenfall ein gleichmigeres Abspielen und verbrauchen
keine kostbare Rechenzeit durch Polling.
Okay, hier nun ein Gesamtberblick ber die fnf Modi:

- Polling, normal: Das XBIOS wird stndig abgefragt, ob ein Soundbuffer abge-
  spielt wurde. Sollte auf allen Architekturen funktionieren!
- Polling, mit Looping: Wie Polling-normal, nur wird hier die Soundhardware in
  den Looping-Modus versetzt, d.h. nach Ende eines Buffers kommt es zu keiner,
  normalerweise eh nicht hrbaren Pause mehr, sondern es wird gleich der
  nchste Buffer weitergespielt. Die Musik kann sich so besser anhren, aber
  wenn Tetrax durch etwas (Multitasking, Floppy-Zugriffe) unterbrochen wird,
  dann fngt der Sound recht schnell an zu "eiern" (ein Buffer wird mehrmals
  abgespielt).
- Interrupt, GSXB-Modus: Wohl die "sauberste" Art! Sie funktioniert jedoch bis
  jetzt nur mit Odd Skancke's GSXB-Soundtreiber.
- Interrupt, Timer-A: Benutzt den sog. Timer-A um ein Ende des Soundbuffers
  festzustellen. Diesen Timer wird jedoch auch desfteren von anderen
  Programmen benutzt, so dass man ihn nur verwenden sollte, wenn man wei, dass
  kein anderes Programm ihn belegt. Dieser Interrupt funktioniert nur mit
  orginal Atari-Hardware und mit dem Milanblaster.
- Interrupt, MFP-i7: Wie Timer-A, wird jedoch kaum von anderen Programmen
  benutzt. Dafr haben die intelligenten Atari-Konstrukteure diesen Interrupt
  mit dem Monochrom-Monitor-Signal verknotet, so dass es hier je nach ange-
  schlossenem Monitor evtl. zu Reibereien kommen kann...

Und nun eine bersicht, auf welchen Rechner Tetrax getestet wurde und laufen
sollte:

- Falcon030
  Die beiden Polling-Modi funktionieren problemlos, um einen Interrupt (Timer-A
  oder MFP-i7) benutzen zu knnen, muss man vorher erst einmal RXSETBUF.PRG
  starten.
- Mega-STE mit meinem Soundtreiber XSOUND.
  (http://www.crosswinds.net/~thothy/atari/xsound.html)
  TT und normale STE sollten auch mit XSOUND funktionieren - wobei ein
  normaler STE wahrscheinlich nicht genug Rechenpower fr 50Khz Frequenz hat,
  dann einfach 12 oder 25kHz benutzen.
  An Interrupts kann man theoretisch Timer-A und MFP-i7 benutzen, ausfhrlich
  getesten habe ich dies jedoch nicht.
- Milan mit Milanblaster (und Milanblastertreiber)
  Mit dem Milanblaster sollten sogar die beiden Interrupts Timer-A und MFP-i7
  funktionieren!
- Milan und Hades mit ES1371 PCI Soundkarte und GSXB Treiber
  (http://assemsoft.atari.org)
  Test verliefen bis jetzt noch nicht zufriedenstellend. Bei Problemen bitte
  mir einfach mal eine E-Mail schicken!
  Dieser Treiber untersttzt als einziges den GSXB-Interrupt.
- Intel-PC mit MagicPC V.6 Demoversion
  Nur der normale Polling-Modus funktioniert, nicht einmal Looping.
- Apple Mac mit MagicMac
  Sollte auch funktionieren, jedoch nur Polling-Modi.

Egal ob Tetrax bei dir luft oder nicht, ich htte immer gerne ein bisschen
Feedback zu Tetrax - also schreib mir eine E-Mail:

 thothy@gmx.net

Kurz und bndig, hier noch ein paar Features von Tetrax:

- Tetrax luft als PRG und ACC, einfach umbenennen.

- Der Hauptdialog befindet sich multitaskingfreundlich in einem Fenster.

- MultiTOS Drag&Drop wird untersttzt. Probiert (bei einem Multitasking-TOS)
  mal folgendes: Zieht vom Desktop eine MOD-Datei auf das Tetraxfenster. Die
  Datei wird geladen und abgespielt!

- Tetrax lsst sich aus eigenen Programmen "fernsteuern"; ich habe bis jetzt
  jedoch noch keine Lust gehabt, dies genauer zu dokumentieren. Interessierte
  knnen sich mal die Datei MODMESAG.H ansehen.

- Iconify und Shutdown werden untersttzt.

- Tetrax luft, wenn mglich, in der MiNT-Domain, d.h. lange und case-sensitive
  Dateinamen werden untersttzt. Und ab Mint 1.15 wird auch die neuen Cookiejar
  Funktionen untersttzt, d.h. keine Zugriffe mehr auf Systemvariablen.

- Luft auch mit oAESis, XaAES, Geneva, MultiTOS, N.AES und Magic
  (Falls es Probleme geben sollte, E-Mail an mich!).

Tetrax bietet drei verschiedene Dialogfenster. Nach dem Start landet man zuerst
einmal im Hauptdialog. Hier findet man verschiedene Icons mit denen man das
Abspielen der MODs steuert. In der ersten Reihe sind Knpfe zum Starten und
Anhalten der Musik und noch zwei Knpfe zum Vor- und Zurckspulen. Vor- und
Zurckspulen funktioniert leider noch nicht ganz perfekt, aber zumindest schon
mal ein bisschen.
In der unteren Reihe findet man einen Knopf zum Laden, einen um den Konfigura-
tionsdialog aufzurufen (Zahnrder-Icon), einen Knopf um Copyright-Informationen
anzuzeigen (Glhbirne-Icon) und noch ein Knopf zum Verlassen des Programms
(Tr-Icon).
Darunter wird der Name des MODs angezeigt, sobald eines geladen wurde.

Im Konfigurationsdialog kann man nun die Abspielmodi einstellen. Normales
Polling ist voreingestellt. Auf manchen Rechnern klingt das Abspielen evtl.
besser, wenn man Polling mit Looping einstellt, aber dafr eiert hier der Sound
schneller, wenn Tetrax unterbrochen wird.
Vorsicht beim Einstellen von Interrupts!!! Das sollte man wirklich nur aus-
whlen, wenn man wei was man tut! Mit Interrupts kann man schnell mal das
komplette System aufhngen, wenn man nicht aufpasst!
Darunter kann man dann noch die Abspielfrequenz der MODs einstellen, zur
Auswahl stehen 12kHz, 25kHz und 50kHz. Je hher die Abspielfrequenz ist, desto
besser hrt sich das MOD an, aber desto hher ist auch der Rechenaufwand.
Auf langsamen Rechnern (mit weniger als 16 Mhz) sollte man nicht 50kHz be-
nutzen!

Tetrax ist Freeware. Das Programm darf kopiert werden, solange keine Vernder-
ungen vorgenommen werden, immer alle Dateien mitkopiert werden und kein Geld
dafr verlangt wird. Eine Ausnahme zum letzten Punkt bilden PD-Disketten, so-
lange der Diskettenpreis 10DM nicht bersteigt, und CD-ROMs. Eine Verbreitung
ber PD-Disketten, CD-ROMs und Mailboxen ist sogar ausdrcklich erwnscht.

Tetrax versucht relativ groe Soundbuffer beim Start zu reservieren. Man
bentigt deshalb ca. 150kByte freies ST-RAM ("DMA-RAM").
Ich bernehme jedoch keine Haftung fr diverse Abstrze oder sogar Schden, die
durch Tetrax entstehen!
Zwar luft Tetrax auch unter TOS 1.00, aber dort ist eine Systemvariable noch
nicht vorhanden, so dass man Tetrax hier nicht als Accessory benutzen kann.

Wenn man Tetrax als Accessory installiert hat und die Auflsung wechselt,
oder wenn man unter MultiTOS die Prozessdatei in U:\PROC\ in den Mlleimer
zieht o.., dann sollte man vorher durch Anklicken des STOP-Buttons das
Abspielen abbrechen. Das Soundsubsystem wird sonst evtl. nicht wieder frei-
gegeben. Das selbe Problem hat man, wenn Tetrax oder ein anderes Programm, das
das Soundsubsytem reserviert, abstrzt - danach ist es weiterhin fr andere
Programme (auch Tetrax) gesperrt. Hierfr ist nun das Programm UNLOCKSN.PRG,
das in einem solchen Fall das Soundsubsystem wieder freigibt. Achtung auch,
wenn man Interrupts benutzt! Wenn hier Tetrax nicht ordnungsgem beendet
wird, laufen die Interrupts ins Leere und das System hngt sich schneller auf
als man bis drei zhlen kann!

So, nun wnsche ich euch noch viel Spa mit Tetrax, bis jetzt wohl (meines
Wissens) der einzige MOD-Player der auch auf dem Milan und Hades luft!

Wenn ihr (gute oder schlechte) Kritik loswerden wollt, am Source interessiert
seid, oder mir neue Abspielroutinen zur Verfgung stellen wollt,
dann wrde ich mich freuen, wenn ihr mir schreiben wrdet:

E-Mail: thothy@gmx.net

Ein herzliches Dankeschn geht an Griff of Electronic Images, auf dessen
Sourcen der Player basiert.
Extra-Gre gehen an Michael Schmitt, der mich dazu motiviert hat, TeTra an
die XBIOS-Soundroutinen anzupassen (und damit dieses Projekt Tetrax zu ver-
wirklichen), an Matthias Jaap fr's Extreme-Betatesten, Odd "ozk" Skancke
fr die Infos zu seinem GSXB-Soundtreiber (http://assemsoft.atari.org) und
Frank Naumann, Thomas Kerkloh, Christian Putzig und einigen anderen mehr
fr's Betatesten! Ohne sie wre Tetrax heute nicht existent!

Meine Homepage findet ihr unter:

http://www.atari-computer.de/thothy/

Hier findet man jeweils die neuste Version von Tetrax und dort gibt's auch
XSOUND, ein Programm, das die XBIOS-Soundfunktionen auch auf dem STE/TT
bereitstellt. Damit luft dann Tetrax auch auf dem STE/TT.


#EOF#
