PAULA ][

(Paula, die Zweite!)

Ein Amiga-MODfile-Player
für den Atari TT & STE

Version 2.4
15.9.1994

Shareware von: Pascal Fellerich

.
Shareware
Ab der Version 2.0 ist Paula Shareware. Das bedeutet, daß Sie das Programm frei kopieren, weitergeben und testen dürfen. Sobald Sie es aber regelmäßig nutzen, wird die Registrierung fällig.
Ursprünglich war Paula nur ein kleines Utility zum Abspielen von MODfiles, das ich innerhalb relativ kurzer Zeit erstellt habe. Da die Reaktionen auf die 1.x-Versionen (die Freeware waren und auch noch sind...) aber sehr positiv waren und viele Anregungen und Verbesserungsvorschläge kamen, habe ich Paula in großen Teilen neugeschrieben. Da mittlerweile auch schon 'etwas mehr' Arbeit in diesem Programm drinsteckt, ist Paula nun Shareware geworden. Lesen Sie hierzu mehr im Abschnitt 'Registrierung'.
Folgende Dateien gehören zum 'PAULA'-Paket und müssen immer zusammen weitergegeben werden:
1.	PAULA.APP	das Programm (kann auch den Namen PAULA.ACC oder PAULA.PRG tragen)
2.	PAULA_D.TXT	die deutsche Anleitung, ASCII Format
3.	PAULA_E.TXT	die englische Anleitung, ASCII Format
4.	MP.TTP	ModPlay: Module auch aus CLI's 	abspielen.
5.	MP.C	Der Sourcecode zu ModPlay
6.	MP.PRJ	Project-File für Pure-C
7.	CHECKMOD.TTP	Prüft Module auf Korrektheit und repariert kaputte Module, soweit dies 	möglich ist.
Falls Ihre PAULA-Version einen Schlüssel benötigt: Die Datei 'PAULA.INF' darf nicht mit weitergegeben werden, da diese Datei unter anderem die Registrierdaten enthält. Selbstverständlich sind alle Manipulationen an dem Programm und an den begleitenden Dateien untersagt. Die Verteilung über Mailboxen und PD-Versender ist erlaubt; jedoch ändert das nichts an den Registrierbedingungen.
Alle Rechte an Paula liegen bei P. Fellerich.
Kontaktadresse:	Pascal Fellerich
		45, rue des Genêts
		L-3482 Dudelange
		(Luxembourg)

	Postscheckkonto:	CCP 65407-29
	Bankkonto:	BIL 6-117/8499
	E-Mail:	2:270/16.3 (Fido-Net)
		fellerich@fido.lu (Internet)

Registrierung
Paula ist Shareware. Das bedeutet, daß bei regelmäßiger Benutzung eine Zahlung fällig wird. Die Versionen 2.0 bis 2.3 wurden erst durch Eingabe eines speziellen, beim Autor erhältlichen Code zur Vollversion. Die Version 2.4 aber hat keinerlei solche Hindernisse eingebaut. Um die Zahlung des Sharewarebetrags zu erleichtern, gilt jetzt: Sie bestimmen selbst den zu zahlenden Betrag! 
 Wenn Sie sich registrieren lassen wollen, schicken Sie mir:
·	Ihre Anschrift (bitte leserlich):
	Name: <Vorname> <Name>      (30 Zeichen maximal)
	Addr: <Straße>              (30 Zeichen maximal)
	City: <Plz> <Stadt>         (30 Zeichen maximal)
·	Den Sharewarebeitrag, den Sie selbst festlegen, mit dem Vermerk, daß es um Paula geht. Der Einfachheit halber akzeptiere ich nur noch Bargeld oder Überweisungen in LUF oder BFR auf mein Konto.
Sie erhalten dann den Schlüssel zu Paula 2.x, der für ältere und eventuell auch folgende Versionen benötigt wird; die Mitteilung erfolgt schriftlich (Brief oder E-Mail). Bei Fragen und/oder Problemen mit Paula ][ helfe ich auch gerne weiter.

Wozu Paula?
Paula spielt die sogenannten 'MOD-Files' auf dem DMA-Soundchip des STE/TT ab. Diese MODfiles, auch als 'Module' bezeichnet, stammen ursprünglich vom Amiga, der einen speziellen 4-Kanal Soundchip namens 'Paula' besitzt.
Natürlich gibt es haufenweise Modul-player für den Atari. Aber Paula ist einzigartig - aber überzeugen Sie sich selbst!

Was kann Paula?
Um lange Beschreibungen zu vermeiden hier eine stichwortartige Aufzählung der 'Features' von Paula 2:
·	Kompatibel zu wirklich allen MOD-Formaten, vom Uralt- Soundtracker Format über Noisetracker bis zum Protracker, ohne Wenn und Aber.
·	Drei Samplingfrequenzen zur Auswahl: 12.5, 25, 50 KHz (mit Petra auf ST's sind 6, 9.6 und 12 KHz möglich)
·	Lineare Interpolation der Samples zur Verbesserung der Klangqualität, in Echtzeit.
·	Booster - verbessert den Signal-Rauschabstand um 6 dB.
·	Tonhöhenveränderung ohne Beeinflussung der Geschwindigkeit.
·	Geschwindigkeitsänderung ohne Beeinflussung der Tonhöhe.
·	Unterstützt LZ5 oder AFX gepackte Module.
·	Echte und saubere GEM-Einbindung, dadurch auf allen TOS- Rechnern lauffähig - auch unter MultiTOS/MiNT.
·	Einfache und intuitive Bedienung.
·	Unterstützt die Auswahlmöglichkeiten von Selectric┐ und Gemini.
·	Programmierbar wie einfache CD-Spieler.
·	Random: Mehrere Module werden in zufälliger Reihenfolge gespielt.
·	Repeat-schalter; Module bzw. ganze Programme können wiederholt werden.
·	Anzeige der Prozessorbelastung und der Position im Modul.

Paulas Entstehungsgeschichte
Als ich meinen TT bekam, wollte ich natürlich den neuen Soundchip testen - also habe ich mir einige MOD-Player für den STE geholt. Nur liefen die meisten Player nicht auf dem TT oder 	aber sie produzierten einen eher miesen Sound. Was blieb mir anderes übrig, als selbst einen Player zu schreiben. Aber das war einfacher gesagt als getan, denn außer der STE/TT Soundhardware mußte ich auch noch die Amiga-Soundhardware kennen, da ich einen Uralt-Player vom Amiga (D.O.C. Abspiel-routine 2.0 vom Juni 1986) portieren wollte. Ein paar Wochen später, Ende Juli 1991 war's dann soweit - Paula 1.0 war fertig. Zwar kannte das Programm nur die Soundtracker-Kommandos aber es lief erst einmal. Anschließend folgten noch einige Optimierungen und Verbesserungen (Version 1.5), aber dann war Schluß.
Erst im April 92 nahm ich die Entwicklung infolge einer Diskussion in der Mailbox (ATARI.GER im Fidonet) wieder auf - es entstanden die Versionen 1.7 und 1.8. Mittlerweile war die Tonqualität ganz brauchbar geworden, aber mit dem Bedienungskomfort war es nicht weit her. Also begann ich mit der Entwicklung einer 'anständigen' Benutzeroberfläche für den Player. Das war's dann...

Systemvoraussetzungen
Paula läuft auf allen Atari-Computern, die
1.	ein TOS-kompatibles Betriebssystem haben, mindestens aber TOS 1.4
2.	eine STE-kompatible Soundhardware besitzen... oder den Sound-treiber PETRA installiert haben.
Damit ein sinnvoller Hintergrundbetrieb möglich ist, sollte der Computer möglichst viel Rechenleistung haben. Auf einem einfachen 8 MHz STE ist der Hintergrundbetrieb zwar möglich aber wenig sinnvoll (12.5KHz Ausgabe bei 50% Rechenzeitverbrauch). Ein 'voll aufgedrehter' Mega STE sollte es schon sein - dann ist bei 50% CPU-Zeit 25KHz Ausgabe möglich.
Damit Paula auch ST's ohne DMA-Hardware läuft, ist ein spezieller Sound-Treiber nötig, der die Funktionalität der DMA- Soundhardware nachbildet. Einen solchen Treiber wurde von Christian Limpach geschrieben, heißt 'PETRA' und liegt diesem Paket bei. Hinweise zur Benutzung finden Sie als Textdatei bei dem Programm.

Installation
Paula kann als Accessory (Endung .ACC) oder als Programm (Endung .PRG oder .APP) gestartet werden. Im Allgemeinen ist der Accessory-Betrieb vorzuziehen. Natürlich kann Paula auch von Chameleon geladen werden.
Unter MultiTOS oder Magix kann Paula aber auch als Programm im Hintergrund laufen.
Außerdem ist es empfehlenswert, XCONTROL gleich mit zu installieren (falls nicht schon vorhanden), um Lautstärke, Tiefen, Höhen und Balance einstellen zu können. Dann sollte der Rechner noch an die Stereoanlage angeschlossen sein, damit Ihre Mitbewohner möglichst effektiv in ihrer Nachtruhe gestört werden können.

Anleitung
Nachdem Paula gestartet worden ist, erscheint ein Fenster mit dem Haupt-Dialog. Dieser ist optisch in 6 Bereiche aufgeteilt:
 1.	Infozeile
 2.	Player & Sound Setup
 3.	SampleFreq
 4.	CPU Load
 5.	Position
 6.	Das Tastenfeld
 Es folgt nun die obligate Erklärung der einzelnen Schalter und Knöpfe, danach kommen allgemeine Bedienungshinweise.

Das Tastenfeld
Beginnen wir mit dem Einfachsten, dem Tastenfeld. Es ist aufgebaut wie bei einem Kassettenrecorder, daher sollte die Bedienung keine Probleme bereiten. Zusätzlich ist in jedem Tastensymbol ein Buchstabe untergebracht. Das ist der zugehörige Tastatur-'Shortcut'.
LOAD: Zuerst muß natürlich ein Modul geladen werden, dazu dient dieser Knopf. Es erscheint die Fileselektor-Box und Sie können ein Modul auswählen. Bei 'OK' lädt Paula sofort die ausgewählte Datei. Bei Erfolg erscheint in der Infozeile des Fensters der Text 'Stopped: <modfilename>'. Eventuell auftretende Fehler werden sofort mit einer Alertbox quittiert. Mit 'Selectric┐' als Fileselektor können Sie auch mehrere Dateien gleichzeitig auswählen!
STOP: Beendet das Abspielen eines Moduls und setzt Paula zurück. Waren mehrere Dateien ausgewählt, so wird diese Programmierung von Paula auch aufgehoben. Die Statusanzeige zeigt den Text 'Stopped: ...'. Wenn im Accessory-Betrieb in diesem Zustand das Fenster geschlossen wird, gibt Paula den für das letzte Modul reservierten Speicher frei.
PLAY: Startet das Abspielen. Wenn noch keine Datei(en) geladen war, erscheint zuerst der Fileselektor mit der Aufforderung 'Load MODfile'. Wurden mehrere Module angegeben, dann wird das laufende Modul beendet und Paula geht zum nächsten Modul in der Liste über.
PAUSE: Dient dazu, das Abspielen zeitweilig anzuhalten. Im Gegensatz zu 'STOP' wird dabei nichts gelöscht, zurückgesetzt oder sonstwie beeinflußt. Im 'Pause'-Zustand kann das Accessory auch verlassen werden, ohne daß die geladene Datei freigegeben wird. Zum Weitermachen reicht es, einmal Pause oder Play anzuklicken.
REW: (REWIND) Springt eine Position im Modul zurück. Diese Funktion arbeitet nur wenn der Paula sich im Play- oder Pause- Modus befindet.
FF: (FAST FORWARD) Springt eine Position nach vorne im Modul, nicht jedoch über das Ende hinaus. Auch dies Funktion arbeitet nur im Play- oder Pause-Modus.
!: (Ausrufezeichen) Ruft den 'Setup' Dialog auf, in dem einige weitere Funktionen wie Tonhöhen- und Geschwindigkeitsveränderung sowie Parameter sichern zur Verfügung stehen.
?: (Fragezeichen) Allgemeine Information über das Programm und den Autor. Über diesen Dialog ist auch das Registriermenü zugänglich. Wie die Registrierung vorgenommen wird, ist im Abschnitt 'Registrierung' beschrieben.
Am Besten ist wenn Sie alle Funktionen einmal ausprobieren. Paula ist durch unsinnige oder falsche Bedienung nicht aus der Ruhe zu bringen!

Die Infozeile
In der Infozeile zeigt Paula die aktuelle Betriebsart und eventuell einen Modul-Titel an. Es gibt vier Zustände:
Inactive	Paula tut gar nichts. Es ist keine Datei geladen und somit auch kein Speicher belegt. Im Accessorybetrieb muß Paula vor dem Auflösungswechsel in diesem Zustand sein um Speicherverlust oder gar Abstürze zu vermeiden.
Stopped	Paula hat ein Modul geladen. Im Accessorybetrieb führt ein Auflösungswechsel jetzt zu Speicherverlust, da der von Paula allozierte Speicher nicht mehr freigegeben werden kann.
Paused	Paula wartet darauf, weiterspielen zu dürfen. Jetzt können Sie auch mit den Tasten '<<' und '>>' im Modul hin- und herspringen.
Playing	Paula ist beschäftigt - das sollten Sie auch hören! Wenn jemand anders auf den DMA-Soundchip zugreift, wird Paula dadurch natürlich gestoppt. Sobald der Soundchip wieder frei ist, versucht Paula weiterzuspielen. Das kann bis zu einer Sekunde dauern (funktioniert NICHT in Verbindung mit 'Petra'). Läuft der Player trotzdem nicht mehr an (-> Bugreport an mich!) können Sie sich helfen indem Sie einfach PAUSE/PLAY oder PAUSE/PAUSE drücken.

SampleFreq
Damit kann die Samplingfrequenz bei der Tonausgabe eingestellt werden. Zur Auswahl stehen die Frequenzen 12.5, 25 und 50 KHz. Je höher die Samplingfrequenz, desto höher auch die obere Grenzfrequenz. Theoretisch ist die höchstmögliche erzeugt Tonfrequenz genau fsample/2 (Shannon'sches Abtasttheorem); praktisch etwa 40% der Abtastfrequenz infolge der im STE/TT verwendeten Filterstufen. Bei 25 KHz Samplingfrequenz können also Töne von bis zu 10 KHz sauber erzeugt werden.
Die Änderung der Samplingfrequenz wird sofort übernommen. Beim Umschalten wird der Ton kurzzeitig unterdrückt, um Störgeräusche (Krachen, Zirpen usw.) zu vermeiden.

Player & Sound Setup
In diesem Bereich befinden sich zwei Arten von Schaltern:
·	Schalter zur Beeinflussung der Tonerzeugung
·	Schalter zur Einstellung der Abspielmodi
─ Interpolate: Schaltet die Interpolation ein. Dadurch verbessert sich die Tonqualität sehr stark (saubere Höhen), aber es kostet viel Rechenzeit. Auf TT's ist Interpolation eigentlich ein Muß, da der 68030 die nötigen Shift- und Multiplikationsbefehle sehr viel schneller als der 68000 bewältigt. Das Gesagte gilt übrigens auch für STE's mit 68020 oder 68030 Beschleunigerkarte.
─ Booster: Hebt die Lautstärke mit einem Trick um 6 dB an. Dadurch wird das Hintergrundrauschen besser verdeckt, allerdings nehmen die Verzerrungen bei lauten Passagen zu. Da diese Verzerrungen aber zweiter Ordnung sind, klingt das Ganze nach 'Röhrensound'.
─ Protracker: Schaltet die Protracker-Kompatibilität ein. Im Prinzip sind die Module zwar abwärtskompatibel, so daß ein neuerer Player auch alte Module abspielen kann, aber mit dem Protracker wurden soviele Veränderungen eingeführt, daß bei verschiedenen Modulen diese Abwärtskompatibilität nicht mehr gegeben ist. Deshalb ist dieser Schalter vorgesehen, um im Falle eines 'kritischen' Moduls einige (nicht alle!) Protracker-Features ausschalten zu können. Bei 15-Instrument-Modulen wird dieser Schalter nicht beachtet, da es sich nicht um ein Protracker-format handeln kann.
─ Repeat: Dieser Schalter erfüllt eine Doppelfunktion. Falls nur ein Modul ausgewählt wurde, bezieht sich Repeat auf das eine Modul. Das wird dann solange abgespielt, bis Sie Paula selbst unterbrechen. Wurden mehrere Module ausgewählt, so wirkt Repeat auf diese Liste von Modulen. Nachdem alle Module einmal abgespielt worden sind, beginnt Paula wieder von vorne. Übrigens existieren Module, die mit 'Jump'-Befehlen eine Endlosschleife aufbauen. Paula erkennt diese und knackt sie...
─ Random: Die Karten werden gemischt... Diese Funktion arbeitet nur, wenn mehrere Module ausgewählt worden sind. Nun werden die Module nicht mehr der Reihe nach abgespielt, sondern in einer zufälligen Reihenfolge - aber jedes Modul nur einmal. Sind alle Module abgespielt, hängt die weitere Verfahrensweise vom 'Repeat'-Schalter ab: ist er eingeschaltet, beginnt der Prozess wieder von vorne, andernfalls stoppt Paula und 'vergißt' die eben gespielte Liste.

CPU-Load Indikator
Dieser Balken zeigt an, wieviel Rechenzeit Paula für sich abzweigt. Es handelt sich hier um eine relative Anzeige, bei der 100% immer die gesamte Rechenleistung des Computers darstellen.
Am rechten Ende des Balkens befindet sich noch ein rotes Anhängsel - das ist die Überlastungsanzeige, die jedesmal, wenn die Rechenzeit mal nicht gereicht hat, für eine knappe Sekunde 'aufleuchtet'.

Position
Diese Anzeige gibt die aktuelle Position im Modul an. Die Position wird Hexadezimal angezeigt, so wie das bei den Sound/Noise/Pro-trackern üblich ist.

Allgemeine Bedienungshinweise:
Die grundsätzliche Bedienung ist kein Geheimnis und sollte niemandem Probleme bereiten. Aber die Spezialitäten wollen doch genauer erklärt sein. Darunter fallen:
·	Verlassen des Haupt-Dialogs
·	Mehrfachauswahl von Modulen ('Multiplay-Modus')
·	Reaktion des Tastenfeldes
·	Versteckte Funktionen
Wenn das Fenster mit dem Haupt-Dialog im Accessory-Betrieb geschlossen wird, läuft der Player weiter. Analog zu XCONTROL kann dieses Fenster auch mit Return geschlossen werden.
Läuft Paula als normales Programm, wird es durch Schließen des Fensters verlassen und das laufende Modul wird angehalten. Deshalb wird in dieser Betriebsart Return nicht als CloseWindow-Kommando interpretiert.
Mehrfachauswahl... Die einfachste Art, mehrere Dateien anzugeben, besteht darin, in der Fileselektorbox eine Dateimaske (Wildcards) anstelle des erwarteten Namens anzugeben. Also LOAD anklicken, und in der Fileselektorbox im Namensfeld beispielsweise 'A*.MOD' eingeben. Paula sucht dann alle Dateien in dem angegebenen Pfad, die mit 'A' beginnen und deren Endung '.MOD' ist. Natürlich müssen im eingestellten Verzeichnis auch Module liegen! Um alle Module im angegebenen Pfad abzuspielen reicht es, keinen Namen anzugeben. Paula wählt dann alle Dateien aus, die die Endung '.MOD' haben.
...mit Selectric: Falls Sie 'Selectric┐' als Fileselektorbox installiert haben, wird es noch einfacher: wählen Sie einfach die gewünschten Dateien an. Das geschieht mit einem Mausklick mit gedrückter Shift-Taste; weitere Selektionsmöglichkeiten sind in der Anleitung zu Selectric┐ beschrieben.
...mit dem Desktop, Gemini, EASE u.s.w: Melden Sie PAULA als Applikation für Dateien des Typs 'MOD' an. Paula wertet nicht nur die Kommandozeile aus, sondern versteht auch VA_START Nachrichten.
Reaktion des Tastenfeldes: Paula versucht immer, den aktuellen Betriebszustand beizubehalten. Wenn schon ein Modul läuft ('Playing: ...') und Sie wählen ein anderes Modul aus - egal ob mit der Taste 'LOAD' oder mit Gemini - dann spielt Paula sofort nach dem Laden des Moduls weiter.
Wenn Paula gestoppt war und Sie wählen mehrere Module per 'LOAD' aus, springt Paula sofort in den Pause-Modus. Dies muß geschehen, weil Paula die eben angegebene Liste im Stop-Modus sofort vergessen würde. Auch hier ist es am einfachsten, sich durch Probieren an die Funktionsweise des Programms zu gewöhnen.
Spezialitäten: Paula ist an Multitasking-Umgebungen angepaßt. Das begreift folgende Funktionen:
·	Paula wertet seine Kommandozeile aus.
·	Paula versteht VA_START sowie eigene (MP_...)-Nachrichten
·	Paula erkennt bereits laufende Kopien von sich selbst und übergibt die Kontrolle an das zuerst gestartete Programm. Es kann also immer nur eine Kopie ('Instanz') von Paula laufen.

Setup-Page - Dialog
 Dieser Dialog wird aufgerufen, wenn Sie die Taste '!' betätigen. Hier stehen die Optionen zur Tonhöhenveränderung und zum Abspeichern der Einstellungen bereit.
Pitch Bend (cent): Damit läßt sich die genaue Stimmung des Players beeinflussen. In der Grundeinstellung hat Paula die gleiche Stimmung wie ein Amiga mit 7.15909 MHz (NTSC). PAL- Amigas sind aber mit nur 7.09379 MHz getaktet, klingen also tiefer. Diese Stimmung wird erreicht, wenn Pitch-Bend auf -10 bis -15 cent steht. So ganz genau braucht diese Einstellung nicht zu sein, da eine Tonhöhenänderung um 5 cent sowieso die unterste Grenze der Wahrnehmbarkeit darstellt. Der Einstellbereich geht von +100 bis -100 cent, was +/- einem Halbton entspricht.
Transpose: Für's Grobe. Ändert die Stimmung in Halbtonschritten. Der Einstellbereich ist +/- 12 Halbtöne, was +/- einer Oktave entspricht.
Frame Speed: Das ist die 'Taktgeschwindigkeit', mit der die Modul abgearbeitet wird. Beim Amiga kommt dieser Takt vom VBI (Vertical Blank Interrupt) und beträgt somit 50 Hz bei PAL- Amigas. Da Paula ohnehin alles emuliert, ist auch dieser Parameter einstellbar - von der halben bis zur doppelten Sollgeschwindigkeit.
Save: Sichert die gegenwärtig eingestellten Parameter in der Datei 'PAULA.INF' und verläßt den Dialog. Es werden auch die im Hauptdialog gemachten Einstellungen gesichert.
Exit: Verläßt den Dialog. Die Einstellungen werden nicht beeinflußt.
Reset: Setzt die drei Einstellung zurück und verläßt den Dialog.

Info Page Dialog:
Die obligate Informationsbox... Eine beliebte Art, auf die fällige Registrierung aufmerksam zu machen.

Gepackte Module!
Seit Version 2.1 unterstützt Paula auch gepackte Module. Zur Zeit wird nur das '-lz5-'-Verfahren benutzt, also das Gleiche wie bei AFX. Um Module entsprechend zu komprimieren, können Sie LHARC.TTP, ab Version 2.01 benutzen. Damit läßt sich ein ganzes Directory einfach und einigermaßen schnell packen. Wenn Sie alle Module in C:\MODFILES\ untergebracht haben, starten Sie LHARC.TTP und geben als Kommandozeile 'c C:\MODFILES\*.MOD' ein. Die Dateien behalten den gleichen Namen, schrumpfen aber auf durchschnittlich 75% ihrer Originalgröße.

Fehlermeldungen
Paula meldet eventuell auftretende Fehler per Alertbox. Dies sind normalerweise immer Dateifehler. Um Probleme mit plötzlich auftauchenden Alertboxen zu vermeiden, erfolgen diese Fehlermeldungen nicht, wenn Paulas Fenster geschlossen ist.
Es seien die Module A.MOD, B.MOD und C.MOD angegeben. Paula beginnt mit A.MOD, danach wird das Fenster geschlossen. Nachdem A.MOD fertig ist, versucht Paula B.MOD zu laden. Wenn das schiefgeht, stoppt Paula alle Aktionen und 'vergißt' die angegebene Liste. Wenn Sie nun Paula erneut aufrufen und 'LOAD' anklicken, erscheint im Fileselektor der zuletzt benutzte Pfad und Dateiname.
Wenn die Meldung 'Corrupted MODfile' kommt, bedeutet das, daß das angegebene Modul fehlerhaft ist. Oft ist ein Sample zu kurz oder es hängen falsche Daten am Modul dran. Als kleine Hilfestellung steht Ihnen das TOS-Programm 'CHECKMOD.TTP' zur Verfügung. Es liest Module, gibt Informationen darüber aus und kann die Module in vielen Fällen reparieren, so daß Paula sie wieder akzeptiert.

Weiterführende Erklärungen
In einem Modul sind bis zu 31 Samples, manchmal auch als Instrumente bezeichnet, gespeichert. Um ein bestimmtes Sample in verschiedenen Tonhöhen auszugeben, spielt der Amiga das Sample einfach mit verschiedenen Abtastfrequenzen ab. Je höher die Abtastfrequenz, desto höher der erzeugte Ton. Da der Amiga vier unabhängige Tonkanäle besitzt, kann er vier Samples gleichzeitig abspielen, mit verschiedenen Abtastfrequenzen versteht sich. Damit ist die Tonerzeugung sehr einfach und kostet keine Rechenzeit. Auf dem Atari ist die Sache schon schwieriger: der STE/TT DMA-Soundchip hat nur zwei Kanäle (Stereo L + R), außerdem stehen nur vier Abtastfrequenzen zur Auswahl, wobei immer nur eine ausgewählt sein kann und für die beiden Stereo-Kanäle gilt. Also muß ein anderes Verfahren zur Tonerzeugung benutzt werden - die direkte digitale Synthese. Die Funktionsweise ist eigentlich ganz einfach: Die Daten des Originalsamples werden nicht mehr 1:1 ausgegeben, sondern 1:R, wobei R eine Realzahl ist. Soll also ein Sample bei einer tatsächlichen Abtastrate von 10 KHz mit 5 KHz ausgegeben werden, ist R gleich 2 - jedes Byte wird zwei mal ausgegeben. Sind 7.5 KHz gewünscht, so gilt R=1.5 . Da in der Praxis nur ganzzahlige Schritte möglich sind, wird der erste Samplewert einmal ausgegeben, sein Nachfolger zwei mal, der nächste wieder einmal usw. Im Mittel ergibt sich dann 1.5, und das Ohr bekommt was will: 7.5 KHz.
Nun hat dieses Verfahren das Problem, daß das Sample nicht gleichmäßig abgetastet wird. Beim oben erwähnten Beispiel ergibt sich folgendes Schrittschema:
1 1 0 1 1 0 1 1 0 1 1 0 1 1 0
Bei tiefen Tönen, wenn ein Sample von 10 KHz auf 1 KHz 'tiefergelegt' wird, muß jedes Wort im Sample 10 mal ausgegeben werden - also erhält man das Schrittschema:
1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 usw.
Wenn man die dabei entstehende Kurve aufzeichnet dürften sofort die unregelmäßigen Treppen im Signal auffallen. Und genau diese Treppen werden als Störgeräusche (Sirren, Pfeifen) hörbar. Um dieses Problem zu umgehen müßten eigentlich Zwischenwerte eingebaut werden - und genau dies bewerkstelligt die Interpolation. Ideal wäre die Spline-Interpolation; da dies aber Matrixrechnen erfordert benutzt Paula eine einfach lineare Interpolation. Auch damit wird das erzeugte Signal 'glatter' und klingt besser. Das ist nicht zu verwechseln mit dem Oversampling, das einige MODplayer anbieten, und das darin besteht, jeden Samplewert zu verdoppeln um ihn dann mit der (ebenfalls) verdoppelten Samplingfrequenz auszugeben. Damit wird das Signal nur höhenlastiger, da die Filterstufen im STE/TT entsprechend anders eingestellt werden.
Noch ein paar Worte zur Tonqualität: Durch die 'echte' Interpolation klingt Paula (die Emulation) bei 25 bzw. 50 KHz besser als Paula (Der Amiga-Chip)! Das liegt vor allem daran, daß der Amiga einen fest eingestellten 7 KHz Tiefpaßfilter hat, der die Höhen radikal wegrasiert. Wird der abgeschaltet, sind zwar die Höhen wieder da, aber auch die unvermeidlichen Aliasingprodukte. Skeptikern empfehle ich einen Amiga sowie dessen Hardware Reference Manual [2].
Dem Amiga bleibt noch der Vorteil der größeren Dynamik, denn dort hat jeder der vier Kanäle seinen eigenen Lautstärkesteller, durch den 6 bit gewonnen werden. Der Rauschabstand zum Nutzsignal bleibt zwar bei 48 dB - normal für 8 bit - aber leise Module werden immer noch sauber abgespielt, wo Paula (die Emulation) schon mit dem Quantisierungsrauschen zu kämpfen hat. Die im Amiga eingesetzten Wandler können auch als 'Fließkommakonverter' bezeichnet werden. Um nicht das Nachsehen zu haben, bietet Paula die 'Boost'-Option. Dann wird eine nichtlineare Wandlerkennlinie benutzt, so daß eine Pseudo- Auflösung von 9 bit erreicht wird. Bei leisen Passagen wirkt das Wunder, bei lauten Passagen nehmen allerdings die Verzerrungen zu.
Falls es Ihnen egal ist, wie die Interpolation funktioniert, überspringen Sie den folgenden Absatz! Falls nicht: Hier die Interpolationsroutine, der Übersichtlichkeit halber schematisch in C formuliert:

/* Fix-Point Zahl, zu Angabe des Abtastschrittes */
typedef struct fxp {
	int ip;						/* integer part (1/1) */
	int fp;						/* fractional part (1/65536) */
} fixpoint;
/* Holt ein Byte aus dem gespeicherten Sample und berechnet
 * den passenden Zwischenwert.
 * Param: spl: Zeiger auf das Sample
 * index: Index im Sample als Fixpoint-Zahl
 * volume: Amiga-Volumeregister Wert, 0..64
 * Return: Der resultierende Samplewert als integer.
 * Bereich: 14 bit (8 bit sample + 6 bit volume info)
 */
int get_samplevalue( char *spl, fixpoint index, int volume )
{
	int s1,s2;					/* Samplewerte sn und sn+1 */
	s1 = volume * spl[index.ip];
	s2 = volume * spl[index.ip+1];
	return (((s2-s1)*index.fp)/65536 + s1);
}

Dann muß der Index inkrementiert werden, was auf eine Addition zweier Fixpoint-Zahlen hinausläuft, der Rückgabewert muß gespeichert bzw. auf den entsprechenden Wert eines anderen Kanals aufaddiert werden, das Ganze muß auf 8 bit zurückskaliert werden und nebenbei muß noch beachtet werden, daß ein Sample auch irgendwann zu Ende ist. Da vier Kanäle vorhanden sind, muß die obige Routine bei 50 KHz Ausgabefrequenz 200.000 (zweihunderttausend) Mal pro Sekunde ausgeführt werden. Damit dieser Vorgang in Echtzeit ablaufen kann, ist Rechenleistung und eine gehörige Portion Gehirnschmalz nötig, denn ohne jegliche Optimierung hätte selbst der 68030 keine Chance...

Immer ein beliebtes Kapitel: BUGS & LIMITATIONS!
Kollisionen: Prinzipiell verträgt sich Paula mit allen anderen Programmen; da Paula aber direkt auf die DMA-Soundhardware zugreift, sind Kollisionen mit anderen Programmen, die das Gleiche tun wollen, unvermeidlich. Solange das 'andere' Programm einigermaßen sauber programmiert ist und die Hardware stets in einem sauber definierten Zustand hinterläßt, passiert nichts - außer daß Paula gestoppt ist.
Überlastung: Wenn der Rechner total überlastet ist, stimmt das interne Timing natürlich nicht mehr. Deshalb ist der Zeitpunkt, zu dem die Hardware-Register beschrieben werden, undefiniert. Dadurch kommt es manchmal vor, daß der Soundchip den falschen Speicherbereich abspielt, obwohl in den Chipregistern die richtigen Werte stehen (!) - dann gibt's Katzenmusik. Dagegen hilft: PAUSE, Samplingfrequenz herruntersetzen oder Interpolation ausschalten um Rechenzeit zu sparen, dann nochmals PAUSE. Oder hatten Sie etwa den Cache des 68030 ausgeschaltet ???
Auflösungswechsel: Vor jedem Auflösungswechsel muß sichergestellt sein, daß Paula inaktiv ist. Also Paula einmal aufrufen, 'S' (für STOP) und dann Return (Fenster schließen). Falls MultiTOS die spezielle (neu eingeführte) GEM-Message AP_TERM, die den bevorstehenden Auflösungswechsel ankündigt, an die einzelnen Programme schickt, kann Paula darauf mit der Einstellung aller Aktivitäten reagieren.
Protracker 'CIA'-Replay-Speed: Seit Version 2.2 funktioniert das CIA-Speed-setup astrein, ohne Einschränkungen. Nachteil: Einige Noisetracker-Module werden jetzt falsch abgespielt. Abhilfe: Protracker-Modus ausschalten!
 Abstürze auf STE's: Irgendwie beißt sich Paula mit einigen 1040STE: Auf zwei STE's gab's totale Hänger, und auf einem mit 16MHz CPU ausgerüstetem 1040'er gab's Bomben wegen Cache-fehler, unabhängig vom Modul. Das ist ein Hardwareproblem dieser STE's, da kann man leider nichts machen. Ab v2.4 sind jedoch TAS-Befehle entfernt worden, was die Chancen für diese STEs erhöht.

Internes
GEM-Benutzerschnittstelle: Paula verarbeitet die von Gemini stammende 'VA_START'- Nachricht. In einer solchen Message ist in msg[3] und msg[4] ein Zeiger enthalten, der von Paula ausgewertet wird. Der Player reagiert folgendermaßen:
·	Nullpointer oder Zeiger auf Leerstring: Gleiche Reaktion wie bei AC_OPEN.
·	Zeiger auf String mit einem Namen: Paula lädt dieses Modul und startet es sofort.
·	Zeiger auf String mit mehreren Namen: Paula geht in den 'Multiplay'-Modus über und spielt alle MODs.
Der übergebene String wird intern kopiert, kann auf der Aufruferseite lokal sein. Wichtig ist nur, daß Dateinamen im String durch genau ein Space/Komma/Semikolon getrennt sind und daß keine Wildcards benutzt werden. Zur Komplettierung des Dateinamens wird intern SHEL_FIND benutzt.
Ab Version 2.4 gibt es auch neue GEM-Messages:
·	MP_ACK (0x4800): Paula sagt OK! Das vorige Kommando ist verstanden worden. msg[7] enthält die Versionsnummer des Programms; 0x204 = v2.4
·	MP_NAK (0x4801): Paula sagt NICHT OK! Das vorige Kommando ist nicht verstanden bzw. abgelehnt worden. msg[7] enthält die Versionsnummer des Programms; 0x204 = v2.4
·	MP_START (0x4802): Funktion ist identisch mit VA_START. Nach Übernahme des Kommandostrings schickt Paula aber eine MP_ACK (bzw. MP_NAK)-Nachricht an den Absender zurück, und signalisiert so, daß der in der MP_START-Nachricht angegebene Speicherbereich anderweitig benutzt werden kann. Dies ist sehr wichtig in Multitasking-Systemen bzw. für MP.PRG (Sourcecode MP.C liegt bei).
·	MP_STOP (0x4803): Stoppt Paula und gibt den für MODs und Playlisten allozierten Speicher frei. Das Fenster bleibt offen. Paula schickt MP_ACK zurück.
·	MP_SHUTDOWN (0x4804): Stoppt und beendet Paula. Im Accessory-Modus wird nur der Speicher freigegeben und das Fenster geschlossen.Paula schickt MP_ACK zurück.
Vektorverbiegerei... Paula belegt den I07 (monochrome monitor detect) - Interrupt der 68901 MFP. Dazu wird eine XBRA-Kennung 'PAUL' benutzt.
Speicherverbrauch: Paula benötigt rund 45 KB für den Programmcode und fixe Daten. Auf Maschinen mit dem 68000-Prozessor kommen noch 15 KB für Volumetabellen hinzu.
Notstop: Um Paula sofort 'abzuwürgen' und zur Freigabe des allozierten Speichers zu zwingen, reicht es, eine AP_TERM-Message zu schicken. (AP_TERM = GEM message Nummer 50). Allerdings sollte dazu besser MP_SHUTDOWN verwendet werden.
Speeeeed!  Um auf dem TT möglichst wenig Rechenzeit zu verbraten, sollte Paula komplett ins 'Fast'-RAM geladen werden (soweit vorhanden). Der Prozessorcache sollte dabei unbedingt eingeschaltet bleiben, sonst sackt der TT auf ST-Leistung ab. Ohne Cache wird's selbst auf dem TT sehr knapp bei 50 KHz Interpolation (wobei zu bemerken ist, daß ein gewisser anderer MODplayer 50 KHz Interpolation selbst bei eingeschaltetem Cache kaum noch meistert!).
Hardware: Weder der MFP-Timer A noch der Yamaha Soundchip werden angetastet. Somit bleibt Ihnen der Tastaturklick und die Systemglocke erhalten, es ist darüber hinaus noch möglich, digitale Soundeffekte mit dem Yamaha-Chip zu erzeugen. Mit STSPEECH.TOS lassen sich beliebige Texte in ein laufendes Modul einblenden.
Entwicklung: Paula 2 wurde mit Pure C und dem Pure Assembler entwickelt. Der eigentliche 'MODplayer', also die Replay-Routine, basiert auf dem 'Protracker 2.1B Player' der Amiga Freelancers.
Thanx for the help...: Hilfreich zur Seite standen mir:
Joel François:	Amiga Dokumentationen, D.O.C. Replay Routine
Fridolin Koch:	Protracker Replay Routine, gute Module
Georges Kesseler:	Betatester, Optimierungsvorschläge, 'Repeat-Killer'
Christian Limpach:	Betatester, ST-Sound Treiber!

MP - ModPlay Interface
MP.PRG ist ein sehr einfaches Utility, mit dem es möglich ist, Paula auch aus Kommandoshells heraus zu starten. MP schickt die in der Kommandozeile angegebenen Dateien einfach in einer 'MP_START'-Nachricht verpackt an Paula weiter. Wildcards werden nicht von MP ausgewertet; dafür kennt MP aber das ARGV- Verfahren (beim Kompilieren mit 'PCVSTART.O' linken!). Somit werden Shells wie die Mupfel oder Mintshel voll unterstützt.
Haben Sie PAULA als ACC installiert? Dann können Sie MP.TTP im normalen Desktop als Anwendung für '*.MOD' anmelden; dann lassen sich Module auch auf Doppelklick hin abspielen. MP soll kein Musterbeispiel für gelungene C-Programmierung darstellen, es wurde Wert auf Einfachheit gelegt. MP inklusive den Quellcodes ist Public Domain!

CHECKMOD - kaputte Module reparieren
Irgendwann wird Paula ein Modul mit dem Kommentar 'Corrupted MODfile' verwerfen. In diesem Fall kann CHECKMOD helfen: einfach starten und als Parameter den Namen des Moduls (inklusive Pfad) angeben. Bei den neueren TOSsen reicht es, das fragliche Modul auf das CHECKMOD-Icon zu ziehen. Checkmod liest das Modul und gibt eine Liste mit den benutzten Samples aus. Außerdem gibt Checkmod die Art des Fehlers aus.
Corrupted Pattern List: Dieses Modul kann nicht mehr automatisch repariert werden.
Short Sample: Ein Sample ist zu kurz geraten. Falls dieser Fehler nur das letzte Sample betrifft und die Differenz zwischen Ist- und Soll-Länge nicht zu groß ist, sind die 'Heilungschancen' gut. Paula toleriert maximal 4 fehlende Bytes.
Superfluous Data in MODfile: Am Modul hängen noch überflüssige Daten. Diesen Fehler behebt Checkmod problemlos. Paula toleriert bis zu 256 Bytes überflüssiger Daten.
Nachdem Checkmod gelaufen ist, erscheint der Text: Save Module as: Einfach <Return> verläßt das Programm ohne weitere Aktionen, ein Punkt '.' speichert das Modul unter gleichem Namen neu ab. Wenn Sie einen neuen Pfad und Namen angeben, wird das Modul unter diesem neuen Namen gespeichert.

Bibliographie
[1]	Jankowski/Rabich/Reschke
	Atari Profibuch ST/STE/TT
	Sybex Verlag, ISBN 3-88745-888-5

[2]	Amiga Hardware Reference Manual
	Addison-Wesley, ISBN 0-201-18157-6

[3]	Thomsen
	Digitale Audiotechnik
	Franzis' Verlag, ISBN 3-7723-7151-5

[4]	DDS - Direkte Digitale Synthese
	Elektor No257, Mai 1992, s.52ff

[5]	Ulrich Michels
	dtv Atlas zur Musik, Band 1 (Akustik, Wellenlehre, Tonparameter)
	Deutscher Taschenbuch Verlag, ISBN 3-423-03022-4

Registrier-Formular
Ich benutze PAULA, Version 2._ _ und möchte mich registrieren lassen.
Vorname, Name:	_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Straße:	_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Plz, Ort: 	_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Platz für Kommentare, Verbesserungsvorschläge und Fehlermeldungen (bei Problemen bitte auch die verwendete Hard- und Software mit angeben):

Inhaltsverzeichnis
Shareware	3
Registrierung	4
Wozu Paula?	4
Was kann Paula?	4
Paulas Entstehungsgeschichte	5
Systemvoraussetzungen	5
Installation	6
Anleitung	6
Das Tastenfeld	7
Die Infozeile	8
SampleFreq	8
Player & Sound Setup	9
CPU-Load Indikator	10
Position	10
Allgemeine Bedienungshinweise:	10
Setup-Page - Dialog	12
Info Page Dialog:	12
Gepackte Module!	13
Fehlermeldungen	13
Weiterführende Erklärungen	13
Immer ein beliebtes Kapitel: BUGS & LIMITATIONS!	16
Internes	16
MP - ModPlay Interface	18
CHECKMOD - kaputte Module reparieren	19
Bibliographie	19
Registrier-Formular	21
Inhaltsverzeichnis	22