# Soundlisten-Datei # ################# # # Hinweis für MIDI-Wiedergabe # =========================== # # Java-SE unterstützt MIDI-Audio platonisch, veraltet und sehr nutzerunfreundlich. # Der Nutzer muss nach jeder Installation von Java-SE (also auch nach jedem Update) # die Soundbank für MIDI erneut Java bereitstellen: Manuell. # Ausserdem muss der Nutzer sich diese Soundbankdatei selbst per Download beschaffen, # wenn er die maximale Qualität nutzen will. Diese Datei ändert aber sich seit vielen # Jahren nicht mehr. # # Das Applet kann mit einer Soundbank versehen sein, die mit Applet-Start dann auch # geladen wird, da das Applet internen MIDI-Sound nutzt (Soundbank-Datei zum # Applet hat die maximale Soundqualität und muss im CLASS-Pfad des Applets liegen). # # Es ist besser, zusätzlich Java die Soundbank bereitzustellen, die dann bereits von der # Java-Laufzeitumgebung geladen wird. # # Die durch den Nutzer per Download beschaffte Soundbank mit maximaler Qualität muss # # exakt unter dem Namen soundbank.gm # # an folgende Orte manuell kopiert werden (und zwar nach JEDEM Java-Update) # # /jre/lib/audio # # Beispiel: c:\Programme\Java\jre6\lib\audio\soundbank.gm # # und /sdk_dir/jre/lib/audio # # Beispiel: c:\Programme\Java\jdk1.6.0_23\jre\lib\audio\soundbank.gm # # # Hinweis: c:\Programme\Java\jre6\ entsteht, wenn die Run-Time von Java installiert wird, # also auch bei der Installation des SDK. # # Hinweis: c:\Programme\Java\jdk1.6.0_23\ entsteht, wenn das SDK von Java installiert wird # (immer die Runtime mitinstallieren lassen: siehe oben). # Lage der Soundlistendatei und der Sounds # ======================================== # # Die Soundlisten-Datei muss im Codebase liegen, also dort, wo die Classendateien liegen # bei Eclipse ist das projektordner\bin\ # # # Alle in der Soundliste angegebenen Sounds müssen im selben Verzeichnis wie die # Soundlistendatei oder in einem Unterverzeichnis zur Soundlistendatei liegen. # # z.B. projektordner\bin\ dort liegen Class-Dateien und auch die Soundlistendatei # # projektordner\bin\t\ dort liegen die Sounddateien # # in der Sounddatei angeben /t/mp3pl4p.mid # oder \t\mp3pl4p.mid # # nicht jedoch projektordner\bin\t\ dort liegen die Sounddateien # # ../t/mp3pl4p.mid # ..\t\mp3pl4p.mid # # # Syntax-Beschreibung # =================== # # Kommentarzeile beginnt mit # als 1. Zeichen # 1 Datenzeile besteht aus folgenden Feldern, die durch mindestens 1 Leerzeichen getrennt sind # Dateiname ohne Sonderzeichen, ohne Leerzeichen, keine Escapezeichen wie \n \u etc. # Pfandangabe siehe oben. # Mindestangabe als Pflichtangabe. # Es gibt keinen Standard. # Ist der angegebene Wert falsch, wird die Zeile komplett ignoriert. # Soundtyp Es muss Dateiname zuvor angegeben worden sein. # zulässige Werte sind # 0 für mp3 mono stereo # 1 für midi Typ 0 und 1, mono oder stereo # 2 für wave, au, mono oder stereo, max. 48 kHz, 16 Bit # Mindestangabe als Pflichtangabe. # Es gibt keinen Standard. # Ist der angegebene Wert falsch, wird die Zeile komplett ignoriert. # Sollte der Soundtyp nicht exakt dem Soundinhalt entsprechen, wird die # Datei als nicht existent erkannt und durch einen internen Sound ersetzt. # Im Kommentar des Sounds wird dann automatisch darauf hingewiesen. # Das Applet prüft Daten nicht nach dem Suffix des Dateinamen z.B. nicht nach "mp3". # Dateinamen müssen nicht den Soundtyp im Suffix enthalten. z.B. ist für einen # mp3-Sound die Dateinamen test.em_pe_drei oder test.wav gültig. # Sounddauer kann angegeben werden (optional) # wenn anzugeben, dass muss zuvor der Soundtyp angegeben worden sein. # >= 0 in Millisekunden, # wenn < 0 so gilt # Sounddauer ist der Absolutbetrag (also > 0) # Mit Ende der Wiedergabe des Sounds wird das Applet kommentarlos beendet. # Es ist möglich, dass sich der Player nach Ende der Wiedergabe genau eines zufällig ausgewählten Songs # schliesst, wobei zusätzlich der gesamte Player keine GUI hat, also der gesamte Player unsichtbar ist: # Dazu muss eingereichtet werden: # 1. müssen ALLE Sounddauerangaben negativ sein # und 2. in DUI-Conf-Datei muss ButtonCreateMinimal auf 123 gesetzt sein. # und 3. Autostart des Players wird automatisch erlaubt. # Eclipse hat eine Besonderheit: # Ist das Applet-Fenster der GUI nicht sichtbar, wird das HTML-Dokument zum Applet NICHT geschlossen ! # Ist das Applet-Fenster der GUI sichtbar, wird das HTML-Dokument zum Applet ebenfalls geschlossen ! # Eclipse startet den appletviewer von Java und der erzeugt das Applet-Fenster der HTML-Seite, die Eclipse # automatisch generiert und an den appletviewer übergibt. Die HTML-Seite besitzt das Applet-Tag # mit der class-Datei, die eclipse automatisch per Run erzeugt (mit allen class des Projektes.) # Standard ist 0 # Sollte die Sounddauer nicht der realen Dauer entsprechen, dann wird der Sound # nach realer Dauer enden. Allerdings wird im Player die Abspielposition in Prozent # wegen falscher Soundlänge als 100% angezeigt (Position in Millisekunden ist korrekt). # Anzahl der abzuspielenden Frames # kann angegeben werden (optional) # wenn anzugeben, dass muss zuvor die Sounddauer angegeben worden sein. # >=0 der ab Soundanfang zu spielenden Frames, wobei 0 für gesamte Datei # bei MIDI sind das die Millisekunden ab Soundanfang # bei Wave aber ohne Wirkung # wenn < 0 so Standard verwendet # Standard ist 0 also gesamten Sound # Wartezeit vor Start jeder Wiedergabe # kann angegeben werden (optional) # wenn anzugeben, dass muss zuvor die Anzahl der Frames angegeben worden sein. # >=0 in Millisekunden VOR Start des nächsten Sounds # wenn < 0 so Standard verwendet # Standard ist 3000 also 3 Sekunden # Beim 1. Start eines Sounds nach Start des Applets wird diese Sounddauer # für den betroffenen Sound applettintern ignoriert werden: Der 1. Sound # startet ohne Pause zuvor. # Kommentar kann angegeben werden (optional), kein Standard # wenn anzugeben, dass muss zuvor die Wartezeit angegeben worden sein. # stellt alle Angaben hinter der Wartezeit dar also nichts oder beliebiger Text # auch mit deutschen Umlauten und Leerzeichen # aber keine Escapezeichen wie \n \u etc. # Leerzeichen am Ende der Zeile werden ignoriert # wird als Kommentar zum Sound angezeigt wird # # Die Reihenfolge obiger Angaben ist fest. Lücken in der Reihenfolge der Angaben sind nicht erlaubt. # # Leerzeile wird ignoriert. Eine Leerzeile enthält außer dem Zeilenumbruch nichts weiter. # Kommentarzeile wird ignoriert. Eine Kommentarzeile enthält im 1. Zeichen exakt das Nummernkreuz # # und kann danach weitere Zeichen haben (auch Zeilenumbruch). # # Mindestangaben als Pflichtangaben sind # Dateiname # Soundtyp # die keinen Standardwert haben. # Sollte eine der Mindestangaben wertmäßig falsch angegeben worden sein, # wird für die die gesamte Zeile ignoriert (als wäre die Zeile auskommentiert). # # optionale Angaben sind # Sounddauer # Anzahl Frames # Wartezeit Pause # Kommentar Pause # aber in fester Reihenfolge. Lücken sind nicht erlaubt. # Sollte eine der optionale Angaben wertmäßig falsch angegeben worden sein, # wird für auch für alle noch weiter möglichen Angaben der jeweilige Standardwert # verwendet, egal was in der Zeile angegeben wurde. (Kommentar hat keinen Standardwert). # Grund: Eine falsche Angabe könnte z.B. auch Auslassung einer Angabe bedeuten, # aber Lücken sind nicht erlaubt. # Um gültige Angaben zu erhalten, wird Standard verwendet und somit muss die # Zeile nicht ignoriert werden. # # Sollte ein Sound aus der Liste physisch nicht existieren, dann aktiviert das Applet # anstelle des nicht existierenden einen internen Sound. # Im Kommentar des Sounds wird dann automatisch darauf hingewiesen. # # Sollte der Soundtyp nicht exakt dem Soundinhalt entsprechen, wird die # Datei als nicht existent erkannt und durch einen internen Sound ersetzt. # Im Kommentar des Sounds wird dann automatisch darauf hingewiesen. # # Das Applet prüft Daten nicht nach dem Suffix des Dateinamen z.B. nicht nach "mp3". # Dateinamen müssen nicht den Soundtyp im Suffix enthalten. z.B. ist für einen # mp3-Sound die Dateinamen test.em_pe_drei oder test.wav gültig. # # Java selbst lehnt dabei nicht passende Daten aus der Sounddatei ab. Fremde Daten # als Trojaner einzuschmuggeln, ist nicht möglich, denn in Java sind die Routinen # der Datenverarbeitung für Sound (Soundtyp 2 und 3) vordefiniert. # Ausnahme: Die für den Soundtyp 0 verwendete mp3-Bibliothek des Anbieters # http://www.javazoom.net/javalayer/javalayer.html könnte ev. unsicher sein. # # Sollte die Sounddauer nicht der realen Dauer entsprechen, dann wird der Sound # nach realer Dauer enden. Allerdings wird die Abspielposition in Prozent # wegen falscher Soundlänge als 100% angezeigt (Position in Millisekunden ist korrekt). # maximal 1000 Sätze (Textzeilen) in dieser Datei (überschüssige werden ignoriert). # #test.em_pe_drei 0 66000 0 3000 relaxe ... mp3pl1b.mp3 # --------------------- -------------------- ................... .......................... .................... ~~~~~~~~~~~~~~~~~~~~~~ # Dateiname ist Pflicht Soundtyp ist Pflicht Sounddauer optional Anzahl der Frames optional Dauer Pause optional Kommentar optional # optionally comment # # Beispiele # test.mp3 4 # Diese Zeile wird komplett ignoriert, da der Soundtyp 4 ungültig ist. # test.mp3 -4 # Diese Zeile wird komplett ignoriert, da der Soundtyp 4 ungültig ist. # test.mp3 2 # Es wird erwartet, dass test.mp3 Daten einer WAVE enthält. # # test.mp3 1 # Es wird erwartet, dass test.mp3 Daten einer MIDI enthält. # test.mp3 0 # Es wird erwartet, dass test.mp3 Daten einer MP3 enthält. # test.mp3 2 -60 0 # 60 Millisekunden / Milliseconds # Alle Frames abspielen. # Das Applet wird mit Ende der Wiedergabe kommentarlos beendet. # test.mp3 2 60 -1 # 60 Millisekunden / Milliseconds # Alle Frames abspielen. # test.mp3 2 60 0 3000 # 60 Millisekunden / Milliseconds # Alle Frames abspielen. # Pro Song 3 Sekunden warten. # test.mp3 2 -60 0 -5000 # 60 Millisekunden / Milliseconds # Alle Frames abspielen. # Pro Song 3 Sekunden warten. # Das Applet wird mit Ende der Wiedergabe kommentarlos beendet. # test.mp3 2 60 0 3000 kommentar-text # 60 Millisekunden / Milliseconds # Alle Frames abspielen. # Pro Song 3 Sekunden warten. # Kommentar vorhanden. # test.mp3 2 -60 0 -5000 kommentar-text # 60 Millisekunden / Milliseconds # Alle Frames abspielen. # Pro Song 3 Sekunden warten. # Das Applet wird mit Ende der Wiedergabe kommentarlos beendet. # Kommentar vorhanden. # test.mp3 2 kommentar-text # Fehlerhafte Zeile. # test.mp3 2000 kommentar-text # Fehlerhafte Zeile. # Wenn alle Sounddauer sind negativ sind, endet das Applet nach # dem 1. abgespielten Song, der auch zufällig gewählt worden sein kann # und oder der automatisch bzw. per Play-Tasten-Klick startet. # Sollte mindestens 1 Song eine positive Dauer haben, dann endet das Applet erst, # wenn ein Song mit negativer Dauer aktiviert wurde. # Achtung: Da Applet wird immer mit Zufallswahl des 1. Song aktiviert ! # Warnung: Das Applet arbeitet bezüglich GUI und Sound mit parallel arbeitenden Threads, # die getrennte Ressourcen und damit Laufzeitbedarf auch beim Deinstallieren # des Applets haben. Leider sind Java-SE und eventuell auch MS Windows # nicht echtzeitfähig, so dass nachfolgendes Problem auftritt: # Soll exakt nur 1 Sound abgespielt werden und direkt danach das Applet enden, # darf die Soundliste nur genau 1 Sound erhalten. # oder darf die Soundliste mehr als 1 Sound erhalten, aber # die Pausen zwischen den Titeln müssen groß genug sein, # damit Java und Windows Zeit haben, um das Applet auch # im Soundteil beenden können. # Sollte die Pause zu gering sein, dann endet zwar die GUI # des Applets innerhalb der Pause, aber es kann der nächste # Sound bereits hörbar werden (falls automatisch der nächste # Sound starten darf), der genau dann mittendrin abgebrochen wird, # wenn der Soundteil des Applets gerade beendet wurde und dabei # mehr Zeit benötigt, als die Pause umfasst. # Man muss die Pause austesten. # Wird das Schließkreuz des Fensters der Player-GUI (also das vom Betriebssystem # wie Windows bereitgestellte Kreuz) verwendet, sind Java und HTML asynchron: # Dann schließt sich die GUI des Applets, aber der Soundteil bleibt aktiv und # endet erst, wenn das Fenster des HTML-Dokumentes geschlossen wird, # oder Java begonnen hat, das Applet zu entfernen. # NUR die dynamische Verwaltung des Applets kann das Sound-GUI-Problem managen. # Die statische Variante des Applets sollte man nicht nutzen! # Hinweis: Das Applet wird immer mit Zufallswahl des 1. Songs aktiviert ! # Die Steuerung der Buttons der Player wie Random oder Play etc. erfolgen # per Konfigurationsdatei der GUI. mp3pl4b.mp3 0 66000 0 3000 1 relaxe ... mp3pl4b.mp3 mp3pl4a.mid 1 74000 0 3000 2 ... mp3pl4a.mid mp3pl4c.wav 2 11000 0 3000 3 Intro mp3pl4c.wav mp3pl4d.wav 2 56000 0 3000 4 Dialog mp3pl4d.wav mp3pl4e.mid 1 138000 0 3000 5 Bach Gitarre mp3pl4e.mid mp3pl4f.mid 1 100000 0 3000 6 Bach Orgel mp3pl4f.mid mp3pl4g.mp3 0 204000 0 3000 7 Good Time mp3pl4g.mp3 mp3pl4h.mp3 0 98000 0 3000 8 Intermezzo mp3pl4h.mp3 mp3pl4i.mp3 0 46000 0 3000 9 Simpsons 1 mp3pl4i.mp3 mp3pl4j.mp3 0 181000 0 3000 10 Longest Journey mp3pl4j.mp3 mp3pl4k.mp3 0 118000 0 3000 11 Wonderful World mp3pl4k.mp3 mp3pl4l.mp3 0 143000 0 3000 12 Here and there and everywhere mp3pl4l.mp3 mp3pl4m.mp3 0 164000 0 3000 13 Is This The World mp3pl4m.mp3 mp3pl4n.mp3 0 188000 0 3000 14 Highway to Hell mp3pl4n.mp3 mp3pl4o.mp3 0 303000 0 3000 15 orchestral mp3pl4o.mp3 mp3pl4p.mid 1 100000 0 3000 16 Simpsons 2 mp3pl4p.mid