Anleitung zum Eagleplayer Version 1.11 Anleitung $VER: V1.05 (09.08.93) © 1993 Defect Software Productions externes Playerkonzept ©(P) Delirium, erweitert von Defect Inhaltsverzeichnis: 1. Copyright und Vertriebsbedingungen 2. Einleitung 2.1 Was ist und kann der Eagleplayer ? 2.2 Entstehung des Eagleplayers 2.3 Was fehlt in dieser Version noch ? 2.4 Wann kommt der nächste Eagleplayer ? 3. Installation und Start 3.1 Systemanforderungen 3.2 benötigte zusätzliche Dateien 3.3 Installation auf Diskette,Festplatte,... 3.4 Start des Eagleplayers von CLI/SHELL 3.5 Start von der Workbench aus 3.6 Das Konfigurationsfile 4. Benutzung des Programms 4.1 Das Hauptfenster 4.1.1 Steuerung des Programms über die Schalter (Gadgets) 4.1.2 Steuerung über die Pulldown-Menüs 4.1.3 Tastaturkürzel 4.1.4 die Appwindow-Funktion 4.1.5 Pubscreens 4.1.6 Font-Unterstützung 4.1.7 Interne & externe (De)Packer 4.2 Das Player-Fenster 4.2.1 Öffnung und Funktion des Player-Fensters 4.2.2 Steuerung über die Schalter und Erklärung der Funktionen 4.2.3 Interne Player 4.3 Die User-Programme 4.3.1 Einleitung 4.3.2 Steuerung der User-Programme 5. Fehler 5.1 Fehlermeldungen 5.2 Fehler des Programms 5.3 Problemecke 6. die Programmierung externer Player 6.1 Das externe Player Konzept 6.1.1 Schematischer Aufbau von externen Playern 6.1.2 Schematischer Aufbau von Custom Modulen 6.2 Anpassung von Playern 6.2.1 Playerheader 6.2.2 Modulerkennung 6.2.3 Interrupts 6.3 Bedeutung der Tags 6.4 DeliTracker support Funktionen 6.5 Tips zur Anpassung 6.6 die Besonderheiten und Neuerungen des Eagleplayers 6.6.1 Die neuen Tags 6.6.2 Moduleinfo 6.6.3 Analyzeransteuerung 6.6.4 Die neuen Eagleplayer-Globals 7. Das Arexx-Interface 7.1 Einführung und Beschreibung des Arexx-Portes 7.2 Kommandoübersicht 7.3 Arexx-Anpassung an DirOpus 4 8. Danksagungen 1. Copyright und Vertriebsbedingungen ===================================== Der Eagleplayer ist in der vorliegenden Version als Shareware zu betrachten. Dies heißt, daß wir bei regelmäßiger Benutzung eine Gebühr von 20 DM (bzw. 30US$ außerhalb von Deutschland) erwarten, die in BAR oder als Eurocheque zu entrichten ist (andere Währungen oder Cheques können wir leider nicht akzeptieren). Als Gegenleistung erhalten Sie die neueste Version des Eagleplayers zurück, die einige, in der SharewareVersion gesperrte Funktionen (z.B. Save, Tooltypes-Unterstützung) besitzt. Außerdem gibt`s die verbesserte Version inclusive neuer Userprogramme alle gratis, so daß die Sharewaregebühr angesichts der Postpreise durchaus gerechtfertigt ist. Schicken sie die ausgefüllte Registrierkarte (Orderform) an: Eagleeye Buggs -------- ----- Jan Blumenthal Henryk Richter Erich Mühsam Straße 33 oder Stephan-Jantzen-Ring 47 18069 Rostock 18106 Rostock Germany Germany Telefon: 0381 / 83979 Falls Sie irgendwelche Bemerkungen, Vorschläge, Bugreports, neue Soundformate, Drohbriefe, zu verschenkende Amigas, ... zu vermelden haben oder Probleme in der Benutzung haben, können Sie sich auch an die obenstehenden Adressen wenden. NO DISK, NO ANSWER !! Wir können nicht tausende (na ja fast) Disks verschicken. Wer uns eine Disk schickt, bekommt die neueste Demo- oder ent- sprechende registrierte Version zurück. Der Eagleplayer darf unter folgenden Bedingungen auf Public-Domain Serien, Shareware-Serien und Netzwerken vertrieben werden: - das Eagleplayerpaket muß komplett vorliegen, die zu diesem Paket gehörenden Dateien sind in `Distribution` aufgelistet Der Eagleplayer wird ungepackt auf 2 Disketten ausgeliefert. - weder das Programm, noch die Dokumentation dürfen verändert werden, eine Ausnahme stellt das Packen dar, solange sich der Original- zustand wieder 100% herstellen läßt (z.B.LHA,ZOO,ARC,ZIP,Powerpacker) - der Vertriebspreis für Eagleplayer selbst oder der Preis für Disketten, auf denen der Eagleplayer enthalten ist, darf nicht mehr als den Betrag von 5 DM oder den entsprechenden Betrag in einer anderen Währung ausmachen, gleiches gilt für die Übertragungsgebühren in Netzwerken - die Firma Mallander Software darf den Player nicht vertreiben !!! - der Eagleplayer darf nicht in Softwarepaketen vertrieben werden, mit Ausnahme von PD- oder Sharewareserien (z.B. Fish,Time), ohne daß eine SCHRIFTLICHE Genehmigung der Autoren vorliegt Diese Genehmigung ist vor dem VERTEIBEN einzuholen !!!!!!!!!! - dies gilt ebenso für kommerzielle Nutzung oder Verbreitung, die ohne SCHRIFTLICHE Genehmigung der Autoren ausdrücklich untersagt ist. Wir, die Autoren des Programms, übernehmen keinerlei Haftung für die durch dieses Programm eventuell entstandenen Schäden an Hard- und Software. Die Nutzung des Programms erfolgt auf eigene Gefahr. WIR, DIE AUTOREN, BEHALTEN UNS DAS RECHT VOR, DEN VERTRIEB DES EAGLEPLAYERS EINZELNEN ANBIETERN ZU UNTERSAGEN, FALLS DIESE SICH NICHT AN UNSERE COPYRIGHT- BEDINGUNGEN HALTEN. Der Eagleplayer wurde nicht geschrieben, damit irgendwelche Leute sich daran eine goldene Nase verdienen können. Er soll die Amigawelt um ein sinnvolles Musikabspielprogramm zum -fast- Nulltarif erweitern. 2. Einleitung ============= 2.1 Was ist und kann der Eagleplayer ? Der Eagleplayer ist ein Programmpaket zum komfortablen Abspielen von Musik ver- schiedenster Soundformate. Er ist NICHT zum Erstellen von Musikstücken nutzbar, und sollte auch nicht mit einem Musikeditor, Sequencer, Tracker usw. verwechselt werden. Er besitzt bereits die Abspielprogramme für Sound/Noise/Protracker, Startrekker(AM) & AudioSculpture(AM) sowie den schon vom Delitracker her bekannten Customplay - Port intern und ist in der Lage, weiterhin benötigte, externe Player nachzuladen. Der Vorteil dieser Methode liegt auf der Hand: Es brauchen nur die jeweils benötigten Player mitgeladen werden, was Ladezeit und Speicher spart, außerdem steigert sich die Länge des Hauptprogramms nicht ins Unendliche. Alle internen SoundTrackerRePlayer unterstützen Song-Loading. Die Songs und Samples können gepackt sein. Der Instrumenten-Phad kann über die Config (Kap. 4.2.2) eingestellt werden. Die Samples dürfen gepackt sein. Sie werden alle als RAW-Daten geladen. Einige Möglichkeiten des Eagleplayers, die das Vorbild, der Delitracker, nicht besitzt: - die Anzahl der nachzuladenden Player ist nur durch den vorhandenen Speicher begrenzt (Kap. 3.4) - alphabetische Ordnung der Player im Playerwindow - AddPlayer-Dir Funktion - DeleteAll Funktion - Player erlaubt/ausgeschaltet - Möglichkeit von bis zu 15 extern zu ladenden User- (z.B. Analyzer-) programmen - eigene Oberflächen zu programmieren und als Userprogramme einzubinden - Auswahl des zu spielenden Musikstückes kann direkt über Pulldown-Menü erfolgen (Kap. 4.1.2) - umfangreiche Einstellungsmöglichkeiten (FadeIn, LoadNext ...) - Geschwindigkeitsregelung über Schieberegler (Kap 4.1.1) - alle Stimmen getrennt ein- und ausschaltbar - Statusanzeige durch Scroller - sorgflältiger und umfangreicher angepaßte Playroutinen, fast alle funktionieren auf A4000 (Siehe Player.Dok) - kann Powerpacker- (auch ohne XPK), FileImploder-, Crunchmania- und LH- (mit Libraray) Module entpacken (XPK-Files sowieso) sowie Stone- cracker4.0. - kann die Delitracker-Players benutzen, wenn der entsprechende, an den Eagleplayer angepaßte Player fehlen sollte - umfangreiche Moduleinfos, wenn der Replayer entsprechend angepaßt wurde - eine Version für alle Kickstarts (ab Kick1.2) - Gadgets passen sich beim Window öffnen automatisch der Farbpalette an (3D-Lock) - zeitmäßiges Styling - unterstützt in allen Windows AppWindow (Kick2.0+) - Iconify-Modus (AppItem, AppIcon, LittleWin) - interne SoundTrackerplayer können Songs laden - PlayFaster-Gadget - mehr Arexx-Befehle (vor allem mehr Statusbefehle) - Randomsong/AutoSubSong-Funktion Ein besonderer Vorteil des Eagleplayer gegenüber vielen Konkurrenten ist, daß er mit den allermeisten Playroutinen (die nicht hinhauen, siehe Problemecke) unabhängig von der Bildwiederholrate arbeitet, also genausoschnell unter PAL, als auch NTSC oder Productivity spielt. 2.2 Entstehung des Eagleplayers Vor etwa einem Jahr entschied sich Jan, nachdem dauernd über seinen Noiseplayer- ähnlichen Megaplayer gelästert wurde, ein neues Soundplayerprogramm zu schreiben, das Maßstäbe setzen sollte. Er programmierte fleißig, erstellte eine an- sprechende Oberfläche, versuchte möglichst viele Playroutinen heranzuschaffen und diese in das Programm einzubauen. Doch dann geschah das Unfaßbare, ich (Buggs) bekam von einem Kumpel die Version 1.15 des Delitrackers. Welten stürzten ein, die Arbeit am Eagleplayer wurde dennoch fieberhaft weitergeführt, bis zu dem Tag, an dem wir die Fish Disk 748 in den Händen hielten. Und auf dieser Disk befand sich, o Terror, die Version 1.3 des Delitrackers mit ver- ändertem, flexibel erweiterbarem Konzept für die externen Players. Tja, nun war die Entscheidung klar : entweder den Eagleplayer aufgeben oder sich den neuen Gegebenheiten anpassen. So entschiend man sich für den letzteren Weg, es wurde ein Delitrackerport eingebaut und unsere eigenen Vorstellungen konnten durch das - ich muß das nochmal ausdrücklich sagen - wirklich flexible Player- prinzip des Delitrackers mit einfließen. Das vorliegende Programm stellt den aktuellen Stand des Resultats dar. Obwohl wir einige Erweiterungen einbauten, blieben wir Deliplayer-kompatibel, unsere, meist verbesserten Playroutinen, können auch im Delitracker benutzt werden (einige Funktionen fehlen dann eben). ******************************************************************************* Somit ist wohl eindeutig klar, warum diese Anleitung im Aufbau haargenauso aus- sieht wie die des Delitrackers, warum das Hauptfenster so aussieht,usw. usf. Es wurden keine Routinen des Delitracker-Hauptprogramms benutzt, das Programm "Eagleplayer" wurde 100% selbst programmiert ! Lediglich einige externe Player des Delitrackers wurden übernommen entsprechend erweitert und verbessert, da wir für diese dann den Originalsourcecode nicht besaßen. Bei diesen Play- routinen wurde dann natürlich das Copyright nur erweitert. ******************************************************************************* 2.3 Was fehlt in dieser Version noch ? Eine ganze Menge, bis heute stehen noch aus: - englische Docs (keine Zeit, keine Zeit) - noch weniger Bugs * verschiedene Filerequester * Moduleinfo als Überblick mit Fenster * Sampleinfo (mit Abspeicherung einzelner Samples,Sampleabspielen usw.) * UserPrginfo als Überblick über die geladenen UserProgramme * Abspeicherung der Module als gepackte oder ungepackte Files * mehr Fileentpacker (z.B. Powerpacker, TurboSpike, Crunchmania) * Subdirs laden * neue Bedienungsoberflächen als Userprogramme (siehe NoiseEagle) Anmerkung: die mit '*' bezeichneten Funktionen wird es vorraussichtlich nur in der registrierten Version geben! Bitte beachten Sie, daß Sie vom registrierten Eagleplayer den aktuellen Stand erhalten, d.h. es können noch einige Sachen fehlen, die geplant waren und aus Zeitgründen noch nicht fertig sind. Diese Teilprogramme können dann aber per Keyfile in späteren Versionen auch genutzt werden. 2.4 Was ist neu in dieser Eagleplayer-Version Es wurde ein böser Bug beseitigt, der eigentlich an der Intuition.Library liegt und immer dann auftrat, wenn keine Userprogramme geladen wurden. Das komplette SpecialMenu wurde umgearbeitet. Der Programm-Mode wurde um die Punkte: RandomSong, AutoSubSong & LoadAlways erweitert. Derweiteren sind die ersten nur bei registrierten Anwendern möglichen Funktionen einge- baut (Help, viele Userprogramme, RandomSong, HideAll, SaveModule). 2.5 Wann gibt es eine neue Version des Eagleplayers Das steht in den Sternen. Da wir, Eagleeye und Buggs, neuerdings nur noch am Wochenende zu Hause sind, kann es entwas länger dauern, bis die nächste Version fertiggestellt ist. User, die sich registrieren lassen wollen, möchten wir hiermit bitten, etwas Gedult zu haben, bis die Antwort unsererseits kommt. 3. Installation und Start ========================= 3.1 Systemanforderungen Der Eagleplayer benötigt zum Start mindestens Kick 1.2 und 512 KByte Ram. Es muß aber dazu gesagt werden, daß einige Funktionen des Eagleplayers, so z.B. Appwindow (siehe dort) nicht unter 1.2/1.3 nutzbar sind. Gleiches gilt für einen Großteil der von uns verfaßten Userprogramme. Auf Rechnern, die noch mit 2.0 Quasi-Versionen arbeiten (alle 36-er Kickstart Versionen), garan- tieren wir für nichts, da diese Betriebssystemversionen noch nicht ausgereift waren. Wenn wir im folgenden von "2.0" sprechen, meinen wir die Betriebs- systemversionen ab 37.175 (OS2.04), die serienmäßig ab A500+, A2000E als ROM vorliegen. Eingeschlossen sind die darauffolgenden Versionen 3.0 usw., die im A1200, A4000 verwendet werden. Tests auf diesen Maschinen waren erfolg- reich. :)-=-= Weiterhin erscheint des Öfteren der Hinweis (r.V), dies bedeutet lediglich, daß diese Funktion nur in der registrierten Version benutzbar ist oder nutzbar sein wird. Natürlich hat der Amiga an einen Monitor mit Lautsprechern oder an eine Anlage/ Henkelmann angeschlossen zu sein, da ansonsten nichts zu hören ist. (wie auch?) Es ist darauf zu achten, daß nicht gleichzeitig ein anderes Soundprogramm arbeitet, das die Tonausgabekanäle belegt. In diesem Fall gibt der Player nach dem Laden eines Modules eine Meldung aus, siehe bei "Fehlermeldungen" Achtung: Auch wenn hier davon gesprochen wird, daß der Eagleplayer mit 512KByte Speicher läuft, so ist die Lage derzeit so, daß mit allen unseren bis jetzt fertigen Userprogrammen und allen zur Verfügung stehenden externen Playern selbst 1 Megabyte Ram nicht ausreicht. Wer also über nicht viel Speicher ver- fügt, sollte abwägen, welche Player er braucht! 3.2 Benötigte zusätzliche Dateien Der Eagleplayer ist auf die Req.library & ASL.Library angewiesen, die sich im Verzeichnis "LIBS:" befinden müssen. Ohne diese startet er nicht ! Ansonsten versucht des Eagleplayer die XPKMaster.Library, die PowerPacker- Library sowie die LH.Library zu öffnen, um dementsprechend gepackte Files zu laden. Diese Libraries sind NICHT UNBEDINGT zum Start notwendig, aber durchaus zu empfehlen, wenn Sie solcherart gepackte Module haben, sowieso. 3.3 Installation auf Diskette,Festplatte,... Um den Eagleplayer per Hand zu installieren, sind folgende Schritte nötig: - als erstes sind die o.g. Librarie(s) nach "Libs:" zu kopieren (Verzeichnis "libs" auf der Bootdiskette/Bootpartition) - der zweite Schritt ist das Kopieren der Datei "Eagleplayer" in das gewünschte Verzeichnis (ein Beispiel wäre: "DH0:Music/Players/" oder "DF0:" ...) - als nächstes sind die sofort beim Programmstart zu ladenden Players zu be- stimmen und in eines der folgendes Verzeichnisvarianten zu kopieren. (der Eagleplayer sucht in der untenstehenden Reihenfolge und lädt dann vorerst nur die externen Player, die sich im erstgefundenen Verzeichnis be- finden) "Eagleplayers/" \ jeweils im "Deliplayers/" / aktuellen Verzeichnis "Sys:Eagleplayers/" "Sys:Deliplayers/" - als letztes sind noch die Userprogramme zu installieren, indem entweder das Verzeichnis "EP-Userprograms" oder "Sys:EP-Userprograms" angelegt wird, in das die gewünschten Userprogramme zu kopieren sind. Beispiel: copy Eagleplayer to dh0:Music/Players/ makedir dh0:Music/Players/Eagleplayers makedir dh0:Music/Players/EP-Userprograms copy eagleplayers/ to dh0:Music/Players/Eagleplayers/ all copy EP-Userprograms/ to dh0:Music/Players/EP-Userprograms/ all Wer zu faul ist, das Ganze manuell zu erledigen, kann dies mit den bei- liegenden Installationsskripts tun (Copylibs, InstallEagle). 3.4 Start des Eagleplayers von CLI/SHELL Zum Start von Cli/Shell aus, genügt ein einfacher Aufruf des Players. Vorher wechseln Sie bitte in das Verzeichnis (DOS-Befehl 'CD'), in dem sich der Player samt Players und Userprogrammen befindet. Dies ist für den Fall wichtig, in dem sich das Playerverzeichnis (Deli-oder Eagleplayers), sowie das User- programsverzeichnis im selben Verzeichnis befinden, wie der Eagleplayer selbst. Sofern die Eagleplayers und Userprograms im Verzeichnis "SYS:" liegen, ist der 'CD'-Befehl überflüssig, es reicht, den Player einfach aufzurufen. Der Befehl 'Run' ist nicht notwendig, um den Eagleplayer von der Cli/Shell los- zulösen, nach dem Start koppelt sich der Eagleplayer von der Cli/Shell ab, so daß diese sofort weiter nutzbar ist und auch geschlossen werden kann. In der unregistrierten Version können weder vom CLI noch von der Workbench Argumente übergeben werden. 3.5 Start von der Workbench aus Zum Start von der Workbench genügt ein einfacher Doppelclick, durch den der Eagleplayer geladen wird. Achtung: Bis jetzt werden noch KEINE Tooltypes unterstützt. 3.6 Das Konfigurationsfile Der Eagleplayer lädt ab Version V1.10 eine Konfigurationsdatei. Sie besteht aus einer Reihe von Kommandos, die als Strings eingegeben werden. In der Konfig kann u.a. angegeben werden, welches das aktuelle Playerverzeichnis ist oder ob Fadein ein/ausgeschaltet werden soll usw. Die Datei befindet sich normalerweise im "ENV:Eagleplayer/" Verzeichnis. Es wird aber beim Start des Players versucht, die Konfig vom aktuellen und danach vom S: Direktory zu lesen. Das Konfigurationsfile ist nicht unbedingt erforder- lich zum Start des Players. Beachten Sie bitte, wenn Sie eine Konfig saven wird der aktuelle Stand des Eagleplayers abgespeichert, also Modulename, derzeitige Userprogrammein- stellungen, sämtliche Phade alle Preferenceeinstelungen. Die Kommandos zum Konfigurationsfile finden Sie in der Config auf der Main- Diskette oder wenn Sie eine Konfig saven. Es müssen in einer Konfig-Datei nicht alle Kommandos vorkommen. 4. Benutzung des Programms ========================== 4.1 das Hauptfenster ---------------------- Nach erfolgreichem Start ergibt sich für den Benutzer folgendes Bild: I n f o S a w b i o t u c t h I M F c o i o Q d l n u u t i i l e f t e r y | | | | | | | | v v v | ________________________________________________________________ | |*| Eagleplayer V1.11 Generic/Registered | | | | |--------------------------------------------------------------| | | |1| | | Volume | | | |---| | | |_| ? | F |----------------------------------------------|| || <- |_|2| | | Balance| | | |---| | |_|----------------------------------------------------------| |_|3| |< | < |<<| |[]> | |> | >> | |>>| > | >| | [] | ^ | 00| | |_| | | | | | | | | | | - | 00| | |4|----------------------------------------------------------| | |_| Welcome to Eagleplayer | |--------------------------------------------------------------| ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | | | | | S V p p p r P F n n n S e L p o r r r e l a e e e t j o e i e e e p a s x x x o e a e c v v v l y t t t t p c d d e i i i a t s o o o y / P P S M a u u u l a u o M s s s S P a t b d o M o a y t s u d o M S P n u e o l u d o u a g s r n e l u d b t e n g e l u s t e l o e e n r g n 4.1.1 Steuerung des Programms über die Schalter (Gadgets) Sofort nach dem Start sollten die meisten der Schalter des Hauptfensters ge- sperrt sein (durch Rasterung erkennbar). Um nun ein Musikstück zu laden, ist es einfach nur nötig, das Diskettensymbol anzuklicken. Danach öffnet sich ein Filerequester, in dem man sich die gewünschte Datei auswählt und mit "OK!" bestätigt. Danach können je nach dem aktuellen RePlayer folgende Schalter freigegeben sein. Speed - Regler für die Abspielgeschwindigkeit, steht dieser in der Mitte, ist die Normalgeschwindigkeit eingestellt, eine Bewegung nach oben erhöht die Geschwindig- keit, eine Bewegung nach unten verlangsamt die Geschwindig- keit - oder Plus - und Minus Gadget, um kompatibal zum Delitracker zu bleiben, wurde diese Mög- lichkeit zusätzlich vorgesehen, dabei erhöht eine Anwahl von [+] die Geschwindigkeit und [-] verlangsamt den Ab- spielprozeß Voices - die 4 Stimmen der Standard-Amigas lassen sich hiermit einzeln ein- und ausschalten, ist der Schalter "reingedrückt" (und unterscheidet sich in den Rändern somit von den anderen Schaltern) , ist die jeweilige Stimme ausgeschaltet, ansonsten an previous Module - veranlaßt den Player das vorherige Modul der aktuellen Liste zu laden, ist das aktuell gespielte Modul bereits das erste, so wird dann das letzte geladen. Wenn Load Dir ausgeschaltet ist, wird die Funktion gesperrt. previous (Sub)song - für Soundsysteme, bei denen ein Module mehrere Songs enthält, diese Funktion spielt den vorherigen Untersong ab, ist der gespielte bereits der erste, passiert nichts. Wenn das Module nur einen SubSong unterstützt, wird das Gadget ge- sperrt. previous Pattern - spielt das vorherige Pattern, ist bereits das erste erreicht, wird das letzte Pattern gespielt. Für weniger Versierte : Ein Pattern ist mit einem Notenblatt zu vergleichen, einige Soundsysteme bauen darauf auf, indem eine solche Liste von Befehlen nacheinander ausgeführt wird, diese Befehlslisten (oder Notenblätter,eben Patterns genannt) lassen sich meist beliebig kombinieren. Replay Song - das geladene Musikstück wird noch einmal von vorn gespielt. Play / Pause - der Eagleplayer stoppt oder startet den Song,(wechselt den Modus ständig) je nachdem ob gerade gespielt wurde oder nicht. Fast Play - "schneller Vorlauf", erleichtert die Suche nach einer be- stimmten Passage im Titel. next Pattern - spielt das nächste Pattern (siehe auch oben) ab, wenn das Ende des Musikstückes erreicht wurde, wird das erste Pattern abgespult (ich meine abgespielt). Next (Sub)song - spielt den nächsten Untersong eines Musikstückes mit mehreren UnterSongs. Wenn das Module nur einen Song hat, wird die Funktion gesperrt. Next Module - der Player lädt das nächste Musikstück der Liste. Wenn Load Dir ausgeschaltet ist, wird die Funktion gesperrt. Stop - hält den Song an, setzt den Zeiger für die Position wieder auf den Anfang des Stücks. Eject Module - stoppt das aktuelle Module (falls dieses gespielt wird) und entfernt es aus dem Speicher. Load Module - öffnet den Filerequester zur Anwahl eines anzuhörenden Musik- stückes, es dürfen auch mehrere ausgewählt werden (Shift- Taste gedrückt halten); ist dies der Fall, wird die Liste der ausgewählten Dateien übernommen und kann über die Funktionen 'previous Module' und 'next Module' genutzt werden; weiterhin bietet sich beim Eagleplayer die Möglich- keit, die Musikstücke direkt über das Pulldownmenü aufzu- rufen (Modules-Directory); wird nur ein Modul selektiert, so wird je nach Einstellung (siehe bei Kapitel 4.1.2 'Pulldown Menüs') das gesamte Verzeichnis eingelesen, dabei werden die Dateien, die mit 'smpl.' beginnen, sowie mit '.nt','.nt.pp','.txt' und '.s' aufhören automatisch "versteckt", also nicht berücksichtigt Iconify - verkleinert das Hauptfenster auf ein Minimum, beziehungs- weise schließt es je nach Einstellung ganz und legt in diesem Falle entweder ein sogenanntes "Appicon" auf der Workbench ab oder fügt einen Menüeintrag im Tolls-Menü der Workbench dazu, (beide Funktionen sind erst ab OS2.04 zugänglich) um das Hauptfenster des Eagleplayers wieder zu öffnen, genügt ein Doppelclick auf das Appicon beziehungsweise eine Anwahl des Menüitems Switch Filter - Schaltet den Tiefpaßfilter des Amigas ein und aus (ohne Wirkung beim Amiga 1000 und Amiga 2000A) Info About Module - Scrollt einen Informationstext durch das Hauptfenster,der Angaben über das aktuelle Musikstück und den verwendeten Player macht. Der Umfang des Textes variiert je nach Player, im ungünstigsten Fall wird lediglich der Name der geladenen Datei und deren Länge ausgegeben. Wenn kein Module geladen wird, wird ein InfoText über den Player ausgegeben. Quit - das Close-Gadget beendet den Eagleplayer (Oh Nö!). Volume - Regelung der Lautstärke. Balance - Lautstärkeverhältnis zwischen linkem und rechtem Kanal beeinflussen. 4.1.2 Steuerung über die Pulldown-Menüs Der Eagleplayer besitzt folgende Pulldown-Menüs: Project Commands Special Modules-Directory Die Funktionen des 'Commands'-Menüs sind identisch mit denen,die im vorherigen Kapitel 'Gadgets' erläutert wurden, es wird hier nicht weiter darauf einge- gangen. Die Funktion des "Modules-Directory" ist im vorherigen Kapitel unter "Load Module" mit erläutert worden. Das Project Menü ---------------- Load Module - lädt ein Module (siehe im Kapitel zu den Gadgets) Save Module - nur in der registrierten Version zugänglich, öffnet den Filerequester, um Datei zu selektieren, in die das aktuell geladene Modul abgespeichert werden soll About Module - Scrollt einen Informationstext durch das Hauptfenster,der Angaben über das aktuelle Musikstück und den verwendeten Player macht. Der Umfang des Textes variiert je nach Player, im ungünstigsten Fall wird lediglich der Name der geladenen Datei und deren Länge ausgegeben. Wenn kein Module geladen wird, wird ein InfoText über den Player ausgegeben. Add Player - Öffnet den Filerequester, um einen zum Eagleplayer hinzuzu- fügenden Player zu selektieren. Show Players - Öffnet das Playerinfofenster (siehe Kapitel 4.2.1) Show Moduleinfo - nur in der registrierten Version verfügbar Show Samplesinfo- nur in der registrierten Version verfügbar Load Settings - Konfiguration laden, nur in der registrierten Version verfügbar. Save Settings - Konfiguration sichern, nur in der registrierten Version verfügbar. Delete File - Datei löschen (warum das noch nicht eingebaut ist,weiß ich nicht) Help - Online Hilfe, nur in der registrierten Version verfügbar. Iconify - siehe unter "Iconify" im Kapitel 4.1.1. "Gadgets" About - Scrollt Informationen über das Programm durch das Haupt- fenster. Quit - beendet den Eagleplayer. Das Special-Menu ---------------- Preferences: Quickstart - Das Module wird sofort nach laden abgespielt Loaddir - Das Directory wird ins Pull-Down Menu geladen. Wenn Load Dir ausgeschaltet ist, werden NextModule und PrevModule gesperrt. Ein LoadNext findet ebenfalls nicht statt. Autodir - Wenn das Directory geändert wird oder die Diskette gewechselt wird, wird das Dir neu geladen. ScrollInfos - Die Informationen wie Filter on/off werden gescrollt. FlashPointer - Beim Entpacken eines Modules flackert Mauspfeil. Fadein - Ein Module wird mit steigender Laut- stärke eingeblendet. FadeOut - Ein Module wird mit abnehmender Laut- stärke ausgeblendet Filter - Gibt an, ob der Filter beim Initiali- sieren des Modules gesetzt werden soll oder nicht. MasterVolume - Ist UVolume gesetzt, werden die Volumen werte für die UserProgramme verändert, z.B: Sie haben FadeOut eingeschaltet. Jetzt drücken Sie auf Pause und das Module wird langsam ausgeblendet, dabei ändert sich die Höhe des Analyzeraus- schlags mit der Volume. (r.V) HideAll - Sollen beim Direktoryladen alle be- kannten Filetypes (*.asm) versteckt werden. Overwrite - Es wird vor dem Überschreiben einer Datei beim Module saven gewarnt. (r.V) LoadSubDirs - Ermöglicht ein Laden aller Sub-Dirs, Dadurch können alle Modules-Dirs ohne Laden gewechselt werden. (r.V) Use SongName - Beim Saven des Modules wird der Songname angegeben, falls vorhanden. (r.V) Quit Surface - Soll beim Beenden einer Userprogramm- oberfläche der Eagleplayer beendet werden. User-Programs Add UserProgram -- Unused -- Create PList - Erstellen einer eigenen Liste von Modulen, die nachein- ander abgespielt werden. (r.V) Toggle Filter - Dreht den Zustand des Filters um. Wenn z.B ein Power- packer oder CrunchMania den Filter hin- und herschaltet, kann man ihn mit diesem Item umdrehen. Set Voices - Die Stimmen könne einzeln an und ausgeschaltet werden, dabei ändern sich natürlich die Zustände der Gadgets. Set Volume - Die Volume kann auf den max. Wert gesetzt werden oder eine Stufe lauter oder leiser, dabei ändern sich natürlich die Zustände der Gadgets. Set Balance - Die Balance kann nach Links oder nach Rechts bzw. auf den Mittelstand gesetzt werden, dabei ändern sich natürlich die Zustände der Gadgets. Set Speed - Der Speed kann schneller oder langsamer gesetzt werden. Wenn der derzeitig benutzt Replayer einen Speed-REGLER zuläßt, kann der Speed zusätzlich auf den Normalwert gebracht werden. File-Requester - Hier erfolgt die Auswahl des gewünschten File- Requesters(r.V). Die derzeitigen Versionen benutzen die Req.Library. Programm-Mode - Hier kann eingestellt werden, ob das Module bis Song- ende (falls es der Player zuläßt) gespielt werden soll oder nach einer bestimmten Zeit aufhören soll zu spielen oder ob er immer (Loop) spielen soll. Songend - Bei Songenderkennung wird das Abspielen unterbrochen ~~~~~~~~~~~~~~~~ Loadnext - Wenn Songend oder PlayTime einge- schalted sind, wird das nächste Module geladen. AutoSubSong - Wenn Songend oder PlayTime eingeschaltet sind, wird der nächste SubSong abge- spielt, falls möglich (r.V.) RandomPlay - Bei Betätigung von Next- oder PrevModule wird ein zufällig ausgewähltes Module abgespielt. Dabei werden erst alle Module des geladenen Dirs gespielt, ehe ein Module doppelt geladen wird. Aller- dings ist es möglich ein Module über das Pull-Down Menu anzuwählen, ohne das der interne Zähler sich das merkt, d.h. es kann per Randomplay auch noch mal ge- spielt werden. Randomsong - Äquivalent zu RandomModule bloß mit Sub- songs LoadAlways - Voraussetzung: Songend=on oder Playtime gesetzt und LoadNext=on Es werdne so lange Module geladen, bis eines abgespielt werden kann. ~~~~~~~~~~~~~~~~ Set PlayTime - Es kann eine max. Spieldauer eingegeben werden, in dezimal. Iconify - Wenn Sie Kick2.0 oder höhere Kickstartversionen besitzen können Sie in der Registrierten Version den Iconify- Modus zwischen LittleWin (Default) oder AppIcon oder AppItem auswählen. Save-Mode - Sie können auswählen, ob das Module ungepackt, XPK-, Powerpacker- oder LH-gepackt gesaved werden soll. 4.1.3 Tastaturkürzel -------------------- Die wichtigsten Funktionen des Pull-Down-Menus unterstützen Tastaturabfragen. Die unregistrierte Version unterstützt keine Hotkey in dem Sinne. Im folgenden werden die Tastaturkombinationen aufgelistet durch die einige Funktionen aufgerufen werden können. Da wären: * Project-Menu * Load Module A + l Save Module A + w About Module A + a Help A + h Iconify A + i Quit A + q * Command-Menu * Prev Module A + b Prev Song A + c Prev Pattern A + y Replay Song A + r Play Song A + p Player Faster A + o Next Pattern A + x Next Song A + v Next Module A + n Stop A + s Eject Module A + e * Special-Menu * Toggle Filter A + f Set Voices A + 1-4 (je nach Voice) Set Volume Default Volume A + 5 Higher Volume A + 6 Lower Volume A + 7 Set Balance Default Balance A + 8 Balance to Left A + 9 Balance to Right A+ 0 Set Speed Default Speed A + # Higher Speed A + + Slower Speed A + - Programm-Mode Set Playtime A + z 4.1.4 Die AppWindow-Funktion ---------------------------- Der Eagleplayer nutzt in allen Windows die AppWindow-Funktion. Wenn Sie z.B ein Icon für ein SoundModule haben, ziehen Sie es über eines der Windows des EaglePlayers und lassen es los, das Module wird dann geladen und abgespielt. Sollten Sie durch durch Multiselect mehrere Icons über den Windos loslassen, werden diese in alphabetische Reihenfolge ins Pull-Down Menu übernommen. Die Icons müssen dann aber aus einen Directory stammen! Beachten Sie bitte, das nur Module aus einen Direktory richtig verarbeitet werden. Dieser Bug wird hoffentlich bald removed sein. 4.1.5 Pubscreens ---------------- Der Eagleplayer kann ab Version V1.10 nun endlich auch auf Pubscreens geöffnet werden. Die Pubscreenunterstützung betrifft alle Windows der zum Eagleplayer gehörenden Windows bzw. Programme, falls nicht anders angegeben, d.h. alle Userprogramme öffnen sich auf demselben Screen. Hier nun eine kleine Liste von Publicscreennamen: CygnusEdScreen1 (bei Rendering choices im Environment-Menu make screen public auf on setzen) BootX PowerPacker DOPUS.1 TERM 4.1.6 Font-Unterstützung ------------------------ Beim Eagleplayer kann V1.10 angegeben werden, welcher Font benutzt wird. Bitte beachten Sie, das nur 8*8 ungepackte, nicht proportional Fonts benutzt werden dürfen. Als Beispiel liefern wir auf der MainDiskette einen Eagleplayer.Font mit. 4.1.7 Interne und externe (De)Packer ------------------------------------ Der EaglePlayer in der vorliegenden Version kann Datenfiles entpacken, wenn diese mit folgenden Crunchern gepackt sind: - CrunchMania - Powerpacker (falls vorhanden, wird die Library benutzt) - LH (PMC vom Powerplayer- doch was ist am Power- player POWER ???) - Fimp - Pack - XPK - StoneCracker V4.0 Bei Crunchmania und Fimp wird nur ein Memoryblock allokiert, in den das Module geladen wird und auch entpackt wird. Diese Methode funktioniert wunderbar, aber eben nur bei CRM und Fimp. Bei den anderen Packern muß erst ein Memoryblock zum Laden und einer zum Entpacken besorgt werden. Diese Methode verbraucht natürlich viel Speicher, und das ist nicht gut. Nach dem Entpacken wird der Speicher des geladene & gepackten Files wieder freigegeben. Der EaglePlayer unterstützt die XPKMaster.Library, wenn die entsprechenden Libs: auf der Diskette sind. Sollte eine Datei ein Passwort benötigen, kann dieses über ein StringGadget im Hauptwindow eingegeben werden. Für das Entpacken von PCM-Files, also mit der LH.Library gepackten Files, wird diese Library benötigt, ist diese nicht vorhanden, kann das Module nicht entpackt werden. Bei Pack handelt es sich um den SongPacker der ganzen Tracker (NoiseTracker, Protracker, Startrekker). Diese Files werden automatisch beim Laden entpackt, d.h. jeder externe Player könnte auch gepackte Songs seines Formats laden. Powerpacker-, CrunchMania-, Fimp-, Pack- und StoneCracker4.0-Files können ohne Hilfsmittel entpackt werden. Die entsprechenden Decrunchroutinen sind im EaglePlayer enthalten. Wird die Powerpacker.Library gefunden, wird diese zum Entpacken von PP-Dateien genutzt. Der EaglePlayer kann weiterhin auch executable Files entpacken, wenn diese mit ImploderV4.0 (NormalMode ohne Library) gepackt sind. Diese Funktion wurde implementiert, weil das Programm zunehmend länger und länger wurde, vor allem die Player und UserProgramme. Um diese einem durchschnitts-User auch zugänglich zu machen, kann man sie eben alle packen. CustomModule können ebenfalls mit Imploder gepackt vorliegen. Ron-Klaren-Modules müssen ungepackt sein ! In späteren Versionen werden auf jeden Fall mehr File-Entpacker unterstützt, tut mir leid, das es gerade Imploder erwischt hat, aber besser als gar nicht packen, oder ? In späteren Versionen des EaglePlayers kann man Module auch gepackt saven. Vorbereitet wird u.a. XPK-Packer, LH-Packer, PP-Packer und vielleicht noch mehr und das Alles intern. 4.2 Das Player-Fenster ------------------------ 4.2.1 Öffnung und Funktion des Player-Fensters Das Playerwindow können Sie über die Menu-Funktion Show Player öffnen und schließen. Bei einem Iconify wird das Window ebenfalls geschlossen. Sollten Sie LittleWin eingestellt haben, können Sie es im Iconify trotzdem öffnen. Das Playerwindow wurde bei uns anders gestaltet als beim Delitracker, schon allein wegen der vielen neuen Funktionen. Über dieses Window erhalten Sie Informationen der einzelnen Player, wie z.B Creator, VersionsNr des Players. 4.2.2 Steuerung über die Schalter und Erklärung der Funktionen In dem eingerahmten Feld links können Sie die Player anwählen. Haben Sie einen Player selectiert können Sie folgendes tun: - lesen, was er alles unterstützt, e.g. ModuleInfo, Save, Packabe - ihn löschen (außer interne Player) - ihn disablen/enablen, d.h Sie können Ihn auschalten ohne ihn zu löschen. Über das Playerwindow können die folgenden Aktionen getätigt werden: Add-Player - Laden eines neuen Players. Falls der Player bereits vorhanden ist, wird er nur geladen, wenn die Versionsnummer gleich oder größer ist. Del-Player - Löscht den selektierten Player Config - Ruft eine interne Routine des angewählten Players auf, die z.B ein Intrumenten-Directory für diesen Player festlegt (falls vorhanden) Add-PlayerDir - Sie haben die Möglichkeit ein ganzes Direktory mit Playern einzuladen. Load - Ruft eine interne Routine des angewählten Players auf, die eine Konfigurations-Datei laden soll (falls vorhanden) Save - Ruft eine interne Routine des angewählten Players auf, die eine Konfigurations-Datei saven soll (falls vorhanden) Enabled Yes/No - Hiermit kann der selektierte Player erlaubt oder verboten werden. Der Player wird nicht gelöscht ! 4.2.3 Interne Player Der EaglePlayer besitzt in der vorliegenden Form 5 interne Player. Interne Player können nicht gelöscht werden, aber enabled/disabled. Bei der Erkennungs Routine werden als erstes die externen Player der Reihe nach durchgecheckt und dann die internen der Reihe nach. Folgende Player besitzt der Eagleplayer intern: CustomPlay - Hier handelt es sich um ein Interface, um z.B. Songs, die auf absoluten Adressen liegen oder die keinen Soundsystem angehören abzu- spielen. Dafür muß der Song entsprechend seinen Möglichkeiten angepaßt und ein Playerheader, wie bei einen externen Player, vorgesetzt werden. Noise/ProTracker - Der am meisten genutzte Replayer überhaupt !!! Es wird keine Unterscheidung zwischen Noise, Sound und Protracker gemacht. Wenn Sie Module besitzen, die in diesem Replayer nicht funktio- nieren, senden Sie uns diese bitte zu. Es können Songs geladen werden. Der Instrumenten Phad kann per Config eingestellt werden. Dieser Phad gilt für alle internen Samplephade ! Hier kommt eine original Protracker V1.0a Play- routine zum arbeiten, in der zwei Bugs behoben wurden ! Old SoundTracker - Es wird die Soundtracker 2.0 Routine von Unknown of Doc verwendet. Sie scheint ab kompa- tibelsten zu sein. Module, die nicht laufen, bitte mit TestModule und Replay-Source an uns schicken. Der Player kann ebenfalls Songs laden Startrekker - Als Replayer wird eine Audio Sculpture (kommer- zieller Nachfolger vom Startrekker) Routine benutzt. Die Unterscheidung zwischen Startrekker und Audio Sculpture erfolgt im NT-File. Falls das NT-File nicht geladen wird, wird das Module als Startrekker erkannt. Mit der eingebauten Routine können Sie Startrekker Normalmodule, Startrekker AM-Module, AudioSculpture Normal- Module und AudioSculpture AS-Module abspielen, d.h. das NT/AS File ist nicht unbedingt erforder- lich, außer es handelt sich un einen AM-Sound. Ein Song-Loading ist ebenfalls möglich. 4.3 Die User-Programme ------------------------ 4.3.1 Einleitung Die Userprogramme stellen eine Neuerung auf dem Markt überhaupt dar. Sie sind externe zu ladende, eigenständige Programme, die asynchron (d.h. als eigene Tasks) arbeiten. Ursprünglich als reine Analyzerprogramme vorgesehen, kamen jetzt noch Möglichkeiten hinzu, durch die der Eagleplayer nicht nur der steuernde, sondern nunmehr der gesteuerte Teil sein kann. Das heißt, daß die Userprogramme Zugriff auf alle wichtigen Daten des Eagleplayers haben und Kommandos an diesen senden können. Dies eröffnet ganz neue Welten. So ist es kein Problem, eine andere Oberfläche für den Eagleplayer zu schaffen, z.B. mit eigenem Screen im CD-Player-Look. Dazu wäre es nur notwendig, die Oberfläche mit Eingabehandling zu schreiben und Eingaben an den Eagleplayer weiterzu- reichen, genauso leicht kann man mal fix die Oberfläche wechseln, statt dessen beispielsweise den Intiutracker "Nostalgielook" verwenden (ist schon in Planung). Der Eagleplayer verwaltet zur Zeit 15 Userprogramme, die beliebig ein- und ausgeschaltet werden können. Auch abspeicherbare Voreinstellungen der Userprogramme mit Fensterposition, Arbeitsmodus(z.B. beim Analyzer) und Infor- mation ob das Fenster offen oder geschlossen ist, sind vorgesehen und in der registrierten Version nutzbar. Wer`s braucht, kann Userprogramme auch mehr als einmal starten, entweder unter einem anderen Namen ins Verzeichnis 'EP-Userprograms' kopieren oder aber über die Menüfunktion "Add Userprogram" zusätzlich einbinden. Ein Informationswindow zu den Userprogrammen wird es in Zukunft auch geben. 4.3.2 Steuerung der User-Programme Die Userprogramme können durch das Eagleplayermenü Special/Userprograms ein- und ausgeschaltet werden, indem man den entsprechenden Menüpunkt anwählt. Ist der Haken gesetzt, heißt dies, daß das jeweilige Userprogramm sich im aktiven Zustand befindet. Wird bei einem der Userprogramme direkt das Close-Gadget (oder der Quit-Menü- punkt) angewählt, so schließt das Userprogramm das Fenster, wird aber nicht aus dem Speicher entfernt, sondern ist durch den Eagleplayer in der oben be- schriebenen Form wieder in den Betriebszustand versetzbar. Jedes Userprogramm hat seine Eigenheiten, die in vollem Umfang zu beschreiben, ein wenig sehr aufwendig wäre. Nur kurz ein Tip zum Analyzer : schauen Sie sich das PulldownMenü an, dort finden Sie die Möglichkeit, Scroller und Pausenbild auszuschalten, falls diese als störend empfunden werden. Außerdem wird hier noch einmal darauf hinge- wiesen, daß alle Gadgets des Analyzers mindestens doppelt belegt sind, pro- bieren Sie ruhig alle Modi (über 20 !!) aus. Folgende bisher fertiggestelle Userprogramme können auch unter Kickstart 1.2/1.3 genutzt werden: (mit '*' gekennzeichnete UPS sind nur mit der regis- trierten Version zu erhalten) - Time - Levelgraph - Noiseeagle * Levelgraph2 * Levelmeter * Analyzer2 (Small Analyzer) Die anderen, unten genannten UPS sind nur unter Kick 2.0 aufwärts zu nutzen: - Analyzer - Quadrascope * Stereoscope * Monoscope * Voicemeter 5. Fehler ========= 5.1 Fehlermeldungen ------------------- Hier werden einige Fehlermeldungen aufgezählt die auftreten können. Es kann duchaus passieren, daß mehrere Error`s sich teilweise decken, dies hängt vom Player oder der Loadroutine ab. Im allgemeinen werden in den original Deli- Players als Fehler in d0=-1 zurückgegeben. Sollte bei einem dieser Player eine Fehlermeldung geschehen und diese zwischen 0 und Max. Fehlernummer liegen, dann wird der jeweilige Fehler ausgegeben. Bei EaglePlayern erwarten wir korrekte Fehlermeldungen. Durch die internen Funktionen im EaglePlayer werden die korrekten Fehlermeldungen zurückgegeben. Man beachte, das auch DOS-Error möglich sind ! Meldung | Ursache/Erklärung | Behebung / Tip ----------------------------------------------------------------------------- Unknown Module | Pech, das Modul kennt er | überprüfen, ob alle exter- | nicht | nen Player geladen sind,ob | | alle Entpacklibraries in | | LIBS: sind | | Error in File | Diskette kaputt | versuchen mit diversen | | Proggis zu retten (Disksalv) | | Corrupt Module | Module nicht im Originalzu- | versuchen ins Soundprogramm | stand, zu kurz, zu lang | zu laden | | Audiochannels | Irgendein Programm benutzt | Dieses Programm entfernen already used ! | bereits die Soundkanäle | und dann "RETRY" anwählen | | (andernfalls "Cancel" für | | Abbruch) | | Can`t alloc Cia- | Der Cia-Interrupt wird von | Dieses Programm entfernen Interrupt | einem Programm benutzt,z.B. | und dann erneut Play an- | Musik, Modem | wählen | | Error whilst De- | Datei kaputt oder zu kurz | versuchen mit original crunching | Cruncher zu neu ? | Packer zu entpacken | | Neu besorgen | | -++- bei Fimp & | Gepackte Datei länger als | -++- Crunchmania | ungepackte | | | Error adding | File kaputt, nicht erkannt, | Speicher testen, Datei in Player | Speicher alle, kleinere | Ordnung? Player entpacken! | Versionsnummer | Bereist geladenen Player | | löschen und neu versuchen! | | Neu besorgen | | Extern Loading | zum Musikstück zugehörige | Pfade und Playereinstel- failed | Dateien konnten nicht geladen| lungen überprüfen, nach- | werden | schauen, ob alle Dateien | | im richtigen Verzeichnis | | sind | | Open Error | Datenträger defekt,Datei gar | ?? nachschauen Read Error | nicht vorhanden, Name falsch | Save Error | eingegeben ... | Write Error | | | | Module to short | Module zu kurz oder gepackte | länger saven | Datei ist kürzer als ange | | geben | | | Not Enough Memory | Speicher alle ,kann Modul | alles, was stört, raus- | nicht laden | schmeissen oder mehr RAM | | kaufen | | Error loading Instr-| Ein oder mehrere Instrumente | nachschauen, ob Sample truments | konnten nicht geladen werden | existiert! Ist genug Mem | Nicht gefunden, Datenträger | frei ? | kaputt, nicht erkannt | | | 5.2 Fehler des Programms ------------------------ Leider gibt es in diesem Programm auch Fehler, umgangssprachlich "Bugs" ge- nannt, die wir entweder aus Zeitgründen noch nicht beseitigen konnten, oder aber noch nicht im Programm aufspürten. So zum Beispiel sollen die Userprogramme abstürzen, wenn man auf dem A4000 den About-Requester öffnet, eine Weile offenläßt und dann mit "OK" bestätigt. Der Fehler liegt an ARQ 1.66, einem Requesterverbesserer, der den Absturz provozierte. Am besten rauswerfen und auf eine neue Version warten :(-=-= Falls Sie Fehler im Programm entdecken, schicken Sie bitte exakte Bugreports, wenn möglich mit Enforcer getestet, an uns. 5.3 Problemecke --------------- Symptom: Einige Player (z.B. alle 3 TFMX) spielen zu schnell unter NTSC, Productivity. Dies liegt daran, daß sie sich an der Bildwiederholrate in Sachen Geschwindigkeit orientieren. Ist diese höher als normal, so spielt somit der Player auch schneller. Eine Behebung bei den genannten Abspiel- routinen ist aufgrund deren Aufbaus sehr schwierig bis fast unmöglich. Symptom: Plötzlich zeigt der EP die Menüs nicht mehr an, obwohl noch ein paar Hundert KBytes Chip-Speicher frei sind, kann er keine Modules mehr über xx-Kbytes laden, der CLI-Befehl AVAIL produziert einen Recovery Alert. Erklärung: Einige Player - besonders Soundtracker und deren Mutanten - löchen 2-4 Bytes am Anfang jedes Samples. Wenn die Module nun zu kurz sind, wird freier Speicher gelöscht und sehr oft der Mem-Header Block am Anfang desselben, wodurch dieser Fehler auftritt. Abhilfe schafft hier nur ein Neustart des Rechners. Wir haben durch Anforderung von 2 Kbyte mehr Speicher (bzw. Modi- fizierung der Playroutinen) versucht, dieses Problem zu beheben, jedoch in letzter Zeit trat der Fehler wieder auf. Ein großes Problem ist die Einbindung ins Multitasking. Die Userprogramme werden als Task mit der Priorität -5 gestartet. Arbeitet nun ein anderes Programm permanent (z.B. ein Raytracer oder ein Packer), so bleibt für die UserPrgs`s keinerlei Rechenzeit übrig. Der Haken dabei ist, daß der Eagleplayer jedes Mal, wenn er neu anfängt (oder aufhört) zu spielen, eine Nachricht an die Userprogramme sendet und warten muß, daß sie wieder ankommt, jedoch die User- programme keine Rechenzeit bekommen... Diese Prozedure kann mitunter ein oder mehrere Sekunden dauern. Sollte aus irgeneinem Grund ein UserProgramm hängen bleiben, bleibt der ganze Player hängen ! Weiterhin ist es nicht auszuschließen, daß einige externe/interne Player al- lergisch auf verschiedene Rechnerkonfigurationen reagieren. Beispiel dafür ist TFMX-7V, Hippel, VSS. Bei Soundsystemen, die die Playroutine im Module haben, kann der Umbau manchmal ein oder mehrere Sekunden dauern, der erforderlich ist, um das Module analyzer- fähig zu machen. Besonders kras ist dieser Umbau bei Hippel und Whittaker. Manchmal hat man das Gefühl, der Player hängt. Es kann weiterhin passieren, daß der Umbau nicht den gewüschten Erfolg bringt, weil eine uns unbekannte Playroutine verwendet wurde, die andere Routinen ver- wendet, als die von uns gesuchten. Sollte so ein Fall auftreten, werden die playerspezifischen Gadgets erlaubt, aber bei Benutzen dieser passiert nichts (Bsp: Promizer). Es gab in der Testphase Probleme auf einer frühen Version der Domino- Grafikkarte. Dort funktionierten die Modi des Analyzers mit 2 Bitplanes teil- weise nicht. Symtom: Der Eagleplayer stürtzt nur noch ab. Einer der Gründe könnte daran liegen, daß der Eagleplayer mit Powerpacker gepackt war und wurde inzwischen wieder entpackt wurde. Dabei wird der Eagleplayer NICHT zu 100% wieder her- gestellt. Wird dagegen mit DLD entpackt, ist der Player IO. SCHEIß FEHLER !!! 6. Die Programierung externer Player Wer bereits Erfahrung in der Programmierung des Delitrackers hat, kann die nächsten Kapitel überspringen, da das Grundprinzip übernommen wurde und somit identisch ist. Es handelt sich bei den Kapiteln 6.1-6.5 um die originale Delitracker-Anleitung (leicht verändert). Auf die Besonderheiten des Eagleplayers wird in Kapitel 6.6 eingegangen. DeliTracker unterstützt sog. externe Player. Das sind Executables, die in einem speziellen Format vorliegen und von DeliTracker/EaglePlayer nachgeladen werden können. 6.1 Das externe Player Konzept Externe Player sind Executables (Objekt Files), die den Replaycode eines Soundsystems enthalten. Am Anfang besitzen sie eine charakteristische Playerstruktur. Diese Struktur wird mit dem Macro aus dem Includefile 'misc/deliplayer.i' erzeugt. Es gibt zwei Arten von externen Playern: normale Player und Custom Module. 6.1.1 Schematischer Aufbau von externen Playern Normale Player unterscheiden sich von Custom Modulen durch das Vorhandensein einer Check Routine und das Fehlen des DTP_CustomPlayer Tags. Desweiteren enthalten sie natürlich keine Musikdaten :-) { Playerheader } Kennzeichnet das Object als Player. { TagArray } Beschreibung, was der Player kann. { Interfacecode } Playername/Registerumsetzung/Checkcode u.ä. { Replaycode } Eigentlicher Musikabspielcode. { evtl. Daten } und Daten 6.1.2 Schematischer Aufbau von Custom Modulen Custom Module sind keine Module im herkömmlichen Sinn, sondern im wesentlichen Player, die ein Spezialmodul beinhalten. Mit diesem Format können Sie auch die ausgefallensten Moduleformate leicht an DeliTracker/ EaglePlayer anpassen. Sollten für den Player jedoch mehrere Module existieren, ist es in jedem Fall ratsam, einen richtigen Player zu schreiben. { Playerheader } Kennzeichnet das Object als Player. { TagArray } Beschreibung, was der Player kann. { Interfacecode } Routinen zur Registerumsetzung u.ä. { Replaycode } Eigentlicher Musikabspielcode. { evtl. Daten } und Daten { SOUND DATEN } Das eigentliche Modul 6.2 Anpassung von Playern Es ist relativ einfach, eine Replayroutine an DeliTracker/EaglePlayer anzu- passen. Alles was Sie tun müssen, ist ein wenig Interfacecode zu schreiben. Dies ist aber halb so wild, denn DeliTracker/EaglePlayer stellen ihnen viele hilfreiche Routinen zur Verfügung. Um ein neues Soundsystem anzupassen, benötigen Sie zum einen den Quellcode oder ein linkbares Objektfile der Replayroutine, zum anderen sollten mindestens ca. 5 Module zum Testen der Funktionstüchtigkeit des Players vorhanden sein. 6.2.1 Playerheader Das PLAYERHEADER Macro generiert den Header, der das File als externen Player identifiziert. Dieses Macro muß angegeben werden und ganz am Anfang des Players stehen. Als einziger Parameter ist ein Pointer auf ein Tag Array einzutragen, in dem alle Funktionen stehen, die der Player dem DeliTracker/EaglePlayer zur Verfügung stellt. Bei allen Funktionsaufrufen außer der Interruptroutine (DTP_Interrupt) enthält a5 die Base. Globale Variablen können dadurch adressiert werden (siehe "Misc/Deliplayer.i" & "Misc/Eagleplayer.i"). Da DeliTracker/Eagleplayer vor Aufruf einer Playerroutine (außer bei DTP_Interrupt) alle Register sichert, dürfen diese verändert werden. PLAYERHEADER Tagarray Pointer auf ein Tag Array, das mit TAG_DONE abgeschlossen sein muß. Tags, bei denen Ti_Data NULL ist, werden ignoriert. 6.2.2 Modulerkennung Damit DeliTracker/EaglePlayer die einzelnen Module unterscheiden kann, befindet sich in jedem Player eine Erkennungsroutine, die auf ein zugehöriges Modul testet. Diese Routine prüft auf Stellen im Modul, die bei allen Modulen eines Players gleich sind. So z.B. auf 'M.K.' bei Offset $438 im ProTracker-Player. Bei Sound- und NoiseTracker ist nur das Modul abgespeichert, z.B. bei MarkII hängt vor jedem Modul noch die Replay- routine. Bei so einem Modul müssen Sie auf signifikante Assembler- befehle testen. Ein Vergleich auf ein oder zwei Sprungbefehle, egal ob bra oder jmp, ist hier nicht ausreichend, da bei vielen Modulen dieses Typs Sprungtabellen am Anfang stehen und der Player möglicher- weise das falsche Modul erkennen könnte, was in den meisten Fällen zum Absturz führt. Der Player muß genau eine Checkroutine verwenden. Daraus ergeben sich zwei Grundtypen von Playern. a) Typ eins Player - in der Regel etwas komplexer Bei ihnen ist die Check1 Funktion implementiert. Vorteil: Es lassen sich auch Player realisieren, die das Modul selbst nachladen. Nachteil: Gepackte Files werden nicht unterstützt. Dieser Player sollte nur für Härtefälle verwendet werden. (z.B: IFF-8SVX Player, der das Sample während dem Spielen nachlädt, ...) b) Typ zwei Player - die einfachere Variante Bei ihnen ist die Check2 Funktion implementiert Vorteil: Das Modul kann gepackt sein, der Player bemerkt davon nichts. Nachteil: Das Modul ist in jedem Fall im Chip-Memory. Es sollte im Normalfall dieser Playertyp verwendet werden. Egal ob Typ eins oder zwei, wenn der Player das Modul erkannt hat, muß er in d0.l=0 zurückliefern, wenn nicht d0.l<>0. 8.2.3 Interrupts Hier gibt es auch eine Einteilung in zwei verschiedene Typen. a) Player, die den DeliTracker Interrupt verwenden Vorteil: Der Player ist vom Videomodus unabhängig. Besitzt automatisch die Faster/Slower/Speedregler Funktion. Kein Aufwand für den Interrupt (Code + Interruptstruktur). Ist kompatibel zum serial.device Nachteil: Der Interrupt kommt nicht synchron zum VBlank. (Dies führt nur in den seltensten Fällen zu Problemen.) b) Player die ihren eigenen Interrupt erzeugen. Vorteil: Es können andere Interruptquellen benutzt werden (z.B. AudioIRQ). Nachteil: Erhöhter Aufwand, bei VBlank nicht mehr unabhängig vom Videomodus. Wenn ein eigener Timerinterrupt verwendet wird, sollte die CIAB (wg. OS2.0) und die entsprechenden Resourcefunktionen verwendet werden. Außerdem ist es sehr sinnvoll die Replayroutine nicht direkt im CIA-B TimerInterrupt abspielen zu lassen, sondern im Timerinterrupt einen Soft-Interrupt mittels Cause() zu generieren. In diesem SoftInt kann man dann die eigentliche Replayroutine ablaufen lassen. So hat man den Vorteil, daß man wesentlich kompatibler zum serial.device ist. Dies liegt daran, daß SoftInt eine niedrigere Priorität als der der RBF (Read Buffer Full) Interrupt hat, d.h. erst wird der serielle Port bedient, dann erst die Replayroutine. Es wird davor gewarnt, direkt in die Interruptvektoren zu schreiben! Zur Erinnerung: vom Betriebssystem werden die Funktionen AddIntServer() und SetIntVector() zur Verfügung gestellt! 6.3 Bedeutung der Tags Außer den SystemTags (TAG_DONE, TAG_IGNORE, TAG_MORE, TAG_SKIP) dürfen folgende Tags verwendet werden: DTP_CustomPlayer (BOOL) - dieser Tag deklariert einen Player als Customplayer. Bei Verwendung dieses Tags sind folgende Tags dann bedeutungslos: DTP_PlayerVersion DTP_PlayerName (nur bei DeliTracker) DTP_Creator (nur bei DeliTracker) DTP_Check1 DTP_Check2 DTP_ExtLoad (nur bei DeliTracker) DTP_Config DTP_UserConfig DTP_RequestDTVersion (WORD) - damit kann man sicherstellen, daß mindestens eine bestimmte Version von DeliTracker vorhanden ist. Dieser Tag muß angegeben werden, wenn bei den DeliTrackerGlobals neue Funktionspointer hinzugekommen sind und diese vom Player benutzt werden. ti_Data ist dabei die Playerrevision. DTP_RequestV37 (BOOL) - wenn dieser Tag vorhanden ist, wird der Player nur noch von der Kick 2.0 Version von DeliTracker geladen (d.h. dtg_GadToolsBase ist gültig). DTP_PlayerVersion (WORD) - Tag, der die Revisionsnummer des Players enthält. Bei zwei Playern mit dem gleichen Playernamen wird derjenige mit der größeren Revisionsnummer geladen. DTP_PlayerName (STRPTR) - ti_Data enthält den Pointer auf den Namen des Players. Dieser String kann zwar beliebig lang sein aber zur Zeit werden nur die ersten 24 Zeichen angezeigt. Dieser Tag muß existieren! DTP_Creator (STRPTR) - Pointer auf den Namen des Autors. Dieser wird im Setupfenster im Playerinfofeld angezeigt. Dieser String kann $A als Zeilenumbruch enthalten. DTP_Check1 (FPTR) - Pointer auf eine Modulerkennungsroutine, die aufgerufen wird, wenn 1024 Bytes des Moduls geladen sind. Wird das Modul erkannt, liefert sie d0=0, ansonsten d0<>0. DTP_Check2 (FPTR) - Pointer auf eine Modulerkennungsroutine, die aufgerufen wird, wenn das komplette Modul geladen und evtl. entpackt ist. Wird das Modul erkannt, liefert sie d0=0, ansonsten d0<>0. DTP_ExtLoad (FPTR) - Pointer auf eine optionale Laderoutine für Module. Ist kein Fehler aufgetreten, wird d0=0 zurückgegeben, sonst d0<>0. Hinweis: Achten Sie darauf, daß im Fehlerfall alle allocierten Ressourcen (Memory, Locks, ...) wieder freigegeben werden, da dann keine weiteren Playerfunktionen mehr angesprungen werden. DTP_Interrupt (FPTR) - Pointer auf eine Interruptroutine, die mittels eines Timerinterrupts standardmäßig alle 1/50 sec aufgerufen wird. Dies ist die Standardmethode, um mit der richtigen Abspielgeschwindigkeit im PAL/NTSC/Productivity Videomodus zu spielen. Wenn keine DTP_Faster/DTP_Slower Tags angegeben sind, übernimmt DeliTracker dies durch Verändern der Interruptfrequenz. Dieser Tag kann auch nicht existieren, dann müssen aber DTP_StartInt/DTP_StopInt vorhanden sein ! DTP_Stop (FPTR) - Pointer auf eine optionale Stoproutine. Wenn dieser Tag nicht vorhanden ist, verfährt DeliTracker folgendermaßen: Interrupt stoppen (DTP_StopInt) Sound Cleanup (DTP_EndSnd) Song initialisieren (DTP_InitSnd) Ansonsten hat diese Routine die Aufgabe, einen evtl. spielenden Song anzuhalten und so zu initialisieren, daß dieser beim nächsten Starten des Interrupts von Anfang an zu spielen beginnt. DTP_Config (FPTR) - Pointer auf eine optionale Initialisierungsroutine. Diese wird nur einmal unmittelbar nach dem Laden des Players aufgerufen. Mögliche Anwendungen: Laden einer playerspezifischen Konfigurationsdatei. DTP_UserConfig (FPTR) - Pointer auf eine optionale Initialisierungs- routine. Diese wird nur dann aufgerufen, wenn der User den Player im Setupfenster anwählt und das 'Config' Gadget drückt. Mögliche Anwendungen: Öffnen eines Fensters zum Setzen weiterer Optionen wie z.B. Instrumentenpfad und Abspeichern einer playerspezifischen Konfigurationsdatei. DTP_SubSongRange (FPTR) - Dieser Tag sollte angegeben werden, wenn der Player MultiModule unterstützt. ti_Data zeigt dabei auf eine Routine, die als Returnwert in d0 die minimale und in d1 die maximale Subsongnummer zurückgeben muß. Hinweis: Wenn möglich sollte dieser Tag (evtl. zusammen mit DTP_SubSongTest) anstelle von DTP_NextSong/DTP_PrevSong verwendet werden. DTP_InitPlayer (FPTR) - Pointer auf eine optionale Initialsierungs- routine, die aufgerufen wird, wenn ein Modul erfolgreich geladen wurde. Tritt kein Fehler auf, liefert sie d0=0, ansonsten d0<>0. Hier muß die Allocation der Audiokanäle stattfinden! (DeliTracker stellt dafür eine eigene Routine zur Verfügung) Falls der Player Multi-Module unterstützt, muß hier dtg_SndNum(a5) auf die erste Subsongnummer gesetzt werden. Falls eine Routine für DTP_SubSongRange existiert, macht DeliTracker das automatisch (d.h. die Initialisierung von dtg_SndNum(a5) kann weggelassen werden). DTP_EndPlayer (FPTR) - Pointer auf eine optionale Cleanuproutine, die aufgerufen wird, wenn das Modul aus dem Speicher entfernt wird. Hier muß die Freigabe der Audiokanäle stattfinden! (DeliTracker stellt dafür eine eigene Routine zur Verfügung) DTP_InitSound (FPTR) - Pointer auf eine optionale Initialsierungsroutine. Diese muß das Modul initialisieren, so daß beim Starten des Interrupts der Song von Anfang an zu spielen beginnt. DTP_EndSound (FPTR) - Pointer auf eine optionale Cleanuproutine. Diese kann z.B. die Lautstärkeregister und die Audio-DMA rücksetzen. DTP_StartInt (FPTR) - Pointer auf eine Initialsierungsroutine, die existieren muß, wenn DTP_Interrupt nicht vorhanden ist. In diesem Fall muß hier der Sound gestartet werden. DTP_StopInt (FPTR) - Pointer auf eine Cleanuproutine, die existieren muß, wenn DTP_Interrupt nicht vorhanden ist. In diesem Fall muß hier der Sound gestoppt werden. DTP_Volume (FPTR) - Pointer auf eine Funktion, welche die Lautstärke neu setzt. Die Funktion wird aufgerufen, wenn die Volume neu gesetzt wird (Slider, ARexx) und beim Initialisieren des Moduls vor DTP_InitSnd. Die Mastervolume steht in dtg_SndVol(a5). Die Mastervolume ist dabei der maximale Volumewert. Die effektive Volume errechnet sich also durch: VOL_eff = (( dtg_Volume(a5) * modulevolume )>>6) Näheres siehe Beispielsourcen. DTP_Balance (FPTR) - Pointer auf eine Funktion, welche die Balance neu setzt. Die Funktion wird aufgerufen, wenn die Balance neu gesetzt wird (Slider, ARexx) und beim Initialisieren des Moduls vor DTP_InitSnd. Die Balance für die linken Kanäle steht in dtg_SndLBal(a5), für die rechten Kanäle in dtg_SndRBal(a5). Hinweis: Alle Player die Balance unterstützen können auch Volume! Man verwendet dann die gleiche Routine zum Setzen der Volume&Balance. Die linke Volume errechnet sich wie folgt: (( dtg_Volume(a5) * dtg_SndLBal(a5) )>>6) Entsprechendes gilt für rechts. DTP_Faster (FPTR) - Pointer auf eine Funktion, die den Abspielvorgang beschleunigt. DTP_Slower (FPTR) - Pointer auf eine Funktion, die den Abspielvorgang verlangsamt. DTP_NextPatt (FPTR) - Pointer auf eine Funktion, die den Patternzeiger um eins erhöht. DTP_PrevPatt (FPTR) - Pointer auf eine Funktion, die den Patternzeiger um eins erniedrigt. DTP_NextSong (FPTR) - Pointer auf eine Funktion, die Subsongnummer auf den nächsten Subsong setzt und diesen spielt. (Falls vorhanden) DTP_PrevSong (FPTR) - Pointer auf eine Funktion, die Subsongnummer auf den vorhergehenden Subsong setzt und diesen spielt. (Falls vorhanden) DTP_SubSongTest (FPTR) - (ab Version 1.35) Dieser Tag wird nur ausgewertet, wenn schon der Tag DTP_SubSongRange angegeben wurde. ti_Data zeigt dabei auf eine Routine, die als Returnwert in d0 einen Boolschen Wert zurückliefert. Dieser gibt an, ob der SubSong mit Nummer dtg_SndNum(a5) gültig ist (d0=0) oder nicht (d0<>0). Dieser Tag ist nur bei den Playern nötig, bei denen nicht jeder SubSong (innerhalb der durch DTP_SubSongRange festgelegten Grenzen) benutzt ist. 6.4 DeliTracker support Funktionen DeliTracker stellt zur Erleichterung der Playeranpassung einige Funktionen zur Verfügung. Eine Funktion wird wie folgt aufgerufen: move.l dtg_XXX(a5),a0 jsr (a0) Alle folgenden Funktionen außer dtg_SongEnd und dtg_SetTimer verwenden d0/d1/a0/a1 als Scratchregister. In a5 muß bei allen Aufrufen (außer bei dtg_SongEnd und dtg_SetTimer) die Base stehen. Derzeit existieren folgende Funktionen: dtg_GetListData SYNOPSIS memory size = dtg_GetListData(number) a0 d0 d0.l FUNCTION Liefert Adresse und Länge eines mit LoadFile() geladenen Files. INPUTS number - Nummer eines Files beginnend mit 0 für das vom User selektierte File. RESULT memory - ein Pointer auf die Startadresse des Files im Speicher oder NULL im Fehlerfall. size - Länge des Files in Bytes bzw. 0 im Fehlerfall. dtg_LoadFile SYNOPSIS success = dtg_LoadFile(name) FUNCTION Lädt und entpackt ggf. das angegebene File ins Chip- Memory. (Hinweis: diese Funktion ergänzt automatisch, falls das File mit dem angegebenen Namen nicht geöffnet werden konnte '.pp','.im' und '.xpk') INPUTS name - der Filename steht in einem internen Buffer (seine Adresse steht in dtg_PathArray) RESULT success - alles ok d0.l=0, sonst d0.l<>0. dtg_CopyDir SYNOPSIS dtg_CopyDir() FUNCTION Kopiert das Directory des von User angewählten Files an das Ende des Strings, auf den dtg_PathArray(a5) zeigt. dtg_CopyFile SYNOPSIS dtg_CopyFile() FUNCTION Kopiert den Filenamen des von User angewählten Files an das Ende des Strings, auf den dtg_PathArray(a5) zeigt. dtg_CopyString SYNOPSIS dtg_CopyString(string) a0 FUNCTION Kopiert den String, auf den das Register a0 zeigt, an das Ende des Strings, auf den dtg_PathArray(a5) zeigt. INPUTS string - der Pointer auf den anzuhängenden String steht in a0 dtg_AudioAlloc SYNOPSIS success = dtg_AudioAlloc() FUNCTION Belegt alle Audiokanäle. RESULT success - alles ok d0.l=0, sonst d0.l<>0. dtg_AudioFree SYNOPSIS dtg_AudioFree() FUNCTION Gibt die mit dtg_AudioAlloc belegten Audiokanäle wieder frei. dtg_StartInt SYNOPSIS dtg_StartInt() FUNCTION Startet den Soundinterrupt. (Falls er nicht schon läuft.) Falls DTP_Interrupt existiert, startet DeliTracker einen Timerinterrupt, ansonsten wird DTP_StartInt aufgerufen. dtg_StopInt SYNOPSIS dtg_StopInt() FUNCTION Stoppt den Soundinterrupt. (Falls er nicht schon angehalten ist.) Falls DTP_Interrupt existiert, stoppt DeliTracker seinen Timerinterrupt, ansonsten wird DTP_StopInt aufgerufen. dtg_SongEnd SYNOPSIS dtg_SongEnd() FUNCTION Signalisiert DeliTracker, daß das Modul einmal komplett gespielt wurde. Diese Funktion verändert keine Register und darf auch von Interrupts aufgerufen werden. dtg_CutSuffix SYNOPSIS dtg_CutSuffix() FUNCTION Entfernt am Ende des Strings, auf den dtg_PathArray(a5) zeigt ggf. die Endung '.pp', '.im' oder '.xpk' dtg_SetTimer SYNOPSIS dtg_SetTimer() FUNCTION Programmiert den CIA-Timer mit dem Wert, der sich in dtg_Timer(a5) befindet. Diese Funktion verändert keine Register und darf auch von Interrupts aufgerufen werden. 6.5 Tips zur Anpassung In der Checkroutine und in den Playern überhaupt darf nur auf Speicher zugegriffen werden, der auch im Bereich des geladenen Moduls liegt !! Wir haben eine riesige Menge an Enforcer-Hits bemerkt, die im wesentlichen auf illegale Speicherzugriffe durch die Checkroutinen zurückzuführen sind, wenn das Modul zu kurz ist. Wenn die Möglichkeit besteht, sollte der neue Player unbedingt mit Enforcer getestet werden. Dabei sollten alle anderen externen Player gelöscht werden. Der Player sollte den Zustand der LED unbeeinflußt lassen, da Preference-Menu eine entsprechende Funktion existiert. Diese kleine Checkliste für sollte für die Player/Custommodul Anpassung erfüllt werden, damit der Player systemkonform ist und einwandfrei funktioniert: [ ] ist die Checkroutine präzise genug ? [ ] werden die Audiokanäle richtig belegt und freigegeben ? [ ] wird aller allocierter Speicher freigegeben ? [ ] werden alle Locks wieder freigegeben ? [ ] enforcer und mungwall - Test bestanden ? [ ] werden alle denkbaren Fehler korrekt abgefangen ? [ ] wurde der Player mit 1.3, 2.0 und 3.0 getestet ? [ ] spielt der Player in allen Videomodi korrekt ? [ ] greift der Player nur auf zugewiesene Speicher zu Problemecke: --------------- Symptom mögliche Ursache Beseitigung ------------------------------------------------------------------------------ Absturz a5 überschrieben Register nicht gesichert falsche oder zu späte Initialisierung Modul zu kurz Modul zu neu für den Player präziserer Check klingt schräg Audiodaten nicht im Chipmem Player ins Chipmem falsche Initialisierung Modul zu neu für den Player präziserer Check Player benötigt bestimmte Werte in zusätzliche einigen Registern Initialisierung unverträglicher Videomodus kein Ton Audio-DMA abgeschaltet bei >68000 Player schreibt direkt auf Betriebssystem Interruptvektoren benutzen fast keine fehlerhaftes Interrupt-Handling bei VBlank-IRQ: freie CPU-Zeit Z-Flag setzen 6.6 Die Besonderheiten und Neuerungen des Eagleplayers ------------------------------------------------------ Der Eagleplayer bietet eine Fülle neuer Möglichkeiten, die im folgenden erläutert werden. Folgende Tags sind für Custom-Module im Eagleplayer wieder relevant, z.B. falls es irgendjemand packen sollte, Jason Page- Module als Custom zu erschaffen: DTP_PlayerName DTP_Creator DTP_ExtLoad 6.6.1 Die neuen Tags -------------------- EP_Get_ModuleInfo (FPTR) - Diese Funktion hat in A0 den Zeiger auf eine fertig initialisierte Module-Info Tagliste zurückzugeben oder Null für keine TagListe. Weitere Informationen finden Sie im Kapitel 6.6.2 Moduleinfo EP_Free_ModuleInfo (FPTR) - Diese optionale Funktion kann zum Beispiel dazu dienen, Speicher, der für die Moduleinfotagliste allokiert wurde, freizugeben. Es werden keinerlei Returnwerte erwartet. EP_Voices (FPTR) - Über diese Funktion werden die Werte für die einzelnen Stimmen in den Bits 0-3 des Datenregisters D0 übergeben. Ist das jeweilige Bit gesetzt, so ist die entsprechende Stimme eingeschaltet. Bit 0 entspricht Kanal 0 , Bit 1 = Kanal 1 usw. EP_Structinit (FPTR) - übergibt im Adressregister A0 einen Pointer auf eine UPS_USER - Struktur, in der der jeweilige Player die Infor- mationen für die Analyzerprogramme (Userprogramme) ablegt oder Null. Diese Strukturadresse wird dann vom Eagleplayer an alle Userprogramme weitergegeben, die sie dann auswerten. EP_StructEnd (FPTR) - Optional,die Struktur wird freigegeben, der Speicher,der eventuell allokiert wurde, darf freigegeben werden. EP_LoadPlConfig (FPTR) - ruft Routine auf, die die Konfiguration des jeweiligen Players lädt ( vorzugsweise aus 'ENV:Eagleplayer/x.config' ) EP_SavePlConfig (FPTR) - Routine zum Sichern der Playerkonfiguration nach 'Envarc:Eagleplayer/x.config' (Vorschlag der Autoren) EP_GetPositionNr (FPTR) - gibt in D0.l die aktuelle Patternnummer zurück, die gerade gespielt wird, benötigt für Patternumschaltung (dabei Scrollt der Eagleplayer die jeweilige Position ins Fenster EP_SetSpeed (FPTR) - Für Player mit eigenem Timer wird hier die Möglichkeit gegeben, den Speedregler zu nutzen. Dabei wird in D0 ein Wert von -25 bis +25 übergeben, der den aktuellen Stand des Reglers repräsentiert. 0 Stellt dabei den Standardwert dar. EP_Flags (LONG) - Die Flags geben an, welche Funktionen der Player grund- sätzlich unterstützt. Dieser Tag wurde eingeführt, seitdem wir "modifizierende" Player erschufen, die versuchen, Rou- tinen in Modulen mit Playroutine darinnen so zu modifizieren, daß z.B. Analyzerunterstützung möglich ist. Da sich solche Replays voneinander unterscheiden, kann es sein, daß die eine oder andere Funktion von Modul zu Modul nicht möglich ist. Daher gibt es folgende Flagbits: EPF_Songend - Der Player unterstützt Songend EPF_Restart - Modul läßt sich mehrfach abspielen (teilweise nicht möglich !) EPF_Disable - Player ist nicht erlaubt EPF_NextSong - kann nächsten Untersong anwählen EPF_PrevSong - kann vorherigen Untersong anwählen EPF_NextPatt - kann nächstes Pattern anwählen EPF_PrevPatt - kann vorheriges Pattern anwählen EPF_Volume - Lautstärkeregelung möglich EPF_Balance - Balance möglich EPF_Voices - Stimmenbeeinflussung möglich EPF_Save - Modul kann gesichert werden EPF_Analyzer - Analyzerunterstützung EPF_ModuleInfo- Informationen über Modul erhältlich EPF_SampleInfo- Informationen über verwendete Sample erhältlich EPF_Packable - Module darf gepackt werden EPF_VolVoices - Die Lautstärken der Stimmen können unter schiedlich sein (EPG_VolVoice1...) Dieser Tag dient vor allem Informationszwecken im PlayerWindow. EP_KickVersion (WORD) - Mindeste Kickstartversion (37 für Kick 2.0) EP_PlayerVersion (LONG)- Mindeste EaglePlayer-Version Wenn der Player nur vom EaglePlayer geladen werden soll, kann bei DTP_RequestDTVersion eine -1 eingetragen werden. EP_EjectPlayer (FPTR) - Falls der Player irgendwelchen Speicher, Filelocks usw. besorgt, kann der an dieser Stelle freigegeben werden, danach wird der Player durch den Eagleplayer entfernt. EP_Date (LONG) Datum, an dem der Replayer geschireben wurde. EP_Check3 (FPTR) - Checktroutine, die nach dem Laden der ersten 1000 Byte aufgerufen wird. Sollte das Module erkannt werden, wird es ins Fastram geladen. 6.6.2 Moduleinfo FÜr die Moduleinfofunktion stellt der Eagleplayer eine Reihe von Tags zur Verfügung, die Auskunft über das aktuelle Modul ermöglichen. Die Tagliste wird bei Aufruf von "EP_Moduleinfo" (siehe auch dort im Kapitel 6.6.1). in A0 übergeben. Bitte beachten Sie, daß bisher noch nicht alle Informationen auch angezeigt werden. In der registrierten Version wird es ein Window geben, in dem hoffentlich alle Informationen ausgewertet werden. MI_SongName (STRPTR) - Songname, der mitunter im Modul zu finden ist. Wird eine Null in TI_Data übergeben, so erscheint bei Moduleinfo ein "Unknown" als Songname. Sehr komfortable Möglichkeit, den richtigen Namen gerippter Module zu erhalten. MI_AuthorName (STRPTR) - Name dessen, der den Song schrieb, bei Rückgabe von Null in TI_Data gibt der Eagleplayer ein "Unknown" aus. MI_SubSongs (LONG) - Anzahl der Untersongs im Modul MI_Pattern (LONG) - Anzahl der Patterns im Modul MI_MaxPattern (LONG) - Maximale Anzahl der Patterns (z.B. Soundtracker: 64) MI_Length (LONG) - Länge des Songs (z.B. in Patterns) MI_MaxLength (LONG) - Maximale Länge des Songs (z.B. Soundtracker 127) MI_Steps (LONG) - Anzahl der Steps (BP Soundmon) MI_MaxSteps (LONG) - Max. Anzahl der Steps MI_Samples (LONG) - Anzahl der benutzten Samples MI_MaxSamples (LONG) - Max. Anzahl der Samples (z.B. Protracker: 31) MI_SynthSamples (LONG) - Anzahl der benutzten synthetischen Samples MI_MaxSynthSamples (LONG) - Maximale Anzahl der synthetischen Samples MI_Songsize (LONG) - Größe des Songs in Bytes MI_SamplesSize (LONG) - Länge der Samples in Bytes MI_ChipSize (LONG) - benutzter Chip-Speicher in Bytes MI_OtherSize (LONG) - benutzter Fast-Speicher in Bytes MI_Calcsize (LONG) - berechnete Länge des Modules in Bytes MI_SpecialInfo (STRPTR) - Zeiger auf Sonderinformationen als Text MI_LoadSize (STRPTR) - Anzahl der geladenen Bytes für SoundSysteme, die externe Dateien nachladen MI_Unpacked (LONG) - Ungepackte Länge in Bytes (z.B. wie lang ein Propacker- modul als Protracker wäre) MI_UnPackedSystem (LONG)(STRPTR) - gibt an, aus was dieses Format entstand, entweder eine interne Nummer(siehe unten) oder ein String, der den Namen enthält Folgende Varianten wurden bisher vorgesehen MIUS_OldSoundtracker MIUS_Soundtracker MIUS_Noisetracker MIUS_Protracker MI_Prefix (STRPTR) - Zeiger auf ein Präfix für den Namen des Modules, so z.B. 'Mod.' oder 'Mdat.'. So kann man das Modul unter dem richtigen Namen mit einer passenden Kennung abspeichern. MI_About (STRPTR) - Zeiger auf einen Informationstext zum Player. MI_MaxSubSong (LONG) - Anzahl der maximal möglichen Untersongs bei diesem Soundformat. 6.6.3 Analyzeransteuerung Die Analyzeransteuerung erfolgt mit Hilfe der UPS_USER - Struktur, die im folgenden erläutert wird. (Übergabe dieser siehe Kapitel 6.6.1 "EP_Structinit) Die Struktur sieht so aus: STRUCTURE UPS_USER,0 APTR UPS_Voice1Adr UWORD UPS_Voice1Len UWORD UPS_Voice1Per UWORD UPS_Voice1Vol UWORD UPS_Voice1Note UWORD UPS_Voice1SampleNr UWORD UPS_Voice1SampleType UWORD UPS_Voice1Repeat LABEL UPS_Modulo APTR UPS_Voice2Adr UWORD UPS_Voice2Len UWORD UPS_Voice2Per UWORD UPS_Voice2Vol UWORD UPS_Voice2Note UWORD UPS_Voice2SampleNr UWORD UPS_Voice2SampleType UWORD UPS_Voice2Repeat APTR UPS_Voice3Adr UWORD UPS_Voice3Len UWORD UPS_Voice3Per UWORD UPS_Voice3Vol UWORD UPS_Voice3Note UWORD UPS_Voice3SampleNr UWORD UPS_Voice3SampleType UWORD UPS_Voice3Repeat APTR UPS_Voice4Adr UWORD UPS_Voice4Len UWORD UPS_Voice4Per UWORD UPS_Voice4Vol UWORD UPS_Voice4Note UWORD UPS_Voice4SampleNr UWORD UPS_Voice4SampleType UWORD UPS_Voice4Repeat UWORD UPS_DMACon UWORD UPS_Flags UWORD UPS_Enabled UWORD UPS_Reserved LABEL UPS_SizeOF Die Einträge haben folgende Bedeutungen UPS_Voice?Adr - Adresse des Samples, das gerade auf dieser Stimme gespielt wird UPS_Voice?Len - Länge des Samples, das gerade auf dieser Stimme gespielt wird UPS_Voice?Per - aktueller Wert der Sampleperiod, spielt eine Schlüsselrolle, wird eine Periode<>0 übergeben, so heißt das im allgemeinen, daß eine neue Note gespielt wird. Die Sampleperiod ist un- abdingbar für den Analyzerbetrieb. Können Sie nicht heraus- finden, wann eine Note angespielt wird, so setzen Sie die Periode halt immer dann, wenn auf die Audio-Hardware zugegrif- fen wird($DFF0A6/B6/C6/D6), gilt auch für Samplelänge und Adresse UPS_Voice?Vol - Lautstärke, die auf die Hardwareregister geschrieben werden soll, Lautstärkeregelung wird dabei nicht berücksichtigt, d.h. wenn der UrWert z.B. 64 ist, die Lautstärke aber nur 32 beträgt, will ich nicht 32, sondern 64 sehen, verstanden ! (Berücksichtigung der Lautstärke ist schon anderweitig vor- gesehen, Siehe UVolume) UPS_Voice?Note- noch nicht unterstützt UPS_Voice?Samplenr - gibt die aktuelle Samplenummer an , noch von keiner Play- routine und keinem Userprogramm unterstützt. UPS_Voice?Sampletype - Sampletyp, noch nicht unterstützt UPS_Voice?Repeat - gibt an, ob das Sample nur einfach - oder sich wiederholend gespielt wird , wenn der Wert 0 ist, heißt das Repeat ein, wenn er 1 ist, so ist der Repeat ausgeschaltet UPS_DMACon - gibt an, welche Stimmen ein/ausgeschaltet sind, Bit 0 für Kanal 0 ,Bit 1 = Kanal 1 usw. , ist das Bit gesetzt, so ist der Kanal eingeschaltet (Name etwas verwirrend, der Übergabewert sollte sich eigentlich auf die "EP_Voices"-Funktion ,Kapitel 6.6.1 beziehen) UPS_Flags - Flagbits, die angeben , welche Möglichkeiten der UPS_USER - Struktur der jeweilige Player nutzt. UPSFL_Adr - Sampleadresse UPSFL_Len - SampleLänge UPSFL_Per - Sampleperiod (WICHTIG!) UPSFL_Vol - Lautstärke UPSFL_Note - Note, noch nicht unterstützt UPSFL_SNr - Samplenummer UPSFL_STy - Sampletyp, noch nicht unterstützt UPSFL_DMACon - welche Stimmen an/aus sind 6.6.4 Die neuen Eagleplayer-Globals (ab Eagleplayer V1.10) Nachdem in der Vergangenheit auf Änderungen in den Globals verzichtet wurde, ist es notwendig geworden, einige Merkzellen bzw. Unterprogramme hinzuzufügen. Bei den neuen Eagleplayer-Globals werden die Argumente nicht mehr in Registern sondern in Argumentzellen übergeben. Davon sind 8 Stück vorhanden. In der Merkzelle EPG_ArgN muß immer die Anzahl der Argumente stehen. Sollte ein Unterprogramm mehrere Argumente verlangen, müssen diese auch übergeben werden und vor allem muß EPG_ArgN immer auf den max. gesetzt werden. Sollte die Parameterübergabe anders von statten gehen, wird darauf hingewiesen. Die Unterprogramme des Eagleplayers dürfen von jedem Replayer genutzt werden, außer im Interrupt. Wenn nicht anders darauf hingewiesen wird, dürfen User- programme die Subroutinen nur nach einen USClass_LockEP benutzen. Im folgenden werden die wichtigsten Eagleplayer-Unterprogramme erklärt: ----- EPG_SaveMem ----- Es wird ein Speicherbereich unter Berücksichtigung des Save- Modes gesichert. Diese Funktion ist erst in der registrierten Version möglich. Ist der Savemode -1, wird der im Eagleplayer eingestellte Save-Mode verwendet. Input: Arg1 = Startadresse Arg2 = Endadress Arg3 = Pathadresse Arg4 = SaveMode (-1=Eagleplayereinstellung 0=nicht gepackt 1=PP-Crunched 2=LH-Crunched 3=XPK-Crunched ArgN = 4 Output: Arg1 = Ergebnis (0=Alles ok) ----- EPG_FileRequest ----- Es wird ein Filerequester unter Berücksichtigung des einge- stellten Filereq-Mode geöffnet. Es kann zwischen einer FileSelektion und einer DirSelektion unterschieden werden. Input: Arg1 = Filerequester Titlename Arg2 = Directory Path Arg3 = Filename Arg4 = Window Arg5 = Filerequestertype (1=Fileselekt 0=Dirselekt) Arg6 = OutPut-Text für Eagleplayer-Statuswindow ArgN = 6 Output: Arg1 = Ergebnis (0=Cancel oder Systemfehler, sonst 1) ----- EPG_TextRequest ----- Es wird ein Textrequester geöffnet. Übergeben werden muß ein Ascii-Text. Dieser wird dann ausgwertet und das Window wird der Größe des Textes angepaßt. In dem Text können Kennungen übergeben werden, die auf Argumente zeigen, die aus der Argumentenliste entnommen werden. Zudem kann angegeben werden wie viele Gadgets man verwenden will und es können eigene Image-Daten ins Window mit übernommen werden. Auf Kick2.0 ist der Textrequest Publicscreen unterstützt. Hinweis: Die Routine weißt noch einen bisher nicht gefundenen Bug auf. Die Routine sollte aber trotzdem in Playern benutzt werden, weil in späteren EPversion der Fehler hoffentlich beseitigt ist. Input: Arg1 = TextAdresse Arg2 = Pointer to Pubscreenname (nur Kick2.0, sonst 0) Arg3 = Position on Screen (x.w & y.w) Arg4 = Pointer to Gadgetnames Arg5 = Poniter to Requestername Arg6 = Pointer to ArgumentListe Arg7 = Pointer to ImageDatas ArgN = 7 Kennungen für Argumente: %s - String %d - Zahl in Dezimal angeben Output: Arg1 = Ergebnis 0=Fehler (z.B Window zu groß) sonst Nummer des Gadgets ----- EPG_LoadExecutable ----- Es wird ein ausführbares Programm geladen. Es wird entpackt, falls dies möglich ist Input: Arg1 = FilePath ArgN = 1 OutPut: Arg1 = Einsprungadresse des Programms d0 = Fehler (0=alles ok) ----- EPG_NewLoadFile ----- Wie DTG_LoadFile, nur das hier die Memeigenschaften mit ange- geben werden. Input: Arg1 = Memeigenschaften ArgN = 1 DTG_PathArrayPtr = Path des Files Output: d0 = Ergebnis (0=alles ok) -- EPG_ScrollText -- Scrollt den angegebenen Text ins Statuswindow des Eagleplayers Wird der Text mit Null abgeschlossen, bleibt er stehen, wird er mit eins abgeschlossen wird er im Loop gescrollt, wird er mit zwei angeschlossen, wird der Text bis an den linken Rand ge- scrollt, falls dieser noch nicht erreicht ist. Input: Arg1 = Textadresse ArgN = 1 ----- EPG_LoadPlConfig ----- Lädt eine PlayerConfig. Diese Funktion wurde eingeführt um beim Laden der Replayer, wenn kein Env-Verzeichnis existiert, nicht andauernd Cancel zu drücken. Es wird getestet, ob die Config im Env-Verzeichnis liegen soll oder nicht. Ist nun das Verzichnis nicht vorhanden, wird keine Config geladen. (Funktion noch nicht eingebaut) Input: Arg1 = ConfigPath ArgN = 1 Output Arg1 = Ergebnis ----- EPG_SavePlConfig ----- Speichert eine PlayerConfig ab. Diese Funktion wurde eingeführt um beim Saven der ReplayerConfiguration, wenn kein Env-Ver- zeichnis existiert, nicht Cancel zu drücken. Es wird getestet, ob die Config im Env-Verzeichnis liegen soll oder nicht. Ist nun das Verzichnis nicht vorhanden, wird keine Config geladen. (Funktion noch nicht eingebaut) Input: Arg1 = ConfigPath Arg2 = Startadresse Arg3 = Endadresse Arg4 = SaveMode (siehe EPG_SaveMem) Output: Arg1 = Ergebnis (0=alles ok) ----- EPG_FindTag ----- Sucht einen Tag in der angegebenen TagListe. Die Funktion ist Kickstart unabhängig und darf auch von Userprogrammen aus ohne USClass_LockEP benutzt werden. Input: a0 = Tagliste d0 = Tag Output: d0 = Wert des Tags d1 = Tag gefunden (0=nein,dann ist d0 auch 0, 1=ja) ----- EPG_FindAuthor ----- Sucht den Autor eines Musicstückes in den angegebenen Grenzen. Die Routine wird normalerweise beim Soundtracker und seinen Mutanten angewendet, sie kann aber ach auf andere Systeme übertragen werden. Es wird in den Samplenamen nach der Kennung "by" bzw. "#" gesucht. Der nächste String ist dann der Autor- name. Der Autorname muß nicht copiert werden. Es reicht aus, wenn die Adresse des Autornamens in den ModuleInfo-Tag einge- tragen wird. Input: Arg1 = Start des 1. Samplenamens Arg2 = Offset zum nächsten Sample Arg3 = Länge des Samplenamens Arg4 = Sampleanzahl ArgN = 4 Output Arg1 = Pointer to Autorstring oder NULL Arg2 = Länge des Autorstrings oder NULL Desweiteren sind in den Globals die benutzten Librarybasen festgehalten. Unter- lassen Sie es unbedingt, diese zu verändern. Sämtliche neuen Globals sind nur Lese-Globals, außer die Argumentzellen. 7. Das Arexx-Interface ---------------------- 7.1 Einführung und Beschreibung des Arexx-Portes Der Eagleplayer unterstützt nun endlich (ab V1.10) Arexx. Dazu stellt der Eagleplayer eine Reihe von Kommandos zur Verfügung, durch die der Player im Prinzip fernbedienbar wird. 7.2 Kommandoübersicht --------------------- Im folgenden sehen sie die Arexx-Kommandos, die der Eagleplayer unterstützt. Ist kein Fehler aufgetreten, wird als Result der ScrollText zurückgegeben, der im Statuswindow scrollen würde, außer wenn natürlich konkret Argumente als Returnwerte, z.B. beim Status, erwartet werden. Ist ein Fehler aufgetreten steht in rx_Result der Fehlertext. Der Anwender sollte natürlich testen, ob die einzelnen Funktionen auch nutzbar sind, um sein Arexx-Programm ordentlich anzupassen. Wenn z.B ein Module gesaved werden soll, aber dies erlaubt der Replayer nicht, dann funktioniert das eben nicht. Die Angaben in eckigen Klammen können gemacht werden, die in spitzen Klammern müssen gemacht werden. Wenn im folgenden von Filenamen gesprochen wird, dann wird grundsätzlich der ganze Path mit angegeben (falls nicht anders erwähnt). Kommando Bedeutung ------------------------------------------------------------------------------- LoadModule [Filename] Lädt das angegebene Modul ein und spielt es ab, wenn Quickstart auf ON geschaltet ist. Ist kein Filename angegeben, wird ein File- Requester geöffnet. LoadModule ... Übernimmt die angegeben Module, wie bei Multi- select, in eine Liste, die u.a. im Pull-Down Menu zu sehen ist. Das Laden des Directories entfällt. Als Filename wird hier nur der Name (kein Path) angegeben ! SaveModule [Filename] Das geladene Module wird nach Filename ab- gespeichert. Ist kein Name angegeben, dann öffnet sich ein Filerequester. (nur registrierte Version) About Module Gibt Scrolltext, der im StatusWindow angezeigt wird, zurück. EjectModule Entfernt das Module aus dem Speicher. Stop Der Player stoppt das Abspielen. Bei Anwählen von PlayModule wird es von Anfang an gespielt. ReplaySong Stoppt das Abspielen und beginnt mit dem Ab- spielen am Anfang des Modules. Play Der Player startet das Abspielen. Pause Der Player stoppt das Abspielen. Beim Anwählen von Play wird das Abpielen dort weitergeführt, wo es aufgehört hat. NextSong Es wird der nächste Subsong abgespielt. PrevSong Es wird der vorherige Subsong abgespielt. NextModule Es wird das nächste Module in der Liste ab- gespielt. PrevModule Es wird das vorherige Module in der Liste ab- gespielt. NextPattern Das nächste Pattern wird abgespielt. PrevPattern Das vorherige Pattern wird abgespielt. PubScreen Öffnet den Eagleplayer auf dem angegebenen PublicScreen. Quit Der Eagleplayer wird geschlossen. AboutEP Gibt einen String über den Eagleplayer in RX_Result zurück. ScrollText Der Text scrolt in's StatusWindow. Iconify Der Eagleplayer wird in den Iconify-Modus versetzt oder verläßt ihn. HelpMe Gibt den Helpstring für die angegebene Funktion zurück. DeleteFile [Filename] Es wird die angegebene Datei gelöscht. UserPrg Schaltet das angegebene Userprogramm an/ab. LoadConfig Lädt eine neue Eagleplayer-Config. SaveConfig Speichert die aktuelle Eagleplayer-Config ab. Font Lädt einen neuen Font für den Eagle- player. OpenMainWindow Es wird das Hauptwindow geöffnet. OpenPlWindow Es wird das PlayerWindow geöffnet. CloseMainWindow Das Mainwindow wird geschlossen. ClosePlWindow Das PlayerWindow wird geschlossen. LittleWin Schaltet den Iconify-Modus auf Little Window AppItem Schaltet den Iconify-Modus auf AppItem AppIcon Schaltet den IConify-Modus auf AppIcon Volume Setzt die Volume auf den angegeben Wert. Balance Setzt die Balance auf den angegeben Wert. TimeOut