@database "Eagleplayer.Guide" @master "Eagleplayer.Dok" @Node Main "Eagleplayer 1.50 Dokumetation" Anleitung zum Eagleplayer Version 1.50 Anleitung $VER: V1.06 (29.12.93) © 1993 Defect Software Productions externes Playerkonzept ©(P) Delirium, erweitert von Defect Inhaltsverzeichnis: 1. Copyright @{"1.1 Copyright und Vertriebsbedingungen" Link "Copyright und Vertriebsbedingungen"} @{"1.2 Distribution" Link "Distribution"} 2. Einleitung" @{"2.1 Was ist und kann der Eagleplayer ?" Link "Was ist und kann der Eagleplayer ?"} @{"2.2 Entstehung des Eagleplayers" Link "Entstehung des Eagleplayers"} @{"2.3 Was fehlt in dieser Version noch ?" Link "Was fehlt in dieser Version noch ?"} @{"2.4 Wann kommt der nächste Eagleplayer ?" Link "Wann gibt es eine neue Version des Eagleplayers ?"} @{"2.5 Registration des Eagleplayers" Link "Registration"} @{"2.6 Registrierkarte" Link "Registrierkarte"} @{"2.7 Update-Service" Link "Update-Service"} @{"2.8 Fehlerbeschreibung" Link "Fehlerbeschreibung"} @{"2.9 Keyfile-Benutzung" Link "Keyfile-Benutzung"} 3. Installation und Start @{"3.1 Systemanforderungen" Link "Systemanforderungen"} @{"3.2 benötigte zusätzliche Dateien" Link "benötigte zusätzliche Dateien"} @{"3.3 Installation auf Diskette,Festplatte,..." Link "Installation auf Diskette,Festplatte,..."} @{"3.4 Start des Eagleplayers von CLI/SHELL" Link "Start des Eagleplayers von CLI & SHELL"} @{"3.5 Start von der Workbench aus" Link "Start von der Workbench aus"} @{"3.6 Das Konfigurationsfile" Link "Das Konfigurationsfile"} 4. Benutzung des Programms 4.1 Das Hauptfenster @{"4.1.1 Steuerung des Programms über die Schalter (Gadgets)" Link "Steuerung des Programms über die Schalter (Gadgets)"} @{"4.1.2 Steuerung über die Pulldown-Menüs" Link "Steuerung über die Pulldown-Menüs"} @{"4.1.3 Tastaturkürzel" Link "Tastaturkürzel"} @{"4.1.4 Die Appwindow-Funktion" Link "Die Appwindow-Funktion"} @{"4.1.5 Pubscreens" Link "Pubscreens"} @{"4.1.6 Font-Unterstützung" Link "Font-Unterstützung"} @{"4.1.7 Interne DePacker" Link "Interne DePacker"} @{"4.1.8 Der LHA-Extraktor" Link "Der LHA-Extraktor"} @{"4.1.9 Commodity-Funktionen" Link "Commodity-Funktionen"} 4.2 Das Player-Fenster @{"4.2.1 Öffnung und Funktion des Player-Fensters" Link "Öffnung und Funktion des Player-Fensters"} @{"4.2.2 Steuerung über die Schalter und Erklärung der Funktionen" Link "Steuerung über die Schalter und Erklärung der Funktionen"} @{"4.2.3 Tastaturkürzel im Playerwindow" Link "Tastaturkürzel im Playerwindow"} @{"4.2.4 Interne Player" Link "Interne Player"} @{"4.2.5 Externe Player" Link "Externe Player"} @{"4.2.5 Fehler in den Playern" Link " Externe Player"} 4.3 Die User-Programme @{"4.3.1 Einleitung" Link "Einleitung zu den Userprogrammen"} @{"4.3.2 Steuerung der User-Programme" Link "Steuerung der User-Programme"} @{"4.3.3 Zu den einzelnen bisher verfügbaren Userprogrammen" Link "Zu den einzelnen bisher verfügbaren Userprogrammen"} @{"4.3.4 Keine Programmierrichtlinien für Userprogramme !" Link "Keine Programmierrichtlinien für Userprogramme"} @{"4.3.5 Einbindung des Eagleplayers in andere Programme" Link "Einbindung des Eagleplayers in andere Programme"} 4.4 Die Batch-Dateien @{"4.4.1 Die PlayerBatch-Datei" Link "Die PlayerBatch-Datei"} @{"4.4.2 Die UserprogrammBatch-Datei" Link "Die UserprogrammBatch-Datei"} 5. Fehler @{"5.1 Fehlermeldungen" Link "Fehlermeldungen"} @{"5.2 Fehler des Programms" Link "Fehler des Programms"} @{"5.3 Problemecke" Link "Problemecke"} 6. Externe Player @{"6.1 Einleitung zu den externer Playern" Link "Einleitung zu den externer Playern"} @{"6.1.1 Das externe Player Konzept" Link "Das externe Player Konzept"} @{"6.1.2 Schematischer Aufbau von externen Playern" Link "Schematischer Aufbau von externen Playern"} @{"6.1.3 Schematischer Aufbau von Custom Modulen" Link "Schematischer Aufbau von Custom Modulen"} @{"6.2 Anpassung von Playern" Link "Anpassung von Playern"} @{"6.2.1 Playerheader" Link "Playerheader"} @{"6.2.2 Modulerkennung" Link "Modulerkennung"} @{"6.2.3 Interrupts" Link "Interrupts"} @{"6.3 Bedeutung der Tags" Link "Bedeutung der Tags"} @{"6.4 DeliTracker support Funktionen" Link "DeliTracker support Funktionen"} @{"6.5 Tips zur Anpassung" Link "Tips zur Anpassung"} @{"6.6 Die Besonderheiten und Neuerungen des Eagleplayers" Link "Die Besonderheiten und Neuerungen des Eagleplayers"} @{"6.6.1 Die neuen Tags" Link "Die neuen Tags"} @{"6.6.2 Moduleinfo" Link "Moduleinfo"} @{"6.6.3 Analyzeransteuerung" Link "Analyzeransteuerung"} @{"6.6.4 Die neuen Eagleplayer-Globals" Link "Die neuen Eagleplayer-Globals"} 7. Das Arexx-Interface @{"7.1 Einführung und Beschreibung des Arexx-Portes" Link "Einführung und Beschreibung des Arexx-Portes"} @{"7.2 Kommandoübersicht" Link "Arexx-Kommandoübersicht"} @{"7.3 Arexx-Anpassung an DirOpus 4" Link "Anpassung an Directory Opus"} 8. Biographie @{"8. Biographie" Link "Biographie"} 9. Danksagungen @{"9. Grüße und Danksagungen" Link "Danksagungen"} @EndNode @Node "Copyright und Vertriebsbedingungen" 1.1 Copyright und Vertriebsbedingungen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Der Eagleplayer ist in der vorliegenden Version als @{"Shareware" Link "Registration"} zu betrachten. Dies heißt, daß wir bei regelmäßiger Benutzung eine Gebühr von 20 DM (bzw. 20US$ 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" Link "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/Fax: 0381 / 83979 Telefon: 0381 / 120 88 67 E-Mail: dtc@informatik.uni-rostock.de 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`" Link "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 VERTREIBEN 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. @EndNode @Node "Distribution" 1.2 Distribution ------------------ Der Eagleplayer ist ein Programmpaket, das auf 2 Disketten verbreitet wird. Die Weitergabe ist nur erlaubt, wenn folgende Dateien bzw. Directories un- verändert mitgegeben werden. Eagleplayer-MainDisk: fonts/Eagleplayer.font Eagleplayers/ EP-Userprograms/ Prefs/Env-Archive/Eagleplayer/ Eagleplayer Eagleplayer.Help Liesmich.Dok Readme.Doc Eagleplayer-Disk 2: Bonus-Programs/ Developer/ Docs/ Include/ InstallEagle InstallEagle.script InstallLibs.script Liesmich.Dok Readme.Doc @EndNode @Node "Was ist und kann der Eagleplayer ?" 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 weitere ProTracker-Packer und den schon vom Delitracker herbekannten 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 SoundTracker- RePlayer unterstützen Song-Loading (außer die ProTracker-Packer). Die Songs und Samples können gepackt sein. Der Instrumenten-Pfad kann über das Konfigurationfile 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 - AddUserDir Funktion - DeleteAll Funktion - Player erlaubt/ausgeschaltet - Möglichkeit von bis zu 32 extern zu ladenden @{"Userprogrammen" Link "Einleitung zu den Userprogrammen"} (z.B. Analyzer-) - 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) - Directorywechseln im Pulldown Menü - umfangreiche Einstellungsmöglichkeiten (Fade,Randomplay, LoadNext ...) - Geschwindigkeitsregelung über Schieberegler (Kap 4.1.1) - alle Stimmen getrennt ein- und ausschaltbar - Statusanzeige durch Scroller - sorgflältiger und umfangreicher angepaßte @{"Playroutinen" Link "Externe Player"}, fast alle funktionieren auf A4000 (Siehe Player.Dok) - hat 7 interne @{"Depacker" Link "Interne DePacker"} 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 seinen 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 - LoadPrev und LoadBefore Funktion - @{"Eagleplayer-Batch" Link "Die PlayerBatch-Datei"} (Laden des Players, wenn er benötigt wird) - @{"UserPrg-Batch" Link "Die UserprogrammBatch-Datei"} (Laden des Players, wenn er benötigt wird) - @{"LHA-Extraktor" Link "Der LHA-Extraktor"} - verschiedene Filerequester (ASL,Req,ReqTools,None) - eigener Textrequester - wahrscheinlich der einzige Player, der Protracker timingrichtig und ohne Aussetzer auf dem A4000 spielt !!! Ein besonderer Vorteil des Eagleplayer gegenüber vielen Konkurrenten ist, daß er mit den allermeisten @{"Playroutinen" Link "Externe Player"} (diejenigen,die nicht hinhauen, iehe @{"Problemecke" Link "Problemecke"}) unabhängig von der Bildwiederholrate arbeitet, also genausoschnell unter PAL, als auch NTSC oder Productivity spielt. @EndNode @Node "Entstehung des Eagleplayers" 2.2 Entstehung des Eagleplayers --------------------------------- Alles fing mit dem Phenomena-Demo "Enigma" an. Dort wurde NoisePacker verwendet. Die Musik hatten wir gerippt, aber es gab keinen Player. Nun wurde schnell ein Tool zum Abspielen dieses wirklich guten Modules geschrieben. Irgendwann wurden dann auch andere Playroutinen implementiert (NoiseTracker...). Daraus entstand dann dann der Megaplayer 1.0, der am 16.04.1992 released wurde. Er konnte zu dem Zeitpunkt 16 Playroutinen abspielen. Daraus wurden dann über 25 und das Hauptprogramm wurde immer unübersichtlicher. Im Juni 1992 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 noch mehr Playroutinen heranzu- schaffen und diese in das Programm einzubauen. Es wurde ein Konzept zum für externen Player entworfen. Doch dann geschah das Unfaßbare: Buggs bekam von einem Kumpel die Version 1.15 des Delitrackers. Welten stürzten ein, doch 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 entschied 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 Playerprinzip des Delitrackers mit einfließen. Das vor- liegende 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. @EndNode @Node "Was fehlt in dieser Version noch ?" 2.3 Was fehlt in dieser Version noch ? ---------------------------------------- Eine ganze Menge, bis heute stehen noch aus: * Moduleinfo als Überblick mit Fenster * Sampleinfo (mit Abspeicherung einzelner Samples,Sampleabspielen usw.) * UserPrginfo als Überblick über die geladenen UserProgramme * 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. @EndNode @Node "Wann gibt es eine neue Version des Eagleplayers ?" 2.4 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 etwas länger dauern, bis die nächste Version fertiggestellt ist. User, die sich registrieren lassen wollen, möchten wir hiermit bitten, etwas Geduld zu haben, bis die Antwort unsererseits kommt. @EndNode @Node "Update-Service" 2.7 Update-Service -------------------- Jeder registrierte User kann sich bei uns die neuste Version bestellen, ohne Gebühren zu bezahlen. Allerdings muß er 2 Disketten und einen an sich aus- reichend frankierten Rückumschlag mitschicken !!! Auf den Disketten muß sich das Keyfile des registierten Users befinden. Bitte schicken Sie auch Ihr Konfigurationsfile sowie ihre eigenen Eagleplayer/Userprogramm- Batchdateien mit. Weiterhin bitten darum, die @{"Updatekarte" Link "Updatekarte"} auszufüllen und vor allem die User- Nr (sie finden sie, wenn sie im "Project Menü" des Hauptfensters "About" anwählen und dann "Key" anklicken) anzugeben, ohne diese ist es uns unmöglich, zu reagieren. Bitte beantworten Sie folgende Fragen: - Sind Sie mit der Zustellung des Eagleplayer zufrieden ? - Gibt es Probleme bei speziellen Rechnerkonfigurationen ? - Laufen alle Funktionen für registrierte User einwandfrei ? - Haben Sie mehr bzw. weniger von Ihrem registrierten Eagleplayer erwartet ? - Ist die Dokumentation ausreichend ? - Welche Funktionen sollten unbedingt noch eingebaut werden ? - Arbeitet der Eagleplayer mit allem Programmen zusammen ? - Funktionieren die Playroutinen korrekt ? - Benutzen Ihre Freunde auch den Eagleplayer ? Wenn nicht, wieso nicht ? - Verbaucht der Eagleplayer Ihrer Meinung nach zu viel Speicher ? Wenn Sie Fehler beschreiben, schauen Sie unbedingt in das Kapitel @{"Fehlerbeschreibung" Link "Fehlerbeschreibung"} ! Wir werden dann auf diese Disketten die aktuellen Eagleplayer kopieren und ihn zurückschicken. Sollte noch derselbe Eagleplayer aktuell sein, wird auf die nächste Version gewartet. @EndNode @Node "Fehlerbeschreibung" 2.8 Fehlerbeschreibung ------------------------ Wenn Sie uns einen Fehler im Eagleplayer beschreiben wollen, sollten Sie einige Sachen beachten und versuchen, den Fehler so rekonstruierbar wie möglich zu machen. Eine Aussage "Der Eagleplayer stürzt manchmal beim Laden ab", hilft uns nicht im geringsten. Es könnte sein, daß das Module defekt ist oder der Depacker falsch entpackt, daß jemand den Speicher zersägt hat. Da gibt es viele Varianten. Hier nun einige Sachverhalte, die Sie unbedingt beantworten sollten, wenn möglich. * Sind Sie registrierter User ? * Welche Eagleplayerversion nutzen Sie ? * Hardwarekonfiguration angeben ! * Welche Patches haben Sie installiert ? * Freier Speicher zur Zeit des Absturzes ? * Welche Player/Userprogramme waren geladen ? Ist es offensichtlich egal, ob Userprogramme oder Player geladen wurden ? * Tritt der Fehler auch bei anderen Rechnerkonfigurationen auf ? * Konfigurationsfile angeben ! * Bei welchem Module gibt es Probleme ? Bitte immer mitschicken !!! * Tritt der Fehler nur bei Rechnern mit Cache auf ? * Wie waren die internen Einstellungen des Eagleplayers ? Ist es offensicht- lich egal, wie diese sind ? * Wurde das Module richtig erkannt ? * Sind die Gadgets schon freigegeben worden (bei Moduleloading) ? * War das Hauptwindow (noch) offen ? * Bei welcher Kickstartversion tratt der Fehler auf ? Ist es offensichtlich egal ? * Welche Userprogramme waren aktiv ? @EndNode @Node "Keyfile-Benutzung" 2.9 Keyfile-Benutzung ----------------------- Registrierte User erhalten von uns ein Key-File. Dieses muß nach Devs: kopiert werden und ermöglicht ihnen den Zugang zu den bisher gesperrten Funktionen. Das Keyfile ist personengebunden. Es enthält die volle Adresse des Users sowie die UserNr und weitere Daten. Sollten wir erfahren, daß ein Keyfile an Dritte weitergegeben wurde, werden wir uns gerichtlich gegen diese Personen vorgehen. In der nächsten Vesion des Eagleplayers wird diese UserNr dann gesperrt. Alle Keyfiles können von nachfolgenden Eagleplayer-Versionen genutzt werden. Es ist durchaus möglich, daß spätere DEFECT-Produktionen auch mit diesem Keyfile laufen. Mehr wird nicht verraten !!! @EndNode @Node "Systemanforderungen" 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. (neuerdings wird auf A1200/50MHz programmiert) 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 oder auf die @{"Batch" Link "Die PlayerBatch-Datei"} Funktionen zugreifen. @EndNode @Node "Benötigte zusätzliche Dateien" 3.2 Benötigte zusätzliche Dateien ----------------------------------- Der Eagleplayer ist nun auf keine externe Library mehr angewiesen. Ansonsten versucht des Eagleplayer die XPKMaster.Library, die PowerPacker- Library, CRM.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. Weiterhin wird versucht die ASL.Library zu öffnen. Sie muß nicht vorhanden sein. Der Eagleplayer versucht ein @{"Konfigurationsfile" Link "Das Konfigurationsfile"} zu laden Zum Betrieb der weiteren Filerequester sind außerdem die "req.library" und die "reqtools.library" notwendig. @EndNode @Node "Installation auf Diskette,Festplatte,..." 3.3 Installation auf Diskette,Festplatte,... ---------------------------------------------- Um den Eagleplayer per Hand zu installieren, sind folgende Schritte nötig: - als erstes sind die @{"o.g." Link "Benötigte zusätzliche Dateien"} 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 dem bei- liegenden Installationsskript tun (Installeagle). @EndNode @Node "Start des Eagleplayers von CLI & SHELL" 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. @EndNode @Node "Start von der Workbench aus" 3.5 Start von der Workbench aus --------------------------------- Zum Start von der Workbench genügt ein einfacher Doppelclick, durch den der Eagleplayer geladen wird. Beachten Sie bitte, daß der Eagleplayer noch keine Tooltypes auswertet. @EndNode @Node "Das Konfigurationsfile" 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. Die Kommandos des Konfigurationsfiles werden teilweise auch bei den @{"Arexx-Kommandos" Link "Arexx-Kommandoübersicht"} verwendet. @EndNode @Node "Das Hauptfenster" 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.50 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 @EndNode @Node "Steuerung des Programms über die Schalter (Gadgets)" 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. @EndNode @Node "Steuerung über die Pulldown-Menüs" 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 das InfoRequester über den Player ausgegeben. Add Player - Öffnet den Filerequester, um einen zum Eagleplayer hinzuzu- fügenden Player zu selektieren. Add PlDir - Öffnet den Filerequester, um ein Directory mit Eagleplayern hinzuzufügen Show Players - Öffnet das Playerinfofenster (siehe Kapitel 4.2.1) Load Config - Konfiguration laden, nur in der registrierten Version verfügbar. Save Config - Konfiguration sichern, nur in der registrierten Version verfügbar. Delete File - Datei löschen 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. Hide - Alle Windows werden geschlossen. Quit - beendet den Eagleplayer. Das Special-Menu ~~~~~~~~~~~~~~~~~ Preferences: ~~~~~~~~~~~~~~ ScrollInfos - Die Informationen wie Filter on/off werden gescrollt. FlashPointer - Beim Entpacken eines Modules flackert der 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 Mastervolume gesetzt, werden die Lautstärkewerte für die UserProgramme verändert, das heißt in Abhängigkeit von der Lautstärkeeinstllung des Eagle- players ändert sich auch der Ausschlag von Analyzer, Levelmeter, Levelgraph usw. AutoPassword - Wenn bei einer Funktion ein Password be- nötigt wird, wird das zuletzt ein- gegebene automatisch benutzt. Use SongName - Beim Saven des Modules wird der Songname benutzt, falls vorhanden. (r.V) Use Prefix - Beim Saven des Modules wird ein Prefix vor den Namen gehängt, falls durch den Replayer unterstützt. (r.V) Quit Surface - Soll beim Beenden einer Userprogramm- oberfläche der Eagleplayer beendet werden ? Quit Eagle - Soll der Eagleplayer beim Betätigen des Close-Gadgets beendet werden ? SaveT - Soll bei gepackten Mods, die normaler- weise nicht packbar sind, das File nach "T:" gespeichert und danach ungepackt geladen werden, so daß solche Modules gepackt werden dürfen ? ~~~~~~~~~~~~~~~~ Eject Players - Alle unbenutzen Eagleplayer werden ge- löscht. Beachten Sie bitte, wenn diese Funktion ausgeschaltet ist, jeder Player nur ein Mal eingeladen wird. Eject UserPrg - Wenn ein Userprogramm geschlossen wird, dann wird es gelöscht. Use PlBatch - Das Batch-Loading wird ein/ausgeschaltet Use UPrgBatch - Das Batch-Loading wird ein/ausgeschaltet Load PlBatch - Ein EPBatch-Datei wird geladen Load UPrgBatch - Ein UPrgBatch-Datei wird geladen Modules-Prefs ~~~~~~~~~~~~~~~ Rescan Dir - Das Direktory wird neu geladen. ~~~~~~~~~~~~~~~~ Loaddir - Das Direktory wird ins PullDown Menü geladen. Wenn Load Dir ausgeschaltet ist, werden NextModule und PrevModule gesperrt. Ein LoadNext findet ebenfalls nicht statt. Use EPDir - Soll ein EPDir geladen werden oder das ganze Dir gescannt werden. Das EPDir ist auch auf Rechner mit Dirchaching schneller. (nur für registrierte User) Autodir - Wenn das Directory geändert wird oder die Diskette gewechselt wird, wird das Dir neu geladen. Notify - Ab Kick2.0 kann die Notify-Function ein- geschaltet werden, welche der normalen Autodir Funktion vorzuziehen ist. Scan Always - Soll das Direktory jedes Mal geladen werden, wenn ein Module über File- requester, Arexx oder ein externes Userprogramm geladen wird ? ~~~~~~~~~~~~~~~~ Show DirNames - Sollen Dirnamen ins Pulldown-Menü über- nommen werden ? HideAll - Sollen beim Direktoryladen alle als nicht-Module bekannten Filetypes (*.asm) versteckt werden ? ~~~~~~~~~~~~~~~~ CheckDifference - Noch nicht eingebaut DirMemsize - Die Größe des internen Direktorypuffers kann eingegeben werden. Ein File benötigt 100 Byte. Entries Per Menu- Die Anzahl der maximalen Einträge für das Modules-Pulldown Menü kann angegeben werden, von 0-63. Null entspricht dabei der maximal zu- lässigen Anzahl für den jeweiligen Screen. User-Programs ~~~~~~~~~~~~~~~ Add UserProgram - Ein Userprogramm kann geladen werden Add UserDir - Es kann ein ganzes Dir von Userpro- grammen geladen werden. Save-Mode: ~~~~~~~~~~~~ Uncrunched - Das Module wird ungepackt gespeichert. PPcrunched - Das Module wird vorm Abspeichern mit dem Powerpacker-Mode gepackt. Dabei kann jetzt sogar zwischen Normal, Protected und SampleMode sowie einer Kombination dieser entschieden werden. !!! Powerpacker © Nico Francois, Powerpacker Samplemode © DEFECT !!! LHCrunched - Das Module wird vorm Abspeichern mit dem LH-Mode gepackt. Dabei kann zwischen Normal und SampleMode entschieden werden. XPKCrunched - Das Module wird vorm Abspeichern mit dem eingestellten XPK-Mode gepackt. Dabei zwischen Normal und Protected entschieden werden. CRMCrunched - Das Module wird vorm Abspeichern mit dem CrunchMania-Mode gepackt. Dabei kann jetzt sogar zwischen Normal, Protected und SampleMode sowie einer Kombination dieser entschieden werden. ~~~~~~~~~~~~~~~~ Automatic Save - Bei Aktivieren der Module-Save-Funktion wird das Module automatisch, ohne Filerequester, im angegebenen Direktory gesichert. ("Set SaveDir") Overwrite - Es wird vor dem Überschreiben einer Datei beim Module speichern gewarnt. (r.V) Safe Save - Bei Sichern einer Datei wird erst eine Sicherheitskopie erstellt und dann das Original, falls vorhanden, gelöscht. SS Dir - Ein Module wird automatisch in das nach dem Soundsystem benannten Dir gesichert. (Beispielsweise wird beim Speichern eines "Prorunner 1.0" Modules versucht, dieses im Verzeichnis "Prorunner 1.0" abzulegen. Sinnvoll in Verbindung mit "Automatic Save". SampleMode - Beim Packen wird ein bestimmter Mode verwendet, der es ermöglicht, daß diese Dateien sich besser packen lassen. Save As PT - Das aktuelle Module wird als Protracker gespeichert, falls dies möglich ist. (zur Zeit nur mit den internen Replayern, außer Customplay, Star- trekker,Audiosculpture und Old ST) Protect - Das Module wird beim Packen geschützt. Man benötigt zum Entpacken das einge- stellte Password. ProtectionBits - Beim Speichern einer Datei werden die Bits einer Datei so gesetzt, daß sie nicht überschrieben werden kann. ~~~~~~~~~~~~~~~~ Set SaveDir - Mit Hilfe eines Filerequesters kann das Save-Direktory eingestellt werden. Change XPK-Mode - Der XPK-CrunchMode wird eingestellt. Change Password - Man kann das Passwort neu festlegen. Programm-Mode: ~~~~~~~~~~~~~~~~ No new Module - Bei einem Songende wird kein neues Module geladen und das Abspielen stoppt. LoadPrev - Wenn Songend oder PlayTime einge- schalted sind, wird das vorherige Module geladen. Loadnext - Wenn Songend oder PlayTime einge- schalted sind, wird das nächste Module geladen. RandomPlay - Wenn Songend oder PlayTime einge- schalted sind, wird ein zufällig ge- wähltes Module geladen. Bei Betätigung von Next- oder PrevModule wird ebenfalls ein zufällig ausgewähltes Module abgespielt. Dabei werden erst alle Module des geladenen Dirs gespielt, ehe ein Module doppelt geladen wird. Allerdings ist es möglich ein Module über das Pull-Down Menü anzuwählen, ohne daß der interne Zähler sich das merkt, d.h. es kann per Randomplay auch noch mal ge- spielt werden. ~~~~~~~~~~~~~~~~ Songend - Bei Songenderkennung wird das Abspielen unterbrochen und das nächste Module geladen, wenn oben LoadNext,Loadprev oder Randomplay eingestellt sind. Load Before - Es wird nach Initialisieren des Sound- systems bereits das nächste Module ge- laden. Damit wird ein recht reibungs- loser Übergang zwischen Modulen er- reicht, um Megamixe wie "RAF Megamix2", "LSD-Total Kaos" oder "Max Mix"(Flash Prod.) korrekt abspielen zu können. AutoSubSong - Wenn Songend oder PlayTime eingeschaltet sind, wird der nächste SubSong abge- spielt, falls möglich, anstelle sofort das nächste Module zu laden. (r.V.) Randomsong - Äquivalent zu RandomModule bloß mit Sub- songs. LoadAlways - Voraussetzung: Songend=on oder Playtime gesetzt und LoadNext=on Es werden so lange Module geladen, bis eines abgespielt werden kann. Quickstart - Das Module wird sofort nach laden abgespielt. ~~~~~~~~~~~~~~~~ Set PlayTime - Es kann eine max. Spieldauer eingegeben werden, in dezimal. Warning: ~~~~~~~~~~ Small Module - Sollte das Module zu kurz sein, wird ein Warnrequester ausgegeben. Big Module - Sollte das Module zu lang sein, wird ein Warnrequester ausgegeben. Module Fault - Sollte das Module kaputt sein, wird ein Warnrequester ausgegeben. PS: Alle Requester werden nach Init- Player bzw. GetModuleInfo ausgegeben. File-Requester: ~~~~~~~~~~~~~~~~~ No Filerequester- Es wird kein Filerequester benutzt. Alle typischen Eingaben erfolgen über ein Stringgadget im HauptWindow. Req.Library - es wird die Req.Library benutzt Reqtools.Library- es wird die Reqtools.Library benutzt ASL.Library - es wird die ASL.Library benutzt Iconify: ~~~~~~~~~~ - Wenn Sie Kick2.0 oder höhere Kickstartversionen besitzen können Sie in den Iconify Modus zwischen LittleWin (Default) , AppIcon oder AppItem auswählen. Benutzen Sie den Appicon Modus, so können im ikonifizierten Zustand Files nach dem drag&drop System der Workbench auf das AppIcon gezogen werden, so daß versucht wird, diese Files als Modules abzuspielen. Set Voices - Die Stimmen können 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 bzw. 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. Change PScreen - Es erscheint ein StringGadget im MainWindow, in dem Name des neuen PubScreens eingegeben werden kann, auf dem der Eagleplayer dann erscheinen soll. 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. @EndNode @Node "Tastaturkürzel" 4.1.3 Tastaturkürzel ---------------------- Die wichtigsten Funktionen des HauptWindows bzw. des Pull-Down-Menus unter- stützen Tastaturabfragen. Im folgenden werden die Tastaturkombinationen aufgelistet durch die einige Funktionen aufgerufen werden können. Da wären: ("A" = rechte "AMIGA"-Taste) * Project-Menu * Load Module A + l Save Module A + w About Module A + a Add Player A-Taste Show Players P-Taste Help Help-Taste Iconify A + i oder I-Taste Hide A + h oder ESC 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 * Modules-Prefs Rescan Dir R-Taste User Programs Add UserProgram U-Taste Programm-Mode Set Playtime A + z 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 + - Toggle Filter A + f @EndNode @Node "Die AppWindow-Funktion" 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 können aus verschiedenen Directory stammen! @EndNode @Node "Pubscreens" 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 @EndNode @Node "Font-Unterstützung" 4.1.6 Font-Unterstützung -------------------------- Beim Eagleplayer kann ab V1.10+ angegeben werden, welcher Font benutzt wird. Bitte beachten Sie, daß nur 8*8 ungepackte, nicht proportionale Fonts benutzt werden dürfen. Als Beispiel liefern wir auf der MainDiskette einen Eagleplayer.Font mit. @EndNode @Node "Interne DePacker" 4.1.7 Interne DePacker ------------------------ Der EaglePlayer in der vorliegenden Version kann Datenfiles entpacken, wenn diese mit folgenden Crunchern gepackt sind: - CrunchMania ;nur mit Library, aber alle Modi - Powerpacker (falls vorhanden, wird die Library benutzt) - LH (PMC vom Powerplayer- doch was ist am Power- player POWER ???) - Fimp - Pack (Soundtracker-Songpacker) - XPK - StoneCracker V4.0 Bei Fimp wird nur ein Memoryblock allokiert, in den das Module geladen wird und auch entpackt wird. Diese Methode funktioniert wunderbar, aber eben nur bei 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-, 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 ? @EndNode @Node "Der LHA-Extraktor" 4.1.8 Der LHA-Extraktor" ------------------------- Ab dem Eagleplayer V1.50 besitzt der Eagleplayer die Möglichkeit LHA-Archive zu entpacken. Dabei wird zur Zeit nur der erste Eintrag entpackt und geladen. Als Hilfsprogramm wird natürlich LHA benutzt, welches sich im C-Verzeichnis des Boot-Laufwerkes befinden muß. Das Module wird entpackt nach T: und dann von dort geladen. In Zukunft wird bei Mehrfilearchiven der Inhalt des Archives in das Pull-Down Menu übernommen. @EndNode @Node "Commodity-Funktionen" 4.1.9 Commodity-Funktionen ---------------------------- Der Eagleplayer besitzt seit der Version V1.10 einen Commodity-Port. Dieser ist nur ab Kick2.0 aufwärts verfügbar. Der Eagleplayer kann über selbstdefinierte Hotkeys aufgerufen werden. Vor- eingestellt ist die Tastenkombination "CONTROL ALT E". Bei Aktivation des Hotkey wird entweder das Hauptwindow geöffnet und in den Vordergrund ge- bracht oder geschlossen. In Zusammenarbeit mit Commodity-Exchange können weitere Commandos, wie u.a. Quit realisiert werden. @EndNode @Node "Öffnung und Funktion des Player-Fensters" 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. @EndNode @Node "Steuerung über die Schalter und Erklärung der Funktionen" 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 selektiert, können Sie folgendes tun: - lesen, was er alles unterstützt, z.B. ModuleInfo, Save, Packable - ihn löschen (außer interne Player) - ihn deaktivieren/aktivieren, 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 ! @EndNode @Node "Tastaturkürzel im Playerwindow" 4.2.3 Tastaturkürzel im Playerwindow -------------------------------------- Die wichtigsten Funktionen des Playwindows unterstützen Tastaturabfragen. Im folgenden werden die Tastaturkombinationen aufgelistet durch die einige Funktionen aufgerufen werden können. Da wären: Window schließen ESC-Taste Add Player A-Taste Add PlDir P-Taste Delete Player D-Taste Delete All E-Taste Enable/Disable E-Taste Config C-Taste Load L-Taste Save S-Taste Weiterhin kann per Cursortasten das "ListViewGadget" bewegt werden. @EndNode @Node "Interne Player" 4.2.4 Interne Player ---------------------- Der EaglePlayer besitzt in der vorliegenden Form 18 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. Bei den meisten internen Player handelt es sich um Protracker-Packer, die in Protracker zurückconvertiert werden. Dabei kann man davon ausgehen, das die beste Playroutine für diese Format benutzt wird. Es können alle PT-Packer als Protracker gespeichert werden. Folgende Player besitzt der Eagleplayer intern: Audio Sculpture - Siehe Startrekker 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. Digital Illusions- SoundPacker, vor allem von der gleichnahmigen Firma verwendet. Game Music Creator- Ein OldSoundTracker-Packer. Kript - Ein Protrackercodierer, bei dem die Pattern lediglich um einen variablen Langwortwert addiert werden. Dieser Player ist grundsätzlich disabled. Bei Benutzung muß der richtige Code über die Config eingegeben werden. Er erkennt übrigens alle ProTrackerMods. 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 Samplepfade ! Hier kommt eine original Protracker V1.0b Play- routine zum arbeiten, in der mehrere Bugs be- hoben wurden ! Noiserunner - Ein ProTrackerPacker von Chaos of Sanity, der auf Zeit getrimmt ist und nicht auf die Pack- rate. Old SoundTracker - Es wird die Soundtracker 2.0 Routine von Unknown of Doc verwendet. Sie scheint am kompa- tibelsten zu sein. Module, die nicht laufen, bitte mit TestModule und Replay-Source an uns schicken. Der Player kann ebenfalls Songs laden Allerdings mußten jede Menge Fehler behoben werden. ProPacker 1.0 - Ein PT-Packer von Azatoth of Phenomena. Achtung Alle zu kurzen Mods werden nicht erkannt, weil die Pattern am Ende des Mods liegen und voll- ständig sein müssen. ProPacker 2.0/3.0- PT-Packer von C. Estrup (Static Bytes). ProRunner 1.0 - Ein Packer von Cosmos of Sanity. Hier handelt es sich lediglich um einen Kodierer. ProRunner 2.0 - Ein PT-Packer von Cosmos. Packt recht gut, ob- wohl der Packer einige Bugs hat. 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. The Player 4.x - Endlich ein ordentlicher Player für das Mist- ding. Es werden Die Formate mit den Kennungen "P40A","P40B" sowie "P41A" geladen. Ein sehr effizienter ProTracker-Packer. Packer von Jarno Paananen. Unic-Tracker - Ein Packer von Laxity of Kefrens. Unic-Tracker2 WantonPacker - Ein Packer von Wanton of Bloodsuckers. Hier handelt es sich lediglich um einen Kodierer. @EndNode @Node "Einleitung zu den Userprogrammen" 4.3.1 Einleitung zu den Userprogrammen ---------------------------------------- Die Userprogramme stellen eine Neuerung auf dem Markt überhaupt dar. Sie sind extern 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 32 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. @EndNode @Node "Steuerung der User-Programme" 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 Hide-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. Wird im Pull-Down-Menu der Punkt "Quit" ausgewählt, wird das Userprogramm aus dem Speicher entfernt. 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 - Hifi System V 1 (heißt Kenwood und sieht aus wie Technics) - M.E.L.G.U. (Mega Eagleplayer List Generating UNIC) * Stereoscope * Monoscope * Voicemeter @EndNode @Node "Zu den einzelnen bisher verfügbaren Userprogrammen" 4.3.3 Zu den einzelnen bisher verfügbaren Userprogrammen ---------------------------------------------------------- Analyzer - Quasi Spectrum Analyzer, der nach dem üblichen Prinzip arbeitet und nach der Samplerate beim Abspielen agiert. (genauso wie beim Protracker etc.) Auch wenn es einige Leute nicht glauben wollen, der Analyzer besitzt wirklich 21 Modi, wobei zu sagen ist, daß einige sich nur um Kleinigkeiten unterscheiden. Wen Scroller und/oder Bild stören, kann dies über das Pulldownmenü abschalten, in der Konfiguration wird das ganze berücksichtigt, sowie der ak- tuelle Modus mit abgespeichert. Quadrascope/Stereoscope/Monoscope - Anzeige der aktuellen abgespielten Samples, entweder getrennt (Quadrascope) oder additiv zusammengefaßt. (Monoscope, Stereoscope) Diese Anzeige erfolgt in Echtzeit, daß heißt, daß auf einem ange- schlossenen Oszilloskop dasselbe sichtbar sein müßte. Time - Anzeige der Abspiel-, sowie der Systemzeit. Das Programm wurde so umgeschrieben, daß der Prozessorzeitaufwand drastisch gesenkt werden konnte. Levelmeter/Levelgraph/Levelgraph2 - "echte" Aussteuerungsanzeigen, die sich ihre Werte aus den Samples holen und somit die wirklich vorhandene Lautstärke anzeigen. Voicemeter - Quasi Aussteuerungsanzeige, die auf die von der Replayroutine ein- gestellten Lautstärkewerte reagiert. Also wieder derselbe Gag wie bei den schon vorher auf dem Markt befindlichen Programmen.(Tracker) Verschiedene Bertiebsmodi möglich, erreichbar über die Taste "1" !! Eine Anwahl mittels Gadgets ist in Vorbereitung. Analyzer2 - Kleine, unter 1.3 nutzbare Version des Analyzers, noch nicht ganz fertig, die endgültige Version folgt in Kürze (irgendwann Anfang `94) Noiseeagle - Wer die Eagleplayeroberfläche überhaupt nicht mag (Hi CPT. BIFAT of TEK) kann dieses Userprogramm starten, das genau wie der gute alte Noiseplayer ein File anfordert und dieses abspielt. Der Unterschied zum Original besteht darin, daß ein wenig mehr Replays unterstützt werden und ich auf die hardwarehackenden Maus/Tastaturabfragen verzichtet habe. Hifi System V1 - Mir gefiel irgendwie mal ein Bild eines HiFi-Turms von Platin, das ich nach Rücksprache mit dem Creator an meine Vorstellungen an- paßte und nun als erste vollwertige neue Eagleplayeroberfläche präsentiere. Aufgrund dessen, daß unsere Grafiker Protest an- meldeten, stellte ich die Arbeiten ein und bringe dieses Programm als Beigabe zur unregistrierten Version heraus. Es dient einmal zur direkten Steuerung des Eagleplayers (ich glaube kaum, daß die Funktionen lang und breit erklärt werden müssen) und in zweiter Hinsicht sind die Analyzer integriert worden, in einer etwas farbigeren Form. Außerdem ist das Levelmeter (die horizontale, LED-förmige Aus- steuerungsanzeige) samplegesteuert, daß heißt, daß die Anzeige sich wirklich analog zur tatsächlichen Lautstärke verhält, da die Werte aus den Samples selbst berechnet werden. M.E.L.G.U eigene Dokumentation. @EndNode @Node "Keine Programmierrichtlinien für Userprogramme" 4.3.4 Warum haben wir noch keine Programmierrichtlinien herausgegeben ? ------------------------------------------------------------------------- Das große Problem besteht darin, daß die Userprogramme schon in der Version 1.0 des Eagleplayers sehr komplex aufgebaut waren und ab der Version 1.10+ ein Haufen neuer Funktionen dazukam. Es sei dazu nur die Möglichkeit erwähnt, externe, vom User ausgewählte Oberflächen zu entwickeln. Unser zweites großes Problem ist das Zeitproblem, mal abgesehen davon, daß dann sowieso keiner durchsehen würde, selbst wenn wir uns große Mühe in der Doc geben würden. ( Wir sehen ja selbst bald keine Sonne mehr :)-=-= ) Wer unbedingt ein Userprogramm programmieren will, der sollte sich bei uns melden. @EndNode @Node "Einbindung des Eagleplayers in andere Programme" 4.3.5. Einbindung des Eagleplayers in andere Programme -------------------------------------------------------- Der Eagleplayer bietet die Möglichkeit über den eigenen UserprogrammPort eine Kommonikation mit völlig eigenenständigen Programmen zu vollziehen. Es werden normalen UM_Messages ausgestauscht, mit dem MessageType "USM_ExternalPrg". Ein Beispiel für diese Möglichkeiten bietet der als Bonusprogramm beigelete Noiseconverter. Er gibt an den Eagleplayer das Kommando ein bestimmtes Module aus dem Speicher zu laden und abzuspielen. Es gibt auch möglich ein Extloading zu emulieren, so daß ein Abspielen aus einem Ripper gar kein Problem ist. Alles Klar, Turbo ??? Hier nun ein kleiner Sourcetext zur Demostration. Er ist voll lauffähig auf ASM-One und Devpac. Wer also mal ein bischen testen will, braucht ihn nur aus der Dok zu flücken. ************************************************************************* * PlayMem, Message an Eagleplayer senden * * -------------------------------------------- * * * * Dieses Sourcecode ist ein Beispiel, um Speicher im Eagleplayer abzu- * * spielen. Es sollte dabei logischerweise um ein heiles Module handeln. * * Es werden dabei die Startadressen der jeweiligen Files sowie deren * * Größe angegeben. Probleme gibt es bei Replayern, die Check1 benutzen. * * Diese Funktion ist hervorragend für Ripper (Hi Turbo) geeignet. * * * * Kick2.0+ ist Vorraussetzung !!! * * Geschrieben mit ASM-One/Devpac. © DEFECT 1993 * ************************************************************************* incdir "include:" include "misc/eagleplayer.i" include "exec/exec_lib.i" *-------------- Eagleplayer-TestProgramm ------------* Prg_Start: bsr.s PlayEagle moveq #0,d0 rts *------------- Eagleplayer gestartet ?? -------------* PlayEagle: move.l 4.w,a6 lea EP_Portname(pc),a1 jsr _LVOFindport(a6) ;Eagleplayers Port finden tst.l d0 beq.w .NoEagleplayer ;Cancel->Ende des Programms move.l d0,EP_Port *------ Schnell mal einen Port Createn ---------* jsr _LVOCreateMsgPort(a6) move.l d0,TP_Port suba.l a1,a1 jsr _LVOFindTask(a6) ;Task finden move.l d0,d6 *------------ Message vorbereiten --------------* lea MyMessage(pc),a1 clr.l (a1) ;LN_Succ löschen clr.l 4(a1) ;LN_Pred löschen move.w #$800,8(a1) ;LN_Type & Pri setzen move.l #PlayMem.MSG,10(a1) ;LN_Name setzen move.l TP_Port(pc),14(a1) ;Portadresse,an die ;zurückgesendet wird move.w #UM_sizeof-20,18(a1) ;Length festlegen move.w #-1,UM_UserNr(a1) move.l #USM_Externalprg,UM_Type(a1) move.l d7,UM_Userport(a1) move.l d6,UM_TaskAdr(a1) move.l #-1,UM_Signal(a1) move.w #USClass_Command,UM_class(a1) move.l #0,UM_Userwindow(a1) move.l #UCM_PlayMem,UM_Command(a1) *------- Argumentstruktur initialisieren -------* moveq #EPT_String+30,d0 movem.l d1-a6,-(Sp) move.l 4.w,a6 move.l #$10001,d1 jsr _LVOAllocmem(A6) movem.l (sp)+,d1-a6 tst.l d0 beq .DelMsgPort *--- Hauptfile in spezieller Struktur übergeben ---* move.l d0,a2 move.l a2,UM_ArgString(a1) move.l #EPT_String+30,EPT_Stringsize(a2) clr.l EPT_Next(a2) move.l DatenPuffer(pc),EPT_Result1(a2) ;Arg1 (Adr) move.l DatenPuffer+4(pc),EPT_Result2(a2) ;Arg2 (Size) *----------- den Filenamen übergeben --------------* * Auf jeden fall sollte eine Kennung übergeben * * werden, durch die erkannt wird, welcher Replayer * * genutzt wird. Der entsprechende Player wird dann * * geladen !! * **************************************************** move.l a2,a4 moveq #30,d1 lea.l My_Filename(pc),a3 lea EPT_String(a2),a2 .Copyfilename: move.b (a3)+,(a2)+ dbeq d1,.Copyfilename clr.l UM_Result(a1) move.l a1,a2 *-- Nun die Argumentenstrukturen für EXTLoading füllen --* lea DatenPuffer(pc),a3 move.l DatenPufferAnz(pc),d7 subq.l #2,d7 blo.s .NoExtLoading *---- Speicher für nächste Argumentstruktur besorgen ----* .Fill: move.l 4.w,a6 move.l #EPT_String,d0 move.l #$10001,d1 jsr _LVOAllocMem(a6) move.l d0,a1 tst.l d0 beq.w .OutOfMem *----------- nächste Argumentstruktur füllen ------------* move.l d0,(a4) move.l d0,a4 addq.l #8,a3 move.l (a3),EPT_Result1(a1) move.l 4(a3),EPT_Result2(a1) move.l #EPT_String,EPT_StringSize(a1) dbf d7,.Fill *----------------------- Message schicken ---------------------* *- Der Eagleplayer kopiert die entsprechenden Daten in selbst -* *- Allocierten Speicher, so daß der Speicher hier beim Test -* *------- nach Replyen der MSG weiter genutzt werden kann ------* .NoExtLoading: lea MyMessage(pc),a1 move.l 4.w,a6 move.l EP_Port(pc),a0 jsr _LVOPutmsg(a6) *---------- Auf Message warten ------------* .Wait: move.l TP_Port(pc),a0 move.l 4.w,a6 jsr _LVOWaitPort(A6) move.l TP_Port(pc),a0 jsr _LVOGetMsg(A6) tst.l d0 beq.s .Wait move.l d0,a1 cmp.l #USM_ExternalPrg,UM_Type(A1) ;Handelt es sich um beq.s .Ok ;unsere MSG jsr _LVOReplyMsg(a6) bra.s .Wait *--- Zurückgekommende Message auswerten ---* .Ok: move.l UM_ArgString(A1),d0 ;Antwort kopieren und beq.s .NotAnswered move.l d0,a4 move.l EPT_Stringsize(a4),d0 move.l d0,d1 sub.l #EPT_String-1,d1 blo.s .FreeNextStr lea EPT_String(a4),a3 lea StringTemp(pc),a2 .Copy: move.b (a3)+,(a2)+ dbf d1,.Copy *----------------- Argumentenstrukturen freigeben ---------------* *- Achtung: Es können immer mehrere Argumentstrukturen gesendet -* *- werden. Immer alle freigeben !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -* .FreeNextStr: move.l a4,a1 move.l EPT_StringSize(a1),d0 move.l (a4),a4 move.l 4.w,a6 jsr _LVOFreeMem(a6) moveq #0,d0 cmp.l a4,d0 bne.s .FreeNextStr *--- Ausschrift im TestProgramm "Playing ..." ---* lea StringTemp(pc),a1 ;kann verdammt lang bsr ShowStatus ;sein, Aufpassen !!!! bra.s .DelMsgPort *-- Ausschrift im TestProgramm "Keine Antwort" --* .NotAnswered: lea Stat_NoAnswer(pc),a1 bsr ShowStatus .DelMsgPort: move.l TP_Port(pc),d0 beq.s .NoPort move.l d0,a0 move.l 4.w,a6 jsr _LVODeleteMsgPort(a6) .NoPort: clr.l TP_Port rts .NoEagleplayer: lea Stat_NoEagleplayer(pc),a1 bra ShowStatus *-- Anderen Argumentstrukturen freigeben --* .OutOfMem: move.l MyMessage+UM_ArgString(pc),a4 .FreeStruct: move.l EPT_String(a4),d0 move.l a4,a1 move.l (a4),a4 move.l 4.w,a6 jsr _LVOFreeMem(a6) moveq #0,d0 cmp.l d0,a4 bne.s .FreeStruct lea Stat_OutOfMemory(pc),a1 bsr ShowStatus rts *----------- Unterprogramm zum printen von Texten ----------* ShowStatus: rts *--------------------------- Variablenvereinbarungen -----------------------* Stat_OutOfMemory:dc.b "Out of Memory !",0 Stat_NoEagleplayer:dc.b "No Eagleplayer found !",0 Stat_NoAnswer: dc.b "Keine Antwort vom Eagleplayer !",0 StringTemp: ds.b 100 EP_PortName: dc.b "EAGLEPLAYERPORT",0 ;Name des Eagleplayerportes PlayMem.MSG: dc.b "EP_PlayMem",0 even MyMessage: ds.b UM_SizeOf ;Messagemem My_Filename: dc.b "MDAT.NoName",0 ;Prefix sollte angegeben sein, ;um mögliches Playerloading ;when needed zu unterstützen EP_Port: dc.l 0 ;PortAdr des EP TP_Port: dc.l 0 ;PortAdr des TP *------- Dies ist nur ein Hilfspuffer zum Initialisieren der UM_Message ------* *------------ Er muß dann entsprechend vorher gefüllt werden -----------------* DatenPufferAnz: dc.l 2 ;Anzahl der Files DatenPuffer: dc.l Data1 ;Adr 1 File dc.l Data1Size ;Size 1 File dc.l Data2 ;Adr 2 File dc.l Data2Size ;Size 2 File *------------------------------- Testmodule laden --------------------------* *-- Kann auch im FastMem liegen, weil der Eagleplayer das Module kopiert. --* *---------------------------------------------------------------------------* incdir "xModules:TFMX/" ;entpackt laden !!! Data1: incbin "MDAT.Turrican-1" Data1Size = *-Data1 Data2: incbin "SMPL.Turrican-1" Data2Size = *-Data2 @EndNode @Node "Die PlayerBatch-Datei" 4.4.1 Die PlayerBatch-Datei ----------------------------- Die PlayerBatchDatei ist eine StapelDatei, die benötigt wird, wenn man die "Playerloading when needed"-Funktion nutzen will. Das bedeutet, der benötigte Player wird erst geladen, wenn er benötigt wird. In dieser Datei wird die Namenkennung sowie der Pfad eines jeden Players festgelegt. Beispiel: FC.*|FC13.* ="DH0:Eagleplayers/FC 1.3" *.sdata ="DH0:Eagleplayers/MusicMaker8" MDAT.* ="DH0:Eagleplayers/TFMX 1.5" MDAT.* ="DH0:Eagleplayers/TFMX Pro" MDAT.* ="DH0:Eagleplayers/TFMX 7V" Es sind, wie man sieht, mehrere Kennungen möglich! Weiterhin muß erwähnt werden, daß wenn Eject Players ausgeschaltet ist, jeder Player nur ein mal eingeladen wird, egal ob er noch in der Liste ist oder nicht. Es ist auch möglich, verschiedene Player gleichzeitig über eine Kennung zu laden, wie es hier bei TFMX demonstriert wird. Eine komplette Eagleplayer-BatchDatei liegt dem Originalpaket bei. @EndNode @Node "Die UserprogrammBatch-Datei" 4.4.2 Die UserprogrammBatch-Datei ----------------------------------- Die UserprogrammBatchDatei ist eine StapelDatei, die benötigt wird, wenn man die "Userprogrammloading when needed"-Funktion nutzen will. Das bedeutet, das benötigte Userprogramm wird erst geladen, wenn es benötigt wird. In dieser Datei wird die Namenkennung sowie der Pfad eines jeden Userprogramms festgelegt. Beispiel: "Analyze.small" ="DH0:EP-Userprograms/Analyze.small" "** Time **" ="DH0:EP-Userprograms/Time" Beachten Sie bitte, daß der Pfadname unbedingt in Gänsefüßchen stehen muß. Die komplette Userprogramm-BatchDatei liegt dem Originalpaket bei. @EndNode @Node "Fehlermeldungen" 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. 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 | | | @EndNode @Node "Fehler des Programms" 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. Alte Versionen hatten Probleme mit RTPatch. Genauere Fehlerbeschreibungen alter Versionen erhalten Sie in der History.Dok. Der Eagleplayer stürzt ab, wenn man mit VZBE arbeitet, von der VirusZ-Package. Allerdings hängen sich auch andere Programme auf, so daß es nicht unsere Schuld sein sollte. Nach Meinung eines Users soll der EP Probleme mit NoClick haben. Konnte bisher noch nicht nachvollzogen werden ! @EndNode @Node "Problemecke" 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. In der Players.Dok wird auf besonders gefährliche Playroutinen am Ende hin- gewiesen. 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 Prozedur kann mitunter ein oder mehrere Sekunden dauern. Sollte aus irgeneinem Grund ein UserProgramm hängen bleiben, bleibt der ganze Player hängen ! Während der Zeit des Message-Handelns wird die Priorität auf 0 gesetzt. Daher wird dies Problem etwas abgerundet. Weiterhin ist es nicht auszuschließen, daß einige externe/interne Player al- lergisch auf verschiedene Rechnerkonfigurationen reagieren. Beispiel dafür sind TFMX-7V, Hippel, Hippel 7V, 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 !!! Die Userprogramme brauchen verdammt viel Zeit, wenn sie alle aktiv sind. Einige CPU-Anzeiger zeigen aber eine viel zu hohe CPU-Belastung an, welche dann immer auf den Eagleplayer zurückgeschoben wird. Ein solcher Kanditat ist z.B. der DOPUS. Er zeigt totalen Mist an. Wenn alle Userprogramme in- aktiv sind, wird so gut wie gar keine Zeit verbraucht, außer beim Scrollen. Sonst ist der Player ganz normal im Wait-Status. Nachprüfen kann man dieses Phenomen mit dem Perfmon oder besser noch mit XOper ! @EndNode @Node "Einleitung zu den externer Playern" 6.1 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" Link "Die Besonderheiten und Neuerungen des Eagleplayers"} 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. @EndNode @Node "Das externe Player Konzept" 6.1.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'" Link "include:misc/deliplayer.i/Main" 115} erzeugt. Es gibt zwei Arten von externen Playern: normale Player und Custom Module. @EndNode @Node "Schematischer Aufbau von externen Playern" 6.1.2 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 @EndNode @Node "Schematischer Aufbau von Custom Modulen" 6.1.3 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 @EndNode @Node "Anpassung von Playern" 6.2 Anpassung von Playern -------------------------- Es ist relativ einfach, eine Replayroutine an den EaglePlayer anzupassen. Alles was Sie tun müssen, ist ein wenig Interfacecode zu schreiben. Dies ist aber halb so wild, denn der EaglePlayer stellt ihnen viele hilf- reiche 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. @EndNode @Node "Playerheader" 6.2.1 Playerheader -------------------- Das @{"PLAYERHEADER" LINK "Include:misc/deliplayer.i/MAIN" 115} 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" LINK "Include:misc/deliplayer.i/MAIN" 167} & @{"'Misc/Eagleplayer.i'" LINK "Include:misc/eagleplayer.i/MAIN" 585}). Da DeliTracker/Eagleplayer vor Aufruf einer Playerroutine (außer bei DTP_Interrupt) alle Register sichert, dürfen diese verändert werden. @{"PLAYERHEADER" LINK "Include:misc/deliplayer.i/MAIN" 115} Tagarray Pointer auf ein Tag Array, das mit TAG_DONE abgeschlossen sein muß. Tags, bei denen Ti_Data NULL ist, werden ignoriert. @EndNode @Node "Modulerkennung" 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. @EndNode @Node "Interrupts" 6.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! @EndNode @Node "Bedeutung der Tags" 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. @EndNode @Node "DeliTracker support Funktionen" 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. @EndNode @Node "Tips zur Anpassung" 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. 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 zugewiesenen Speicher zu [ ] werden korrekte Fehlermeldungen zurückgegeben [ ] Werden überall mögliche Enforcer-Hits abgefangen ? [ ] Arbeitet die Checkroutine bei fremdem Module sicher ? Enforcergefahr !!! [ ] Wird bei GetInfos nur die Adr der Tagliste übergeben ? 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 @EndNode @Node "Die Besonderheiten und Neuerungen des Eagleplayers" 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 Zu den besonderen Neuerungen gehören vor allem die neuen @{"Eagleplayer-Tags" Link "Die neuen Tags"}, die @{"ModuleInfo-Funktion" Link "ModuleInfo"}, @{"Analyzerunterstützung" Link "Analyzeransteuerung"} sowie @{"neuen Globals" Link "Die neuen Eagleplayer-Globals"}. @EndNode @Node "Die neuen Tags" 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" LINK "Include:misc/eagleplayer.i/Main" 68}: 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. @EndNode @Node "Moduleinfo" 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" Link "include:misc/eagleplayer.i/Main" 105} 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. Ab Eagleplayer V1.50 gibt es einen Tag, der gleich auf die Tagliste der ModuleInfotags zeigt. 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. MI_Voices (LONG) - Anzahl der benutzen Stimmen bei diesem Soundformat. MI_MaxVoices (LONG) - Anzahl der maximal möglichen Stimmen bei diesem Soundformat. @EndNode @Node "Analyzeransteuerung" 6.6.3 Analyzeransteuerung --------------------------- Die Analyzeransteuerung erfolgt mit Hilfe der @{"UPS_USER - Struktur" LINK "include:misc/Eagleplayer.i/Main" 188} , die im folgenden erläutert wird. (Übergabe dieser siehe Kapitel 6.6.1 "EP_Structinit) Ab Eagleplayer V1.50 kann eine interne UPS_Struktur verwendet werden. Die Adresse steht in EPG_UPS_Structure. Sie ist vorinitialisiert und wird bei jeder Volume/Balance/Voice-Änderung automatisch gefüllt (UPS_DMACon). Dabei muß unbedingt das Flag EPF_InternalUPSStructure beim Tag EP_Flags gesetzt werden. Sie muß und darf nicht freigegeben werden. Achtung. Es kann passieren, daß die Struktur in den nächsten Versionen des Eagleplayers geändert wird, um auch SoundKarten und A5000 zu unterstützen! 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 UPS_Enabled - gibt an, ob Zugriff auf die Struktur erlaubt ist, 0 heißt ja, eine Angabe <>0 bedeutet, daß die Struktur zur Auswertung ge- sperrt ist. Die restlichen Einträge sind für zukünftige Versionen des Eagleplayers vorgesehen. ------------------------------- Achtung --------------------------------------- Für die derzeitigen Userprogramme wird erwartet, daß mindestens UPSF_Adr, UPSF_Len,UPSF_Per, UPSF_Dmacon und UPSF_Vol gesetzt und unterstützt werden. Werden noch die anderen Parameter (UPS_Voice?Adr, UPS_Voice?Len, UPS_Voice?Per, UPS_Voice?Vol) gesetzt und UPS_Enabled nach verlassen der Playroutine "0" ist. ------------------------------------------------------------------------------- @EndNode @Node "Die neuen Eagleplayer-Globals" 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 = Länge des Speicherbereiches Arg3 = Pathadresse Arg4 = SaveMode (-1=Eagleplayereinstellung 0=nicht gepackt 1=PP-Crunched 2=LH-Crunched 3=XPK-Crunched Arg5 = Flags Bit 0=0 Anzeige im Playerwindow 0=ja Bit 1=1 Zieldatei immer deprotecten Bit 2=1 Safe Save ArgN = 5 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 ----- EPG_Hexdez ----- Convertiert die Hexzahl in d0 in eine dezimale Ascii- Darstellung. Diese Funktion kann auch von Userprogrammen ohne Probleme genutzt werden. Input: d0 = Hexzahl d1 = Flags Bit 0=1 Nullen verstecken Bit 1=1 Vorzeichen benutzen a0 = OutPutpuffer OutPut: - ----- EPG_TypeText ----- Es wird ein Text ins Mainwindow geprintet. Diese Funktion kann auch von Userprogrammen genutzt werden. Input: A0 = Adresse ds Testes OutPut: - ----- EPG_ModuleChange ----- Ein Module wird nach den Vorgaben umgebaut. Diese Funktion wird benutzt um Module mit Playroutine analyzerfähig und systemkon- form zu machen. Vor- und nach Ablaufen der Hauptfunktion wird der Cache, falls vorhanden, gelöscht. Input: Arg1 = Startadresse der umzubauenden Daten Arg2 = max Länge Arg3 = Umbautabelle Arg4 = 1.b=1 Mehrmals eine Routine umbauen 2.b=1 2. Umbauroutine benutzen 3.b=1 keine Suche nach Werten 4.b=1 Keine Suche nach Jmp Arg5 = 1.w Kennbyte für Jump 2.w Kennbyte für Wert ArgN = 5 OutPut: Arg1 = Fehlernummer oder Null Arg2 = Anzahl der Umbauten ----- EPG_ModuleRestore ----- Ein Module muß vor dem Saven in den Originalzustand zurück gesetzt werden. Dies erledigt die Funktion ModuleRestore. Vor- und nach Ablaufen der Hauptfunktion wird der Cache, falls vorhanden, gelöscht. Input: Arg1 = Startadresse der umzubauenden Daten Arg2 = max Länge Arg3 = Umbautabelle Arg4 = 1.b=1 Mehrmals eine Routine umbauen 2.b=1 2. Umbauroutine benutzen 3.b=1 keine Suche nach Werten 4.b=1 Keine Suche nach Jmp Arg5 = 1.w Kennbyte für Jump 2.w Kennbyte für Wert ArgN = 5 OutPut: Arg1 = Fehlernummer oder Null Arg2 = Anzahl der Umbauten Ab der Eagleplayerversion 1.50 gibt es einen Eintrag in den Globals namens "EPG_NewJumpTab". Dies ist ein Pointer auf noch mehr Unterprogramme die genutzt werden können. Der große Unterschied besteht darin, das diese direct angesprungen werden können, also wie eine Library ! Diese Funktion ist zwar implementiert, allerdings darf sie noch nicht genutzt werden. 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. @EndNode @Node "Einführung und Beschreibung des Arexx-Portes" 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" Link "Arexx-Kommandoübersicht"} zur Verfügung, durch die der Player im Prinzip fernbedienbar wird. Eine @{"Anpassung an DOPUS" Link "Anpassung an Directory Opus"} ist daher überhaupt kein Problem. @EndNode @Node "Arexx-Kommandoübersicht" 7.2 Arexx-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 der Replayer nicht erlaubt, 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 ------------------------------------------------------------------------------- Iconify Der Eagleplayer wird in den Iconify-Modus versetzt oder verläßt ihn. PubScreen Öffnet den Eagleplayer auf dem angegebenen PublicScreen. AboutEP Gibt einen String über den Eagleplayer aus. ScrollText Der Text scrolt in's StatusWindow. HelpMode Der HelpModus wird an/ab geschaltet. 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. AddUserPrg [Filename] Es wird das angegebene Userprogramm geladen. Wurde kein Filename übergeben, wird ein Filerequester geöffnet. AddUserDir [Dirname] Es wird das komplette Dir geladen. Wurde kein Dirname übergeben, wird ein Filerequester geöffnet. HelpFile es wird ein Helpfile geladen. Font Lädt einen neuen Font für den Eagle- player. 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. OpenMainWindow Es wird das Hauptwindow geöffnet. OpenPlWindow Es wird das PlayerWindow geöffnet. CloseMainWindow Das Mainwindow wird geschlossen. ClosePlWindow Das PlayerWindow wird geschlossen. AddPlayer [Filename] Es wird der angegebene Replayer geladen. Wurde kein Filename übergeben, wird ein Filerequester geöffnet. AddPlDir [Dirname] Es wird das angegebene Verzeichnis mit Replayern geladen. Wurde kein Dirname übergeben, wird ein Filerequester geöffnet. DeleteAll Löscht alle externen Replayer. DeletePlayer Es wird der angegebene externe Player gelöscht. Enable Der angegebene Player wird erlaubt. Disable Der angegebene Player wird verboten LoadPlConfig Die Config des Players wird geladen. SavePlConfig Die Config des Players wird gespeichert. PlConfig Die Config des Pllayers wird aufgerufen. DefaultSpeed Der Speed wird auf den normalen Speed gesetzt. SlowerSpeed Der Speed wird um eine Stufe langsamer. FasterSpeed Der Speed wird um eine Stufe schneller. FadeOut FadeOut wird an- bzw. ausgeschaltet. FadeIn FadeIn wird an- bzw. ausgeschaltet. Filter Filter wird an- bzw. ausgeschaltet. FlashPointer Flashpointer wird an- bzw. ausgeschaltet. MasterVolume Mastervolume wird an- bzw. ausgeschaltet. Quickstart Quickstart wird an-bzw. ausgeschaltet. ScrollInfos ScrollInfos wird an- bzw. ausgeschaltet. UseSongName Use Songname wird an- bzw. ausgeschaltet. UsePrefix Use Prefix wird an- bzw. ausgeschaltet. SaveT SaveT wird an- bzw. ausgeschaltet. QuitSurface Quit Surface wird an- bzw. ausgeschaltet. QuitEagle Quit Eagle wird an- bzw. ausgeschaltet. AutoPassword Auto Passwort wird an- bzw. ausgeschaltet. EjectPlayers Eject Players wird an- bzw. ausgeschaltet. UsePlBatch PlayerBatch wird an- bzw. ausgeschaltet. LoadPlBatch [Filename] Es wird eine PlayerBatch-Datei geladen. Wenn kein Filename angegeben wird, wird ein Filerequester geöffnet. EjectUserPrg Eject Userprograms wird an- bzw. ausgeschaltet. UseUPrgBatch UserprogrammBatch wird an- bzw. ausgeschaltet. LoadUPrgBatch [Filename] Es wird eine UserprogrammBatch-Datei geladen. Wenn kein Filename angegeben wird, wird ein Filerequester geöffnet. LoadDir LoadDir wird an- bzw. ausgeschaltet. EPDir EPDir wird an- bzw. ausgeschaltet. AutoDir AutoDir wird an- bzw. ausgeschaltet. Notify Notify wird an- bzw. ausgeschaltet. ScanAlways Scan Always wird an- bzw. ausgeschaltet. ShowDirNames ShowDirNames wird an- bzw. ausgeschaltet. HideAll HideAll wird an- bzw. ausgeschaltet. CheckDifference Die Checkdifferenz wird neu gesetzt. Nicht eingebaut !!! EntriesPerMenu Die Einträge für ein Menü werden neu gesetzt. Menumem Der interne Dirmemspeicher wird geändert. NoNewModule Der ProgrammMode wird neu gesetzt PrevModule Der ProgrammMode wird neu gesetzt NextModule Der ProgrammMode wird neu gesetzt RandomModule Der ProgrammMode wird neu gesetzt RandomSong Randomsong wird an- bzw. ausgeschaltet. LoadBefore Load Before wird an- bzw. ausgeschaltet. AutoSubSong AutoSubSong wird an- bzw. ausgeschaltet. LoadAlways Load Always wird an- bzw. ausgeschaltet. Songend Songend wird an- bzw. ausgeschaltet. TimeOut