---------------------------------------------------------------- - Play16 Version 1.10 - Ein flexibler Soundabspieler für Amiga - ---------------------------------------------------------------- Readme.1st ---------- This is a MINOR update. There's not much new... Kurzübersicht ------------- - FREEWARE! Keine Betaversion, keine Nervrequester und kein Ablaufdatum! - Online Hilfe - erkennt und spielt automatisch verschiedene Soundformate, bis zu 16 Bit, 56 kHz, stereo - volle Workbench-Unterstützung, jedoch kein GUI - immer korrekte Wiedergabegeschwindigkeit, auch bei Sounds >28 kHz - Echtzeitwiedergabe von Festplatte, optimierte Assembler-Routinen - 14 Bit Ausgabe möglich (weniger Rauschen, aber schlechter als 16 Bit) - Unterstützt AHI und Soundkarten (Prelude wärmstens empfohlen!) - automatische oder manuelle Filter-Kontrolle - spielt Mono-Sounds auf BEIDEN Kanälen, nicht nur auf dem linken - spielt (und wiederholt) Files, die größer als der Speicher sind - Preload-Funktion für synchronen Wiedergabestart auf Tastendruck - schnelle µ-Law/A-Law Dekodierung - Systemfreundliche Audiokanal-Belegung - Ausgabe in ein File ist möglich (Sound-Konvertierung) - unterstützte Filetypen bislang: * Microsoft RIFF-WAVE (.WAV) mono/stereo, 8/16 bit, linear/uLaw/ALaw/ADPCM * Creative Voice File (.VOC) mono/stereo, 8/16 bit, linear * Sun/NeXT Audio (.AU) mono/stereo, 8/16 bit, linear/uLaw * MacroSystem Audio (.MAUD) mono/stereo, 8/16 bit, linear/uLaw * Apple/SGI/Amiga AIFF (.AIFF) mono/stereo, 8/16 bit, linear/uLaw/ALaw * Amiga IFF-8SVX (.IFF) mono/stereo, 8 bit, linear/FibDelta/ExpDelta * RAW Sounddaten mit mindestens einer folgender Voraussetzungen: - 8 bit Vorzeichenbehaftet - 8 bit nicht Vorzeichenbehaftet - 16 bit signed, Intel Format (LSB zuerst) - 16 bit signed, Motorola Format (MSB zuerst) - 14 bit µ-Law - 14 bit A-Law - derzeitig unterstützte Ausgabegeräte: * Amiga (Paula) 8 bit * Amiga (Paula) 14 bit * Amiga (Paula) 14 bit kalibriert (Christian Buchner) * MacroSystem Maestro Pro 16 bit 44.1kHz und 48kHz * IFF-8SVX File Ausgabe 8 bit * AHI audio system 16 bit * Prelude 16 bit ========================== Kapitel 1: Quick Start ========================= Was wird für Play16 benötigt? ----------------------------- Ein Amiga mit mindestens Kickstart/Workbench 2.04. asyncio.library Um die kalibrierte 14Bit-Ausgabe zu verwenden, muß eine gültige CyberSound- Kalibrierungsdatei im ENVARC: vorhanden sein. Wenn eine solche noch nicht erstellt wurde, kann es mit Christians Kalibrierungsprogramm, das sich in diesem Archiv befindet, erzeugt werden. Maestix.library V39 wird für die MPro-Ausgabe benötigt. Das AHI audio system V2 wird für die AHI-Ausgabe benötigt. Wo finde ich die neueste Version? --------------------------------- - AMINET: mus/play - WWW: http://Play16.amiga-software.com ferner empfehle ich, folgende Produkte anzusehen: Prelude: - WWW: http://www.act-net.com/Prelude/ CyberSound: - AMINET: disk/cdrom/14Bit_CDPlayer.lha Maestix: - AMINET: util/libs/Maestix39_00.lha Wie verwende ich es? -------------------- CLI: "Play16 " - das ist alles! Workbench: Nach einem Doppelklick auf das Icon erscheint ein Filerequester. Alle möglichen Optionen werden später erläutert. Wenn keine Option gesetzt ist, werden die Standardwerte angenommen. ================== Kapitel 2: Hintergrund-Informationen =================== Was tut es? ----------- Grundsätzlich ist Play16 in der Lage, unkomprimierte und _einige_ komprimierte Soundfiles mit dem Standard Amiga AudioDevice abzuspielen oder eine wachsende Anzahl externer Geräte anzusteuern. Sollte die dazu benötigte Auflösung oder Wiedergabegeschwindigkeit eines Sample-Files die Möglichkeiten der Abspielhardware überschreiten, wird eine Echtzeit- Anpassung vorgenommen, so daß der Sound immer korrekt wiedergegeben wird. Es können sogar 16 Bit/44.1kHz Sounds über den alten Amiga-Chipsatz (Paula) wiedergegeben werden, vorausgesetzt, alle Elemente des verwendeten Systems kommen mit der hohen Datentransferrate mit. In einem solchen Fall ist ein beschleunigter Amiga eine sinnvolle Sache! Die beiden Audiokanäle einer jeden Seite können miteinander verbunden werden um nach dem Subranging Verfahren eine 14Bit Ausgabe zu ermöglichen. Dies erfordert jedoch ebenfalls eine Menge Rechenzeit. Auf jeden Fall ist ein Amiga 3000-16MHz schnell genug, ein unkomprimiertes Soundfile mit 44.1kHz/14Bit (Productivity Mode!) direkt von der Festplatte abzuspielen. Ich habe nicht vor, Play16 soweit zu erweitern, daß es jedes, aber auch jedes exotische Format, das irgendwo existieren mag, unterstützt. Dennoch versuche ich, soviele verbreitete Formate wie möglich einzubinden. Warum Play16? ------------- Ich konnte seinerzeit kein CLI-Programm zum Abspielen von 16Bit-Aufnahmen finden, also entschied ich mich, selber eines zu schreiben: Play16. Warum kommandozeilen-orientiert - und keine graphische Oberfläche? ------------------------------------------------------------------ Es gibt so viele GUI unterstützende Directory-Utilities - Play16 kann einfach als externer Player eingebunden werden. Die begleitende Dokumentation der Directory-Programme sollte erläutern, wie dies möglich ist. Ein Beispiel wäre: Ein Schalter namens "Jingle" wird angelegt und enthält die Funktion "Play16 PRELOAD". Nachdem dann das gewünschte Soundfile angewählt und der Schalter "Jingle" angeklickt wurde, kann per Tastendruck die Wiedergabe des Sounds gestartet werden. Das ist besonders brauchbar auf Partys oder beim Nachvertonen von Videos ;-) Wie funktioniert es? -------------------- Das gewöhnliche Amiga Audio Device ist beschränkt auf 8Bit, 28kHz Wiedergabegeschwindigkeit mit DMA. Mit der Einführung des ECS wurde die 28kHz Barriere überwunden, jedoch nur, wenn der aktuelle Displaymodus einer mit doppelter Scanrate war, wie z.B. Productivity. Der Grund hierfür ist die Abhängigkeit von Video- und Audio-DMA. Sollte kein ECS-Chipsatz vorhanden sein oder ist das Umschalten auf Productivity nur zum Anhören eines Sounds unerwünscht, kann Play16 die Wiedergaberate während des Abspielens halbieren. Ein anderer Weg, hohe Wiedergabequalität zu erlangen, ist IRQ. Das funktioniert unabhängig vom Displaymodus. Ich habe, lange bevor ich an Play16 zu schreiben angefangen habe, damit herumexperimentiert, es waren aber immer derart viele "Jitter"-Störungen, daß meine heute verwendete Wiedergabe Methode doch erheblich besser klingt. Um auch lange Sounds wiedergeben zu können, wird die oft verwendete DoubleBuffer-Methode benutzt. Alternativ können auch alle Daten in den Speicher geladen werden, dies ist zum Abspielen kurzer Sounds oder zum Wiedergeben von langsamen Medien wie Floppies oder bei Netzwerken sinnvoll. Die 14Bit Ausgabe wird erreicht, indem ein Kanal auf jeder Seite auf Lautstärke 64, der andere auf Lautstärke 1 gesetzt wird. Der lautere Kanal repräsentiert dann die oberen 8 Bit, während der leisere die unteren 6 Bit wiedergibt. Da das Timing bei dieser Methode sehr kritisch ist, ist es nötig, direkt auf die Hardware zuzugreifen, anstatt das audio.device zu verwenden. Diese Methode mag in zukünftigen Amiga-Modellen nicht mehr möglich sein - sollte es solche jemals geben... :-/ Unglücklicherweise sind die DACs im Amiga nicht linear. Eine spürbare Soundqualitätssteigerung kann daher mit einer Kalibrierung des Subranging Konverters erreicht werden. Dazu muß, mit Christian Buchners CyberSound System, jeder Schritt einzeln eingestellt werden. Play16 kann die erstellten Tabellen von CyberSound einlesen. Die MPro Ausgabe verwendet die maestix.library von Richard Körber. Weitere Details sind im Maestix-Paket auf dem Aminet zu finden. =========================== Kapitel 3: Optionen ============================ Welche Optionen gibt es? ------------------------ Es gibt drei Wege, Optionen an Play16 zu übergeben: CLI: In der Kommandozeile, AmigaOS 2.x Template Workbench: Im Icon, Amiga Workbench Tooltype Einträge Generell: Mit dem Setzen von Enviroment-Variablen. Dies ist noch nicht für alle Funktionen möglich. Die Tooltype Einträge sind identisch mit dem Keywords, die in der Kommandozeile übergeben werden können. Für weitere Informationen über die Verwendung von Keywords oder Tooltypes sei ein Blick in die AmigaOS- Dokumentationen empfohlen. Die Enviroment-Variablen bestehen einfach aus dem entsprechenden Namen und sind in ENV:Play16 abgelegt. Grundlegende Optionen: (Alle Optionen mit (*) erlauben entsprechende ENV-Variablen) HELP/S Zeigt die Online-Hilfe QUIET/S Schaltet alle Textausgaben ab bis auf Fehlermeldungen VERBOSITY/N Gibt den Grad der Informationsmenge an. 0: Nur Banner und Error-Meldungen 1: gibt Informationen über das Soundfile aus 2: Informationen über Programmablauf und den belegten Speicher 3: Debugging Informationen (dürfte wild aussehen :) ) Voreinstellung ist Level 0. FAST/S(*) schaltet NICHT automatisch auf halbe Wiedergaberate herunter, wenn die im Soundfile angegebene Rate 28kHz überschreitet. Diese Option ist sinnvoll, wenn der Amiga im Productivity oder ähnlichen Bildschirmmodi läuft. HIFI/S Seit v1.4 überflüssig, aber aus Kompatiblitätsgründen noch enthalten. Siehe "OUTPUT/K" VOLUME/N Legt die Wiedergabe Lautstärke fest. Dies funktioniert nur bei Paula8, Paula14, Paula14c und AHI Ausgabe. NEU: Die Lautstärke wird jetzt in Prozent angegeben! Mögliche Bereiche sind: Paula8: 0% - 100% Paula14: 0% - 400% (boost) Paula14c: 0% - 400% (boost) AHI: 0% - 100% VORSICHT! Der Versuch, einen bereits voll ausgesteuerten Sound noch zu verstärken führt zu starken Verzerrungen (Clipping). OUTPUT/K(*) Setzt das Ausgabegerät. Mögliche Optionen sind: Paula8 Standard 8Bit Ausgabe über die Amiga-Hardware. Dies ist die Voreinstellung. Paula14 Schaltet auf 14Bit Wiedergabe. Achtung! Dies ist eine Hack- Routine, die direkt die Hardware-Register anspricht. Ich habe alles getan, das mir einfiel, um andere Tasks zu schützen, aber man weiß ja nie... Vorsicht also bei der Anwendung. Paula14c Das gleiche wie bei Paula14, aber mit Kalibrierungs- Preferenzen für noch bessere Wiedergabequalität. Siehe Kapitel 2. MPro Verwendet die Maestro Pro von MacroSystem für die Ausgabe. Dabei werden nur 44.1kHz und 48kHz unterstützt. Bei der 44.1kHz Wiedergabe muß ein sauberes Signal am Eingang der Karte anliegen, für detailiertere Informationen sei die Anleitung von Maestix und der MPro-Karte empfohlen. AHI Verwendet das AHI audio system von Martin 'Levicitus' Blom für die Ausgabe. Prelude Verwendet direkt die Prelude Soundkarte von A.C.T. für die Ausgabe 8SVX Der Sound soll nicht abgespielt sondern in ein IFF-8SVX File geschrieben werden. Im Grunde genommen ist dies die Ausgabe von umgeleitet in ein File. Der Dateiname ist der der Eingabedatei mit angehängtem "iff". ACHTUNG: Alle Limits von gelten auch hier - also: - 16Bit Sounds werden auf 8 Bit reduziert - schlechtere Qualität - Wenn FAST nicht gesetzt ist, wird die Sample-Rate auf max. 28kHz reduziert Ich empfehle dringend, das Original-File zu behalten, wenn genug Platz dafür ist. Die Enttäuschung über die Soundqualität beim Kauf eines besseren Sound-Systems könnte sonst groß sein! OUTNUM/N(*) Sollte ein gewähltes Ausgabegerät mehrere Ausgänge haben, kann hier die Nummer des zu wählenden Ausganges angegeben werden (derzeit nur von AHI unterstützt) FILTER/K(*) FILTER=ON : Audio Filter EIN bei Wiedergabe FILTER=OFF : Audio Filter AUS bei Wiedergabe FILTER=AUTO: Filter abhängig von der Samplerate setzen Wenn FILTER nicht angegeben wird, läßt Play16 die Register des AudioFilters unberührt. LOOPS/N Gibt die Anzahl der Wiederholungen an. Voreinstellung ist LOOPS=1 (spielt den Sound einmal). LOOPS=0 bedeutet endlose Wiedergabe. Weitere Optionen: WINDOW/K(*) Ausgabefenster-Größe. Dieses Keyword kann nur als ToolType eingetragen werden - und zwar nur im Play16 Icon selber. Wenn es nicht angegeben wird, werden die voreingestellten Werte verwendet. PATH/K Setzt den Standardpfad für den Filerequester. In der Kommandozeile hat die bloße Angabe eines Pfades statt eines Filenamens den gleichen Effekt. SINGLE/S Benutzt nur einen Buffer statt zwei und lädt alle Daten auf einmal in den Speicher. PRIORITY/N Setzt die Priorität von Play16, dabei können Werte zwischen -25 und 25 angegeben werden, Voreinstellung ist 1. MULTIPLE/S Öffnet den Filerequester nach dem Abspielen aller Files erneut. BUFFER/N Größe des AsyncIO Buffers in KBytes. Voreingestellt ist 64. PRELOAD/S Lädt genug Daten in den Speicher, um die Wiedergabe auf einen Tastendruck hin zu starten MODE/N Benutzt den angegebenen Modus für AHI und öffnet keinen AHI Mode Requester. Ist das niederwertige Wort der ModeID null, wird der passende Modus mit BestAudioID ermittelt. Mit GAIP16 (ist bei Play16 dabei) kann der gewünschte Modus ermittelt werden. Die erste Dezimalzahl ist der Hardware-Code (dann wird BestAudioID von Play16 verwendet), die zweite Dezimalzahl steht für haargenau diesen Modus. RAW/S Schaltet die Dateityperkennung ab und teilt Play16 mit, was das Format des Sounds ist. Sollte Play16 das Format nicht selber erkennen können, wird ebenfalls auf RAW geschaltet. Soll dies verhindert werden, kann STRICT gesetzt werden: STRICT/S Spielt nur Files, die von der AutoDetect-Routine erkannt werden. Dies ist sinnvoll, wenn z.B. keine plötzlichen Krachgeräusche erwünscht sind (wenn z.B. Bilder statt Sounds angehört werden sollen :-) OUTPATH/K Benutzt diesen Pfad, um konvertierte 8SVX Dateien abzuspeichern. Beispiele: a) Play16 music.wav spielt das File "music.wav" einmal direkt von der Platte. b) Play16 music.wav SINGLE wie vor, lädt aber die Daten zunächst in den Speicher. c) Play16 music.wav SINGLE VERBOSITY=1 wie vor, gibt aber zusätzliche Informationen aus. d) Play16 rhythm.wav LOOPS=10 spielt den Rhythmus als fortlaufende Schleife (10mal). e) Play16 explosion.wav SINGLE PRELOAD lädt die Explosion in den Speicher und wartet auf einen Tastendruck vor dem Abspielen. f) Play16 MyFavouriteTune.wav FAST OUTPUT=8SVX konvertiert das angegebene File nach IFF-8SVX ohne Änderung der Samplerate g) Play16 MyFavouriteTune.wav OUTPUT=8SVX wie vor, begrenzt aber die Samplerate der konvertierten Datei auf 28 kHz! h) Play16 DemoSound RAW ALAW FREQ=8000 spielt eine von WilhelmTEL generierte raw ISDN A-Law Datei Die folgenden Optionen teilen Play16 mit, welche Parameter benutzt werden sollen, wenn der RAW-Modus angewendet wird. Dies ist entweder beim Setzen von RAW der Fall oder wenn Play16 das File nicht identifizieren kann und STRICT _nicht_ gesetzt ist. Optionen im RAW Modus: FREQ/N Sample-Frequenz in Hz TRACKS/N Tracks, 1 = Mono, 2 = Stereo BITS/N Auflösung in Bits, 8 oder 16 HEADER/N Länge des Headers: soviele Bytes sollen am Anfang des Files ignoriert werden. UNSIGNED/S Daten sind ohne Vorzeichen, nur bei 8 Bit Sounds INTEL/S Daten sind im Intel Format, nur bei 16 Bit Sounds ULAW/S Daten sind komprimiert mit µ-Law ALAW/S Daten sind komprimiert mit A-Law Die Voreinstellungen sind: 22050 Hz, Mono, 8 Bit, kein Header. Wie benutze ich diesen RAW Modus? --------------------------------- Tjaaaaa... Wenn das Format des Soundfiles bekannt ist, sollten RAW, FREQ, TRACKS, BITS, UNSIGNED und INTEL entsprechend gesetzt werden. Sind die Werte nicht bekannt, bleibt nur Ausprobieren übrig. Hier einige Tips, um es etwas einfacher zu gestalten: Der HEADER sollte auf geraden Werten stehen (zunächst erstmal 0) Wenn BITS 16 sein sollen, und es kommt nur Rauschen, kann INTEL probiert werden. Wenn BITS 8 sind und der Sound verzerrt klingt, kann UNSIGNED probiert werden. Wenn dies nicht hilft, sollten verschiedene Kombinationen von BITS, INTEL und UNSIGNED probiert werden. Wenn ein erkennbares Ergebnis erreicht wurde und der Sound zu schnell oder zu langsam läuft, sollte mit TRACKS und FREQ experimentiert werden. Wenn bekannte und unbekannte Files gemischt gespielt werden sollen, ohne die Kommandozeile zu ändern, sollten einfach alle bekannten Daten der Raw-Files angegeben werden und die Keywords RAW und STRICT ausgelassen bleiben. Wenn Play16 dann den Sound identifizieren kann, benutzt es die im File angegebenen Werte - sonst verwendet es die Parameter der Kommandozeile. Rechtliches ----------- Play16 unterliegt dem Copyright, ist aber FreeWare. Es darf frei kopiert werden, solange keine Änderungen am Programm und den begleitenden Dokumentationen vorgenommen wurden. Eine Unkostenbeteiligung in Höhe der Selbstkosten darf erhoben werden. Play16 darf nicht für kommerzielle Zwecke verwendet oder in einem kommerziellen Produkt enthalten sein, ohne daß eine schriftliche Genehmigung des Autors vorliegt. Jegliche Verantwortung für beschädigte Lautsprecher, Verstärker, Amigas oder andere bei der Verwendung von Play16 beteiligten Geräte wird ausdrücklich abgelehnt. Obwohl ich einige Betatests durchgeführt habe, kann ich nicht garantieren, daß Play16 nicht crasht! Jeder aufgefundene Fehler sollte mir berichtet werden. Es ist weder der Fehler von MacrosSystem noch repräsentiert es die Qualität der Produkte von MacroSystem, sollte die Ausgabe von MPro oder der maestix.library nicht funktionieren. Verschiedenes ------------- Ich sage nicht, daß Play16 schnell ist. Ich habe einiges optimiert, aber da das Lade/Konvertier-Modul universell ist, werden mehr Daten hin- und hergeschoben, als tatsächlich zum Abspielen nötig wäre. Dennoch habe ich seperate optimierte Routinen für 8 Bit und 14/16 Bit eingebaut. Ich kann unter folgender Adresse erreicht werden: Internet: AmigaTom@gmx.de Entwicklungsgeschichte ---------------------- Bitte in der englischen Dokumentation nachlesen Zukünftiges ----------- - keine weiteren Features geplant! Neue, proprietäre Dateiformate werden garantiert nicht unterstützt! Wenn mich jedoch jemand mit verdammt viel Geld besticht, danke ich nochmal drüber nach :-) Bekannte Fehler --------------- Wiederholtes Abspielen (looping) von Fibonacci Delta Sounds könnte verzerrt klingen. Lange VOC Sounds können nicht komplett abgespielt werden. Wenn nicht genug Rechenzeit frei ist, wiederholt Play16 manchmal Teile des Sounds und bricht die Wiedergabe eventuell vorzeitig ab. Vielleicht bessert sich das Problem durch asyncio ein wenig. Paula14 und Paula14c verschlucken sich am Anfang auf einigen Systemen. Ich konnte bisher leider nicht herausfinden, warum :-( Abhilfe: Soundkarte kaufen! :) Danksagungen ------------ Danke geht an die folgenden Personen: Kai Stuke für wichtige Tips zur C-Programmierung und zum Audio- Device des Amiga, außerdem für das BetaTesten von Play16 Marc Albrecht für Betatesten und Tips zur Codeoptimierung, sowie für die deutsche Version dieser Anleitung Clete Baker für die Spezifikationen von AIFF und SDII Alex Kazik für die Hilfe bei µ-Law and A-Law AIFF Richard Körber für die Maestix Library und dafür, daß sie FreeWare ist Christian Buchner für seine Forschungen und Ideen zur 14Bit Ausgabe und deren Kalibrierung Mario Cattaneo für das nette Play16 drawer Icon Christian A. Weber für seinen guten ISDN A-Law decoder source Martin Blom für das geniale AHI audio system Und an alle die, die mir geschrieben haben!