home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 2002 January
/
STC_CD_01_2002.iso
/
APP
/
TRAIL_PG
/
GEMJING
/
GEMJ136.LZH
/
Develop
/
Doc
/
GEMJing.u
< prev
next >
Wrap
Text File
|
2000-06-01
|
37KB
|
890 lines
!language [german]
!use_auto_toptocs [stg,html]
!use_auto_subtocs [stg,win,pch,html]
!use_auto_subsubtocs [stg,win,pch]
!no_effects [asc]
!no_numbers [html]
!docinfo [programimage] box
#!html_modern_layout
#!use_alias_inside_index[stg,html]
#!use_label_inside_index[stg,html]
#!use_nodes_inside_index[stg,html]
!raw [stg] @options "+z -t4"
!docinfo [title] GEMJing-Dokumentation
!docinfo [version] V.1.36
!docinfo [date] 2000-06-01
!docinfo [author] Götz Hoffart
!docinfo [htmltitle] GEMJing-Dokumentation
!raw [stg] @subject "Dokumentation/Sonstiges"
# Die Silbenregeln
!include c:\daten\guides\hyphens.ui
##################################################################
!begin_document
!maketitle
!tableofcontents
###############################################################
!node Rechtliches
GEMJing Public License
(c) 2000 by Götz Hoffart.
GEMJing untersteht der CAT Public License in der Version 1.0
vom 24. Oktober 1997 von Dirk Steins, die als CATPL.TXT dem
Archiv beiliegt.
Ausnahmen betreffen die Beilage zu den Programmen "Texel"
von Thomas Much, "ArtWorx" von Christian Witt, "CAB" von Alexander
Clauss, "Rational Sounds" von Heiko Achilles und Nils Schneider und
"Draconis" von Jens Heitmann.
Die Beilage von GEMJing zu den genannten Programmen ist hiermit
ausdrücklich von mir erlaubt. Ein kommerzielles Alleinnutzungsrecht
von GEMJing, auch für die ausgenommenen Programme und Autoren,
ergibt sich damit jedoch nicht, GEMJing hat nur den Status
als "schmückendes Beiwerk". GEMJing darf also in keiner, auch keiner
weiterentwickelten Version, separat verkauft werden.
Götz Hoffart, 1. Juni 2000 (!nl) (!nl)
E-Mail: Götz Hoffart @ FR (MausNet) (!nl)
goetz@hoffart.de (Internet) (!nl)
Web: http://www.hoffart.de/ (!nl)
Adresse: Einsteinstr. 3, 76287 Rheinstetten (!nl)
Von Telefonanrufen bei obiger Adresse bitte ich dringend abzusehen.
!hline
!begin_verbatim
CAT Public License
Version 1.0, 24. Oktober 1997
Copyright (c) 1997, Dirk Steins (!nl)
Jegliche Veränderung dieser Lizenz ist nicht erlaubt.
Dieses Dokument beschreibt die Lizenzvereinbarungen betreffend aller
Programme, die aus dem CAT Projekt entstanden sind oder noch entstehen
werden. Diese Lizenz ist verbindlich für alle Programme und Sourcen,
die aus diesem Projekt heraus entstanden sind und entstehen werden.
Das CAT Projekt ist entstanden aus dem MausTausch-Programm CAT für
TOS- kompatible Rechner. Ziel des Projektes ist es, die
Weiterentwicklung von CAT trotz der Aufgabe durch die ursprünglichen
Autoren nicht einschlafen zu lassen, sondern kontinuierlich
weiterzuentwickeln und zu verbessern. Das CAT Projekt umfa₧t die
Programme CAT, CATPUTZ, REPAIR und FRED sowie etwaige
Installationsprogramme und jedes weitere Programm, das unter
Verwendung der Sourcen der obigen Programme entsteht.
Diese Lizenz dient dazu, die Weitergabe, das Kopieren und Modifizieren
von Teilen oder des gesamten Projekts zu regeln. Diese Lizenz ähnelt
in einigen Teilen der GNU Public License, ist aber nicht so umfassend
und umfangreich wie diese.
1. Umfang: Das CAT Projekt besteht aus den Programmen CAT, CATPUTZ,
FRED, REPAIR, INSTALL und allen weiteren Programmen, die im Laufe
dieses Projektes und unter Verwendung der Sourcen dieses
Projektes unter dieser Lizenz entwickelt werden. Dazu zählt jedes
Programm, bei dem der Inhaber des Copyrights erklärt, da₧ es
unter dieser Lizenz vertrieben wird. Weiterhin gehören dazu die
Sourcen der Anleitungen zu den verschiedenen Programmen im UDO-
Format.
2. Teil des CAT Projektes ist die Library MagiC von Peter Hellinger
in der modifizierten Version 3.3. Diese Library darf in dieser
mitgelieferten Form nur für Programme innerhalb des CAT Projektes
benutzt werden. Für alle anderen Programme ist eine Benutzung der
MagiC-Library in dieser Version nicht gestattet. Es gibt für
andere Projekte neuere Versionen dieser Library, die unter dem
Namen TrueMagic erhältlich ist. Diese ist bei Peter Hellinger @ N
(peter_hellinger@n.maus.de) erhältlich, dort erhält man auch die
genauen Konditionen für die Benutzung dieser Library.
3. Das CAT Projekt darf mit allen Sourcen auf beliebigen Medien
kopiert und weitergegeben werden, unter der Voraussetzung, da₧ an
geeigneter Stelle Hinweise auf das Copyright und die
Garantiebestimmungen stets mitgeliefert werden. Alle Hinweise auf
diese Lizenz und auf die Abwesenheit jeglicher Garantie müssen
beibehalten werden und dürfen nicht verändert werden. Diese
Lizenz mu₧ bei jedem Teil des Projektes mitgeliefert werden.
4. Alle Teile des CAT Projektes sind Freeware, es ist nicht erlaubt,
aus Teilen oder dem Gesamten des CAT Projektes kommerzielle
Software zu entwickeln oder dieses in Teilen oder als Ganzes mit
Gewinnerzielungsabsichten zu vertreiben. Explizit ausgeschlossen
von dieser Bestimmung sind Gebühren für die physikalische
Verteilung jeder Kopie wie zum Beispiel CD-Kosten oder
Diskettenkosten.
5. Es ist erlaubt, die Programme oder Teile davon zu verändern, also
ein Werk basierend auf dem Projekt zu erstellen, und diese
Veränderungen oder dieses Werk unter den Bestimmungen von
Abschnitt 4 zu vertreiben und zu kopieren, sofern die folgenden
Bestimmungen eingehalten werden:
(a) Jede Veränderung in den Dateien mu₧ explizit in diesen
gekennzeichnet werden und das Datum dieser Änderungen mu₧ in
den Dateien festgehalten werden. Bei Dateien, bei denen
dieses aus technischen Gründen nicht möglich ist (Resource-
Dateien oder ähnliches) sind die Veränderungen in einer
dazugehörenden Textdatei ausführlich zu dokumentieren.
(b) Alle Sourcen zu dem veränderten Programm müssen zur
Verfügung gestellt werden, auch solche, die auf den Sourcen
des CAT-Projektes basieren und neu entwickelt wurden.
6. Es ist erlaubt, nur die ausführbaren Programme oder modifizierte
Versionen davon zu kopieren und zu vertreiben, sofern
sichergestellt wird, da₧ die Sourcen dieser Programme in
vollständiger Form zur Verfügung gestellt werden und für jeden
verfügbar sind. Gegebenenfalls mu₧ sich der Autor der
Veränderungen bereiterklären, die veränderten Sourcen gegen eine
Erstattung der Unkosten zu kopieren und zu verteilen. Ausreichend
für die Erfüllung dieser Bedingung ist es, die vollständigen
Sourcen in einem öffentlichen Mailboxsystem oder auf ftp-Servern
zur Verfügung zu stellen.
7. Der Copyright-Inhaber dieser Lizenz darf erweiterte und
veränderte Versionen dieser Lizenz veröffentlichen. Diese
veränderten Versionen dieser Lizenz werden dem Sinne dieser
Lizenz entsprechen, können sich aber in Details unterscheiden, um
neue Probleme und Bedenken anzusprechen und zu umfassen. Der
Copyright-Inhaber dieser Lizenz ist dazu berechtigt, diese Lizenz
an Dritte weiterzugeben, sofern diese im Sinne dieser Lizenz
weiterarbeiten wollen.
AUSSCHLUSS DER GEWÄHRLEISTUNG
8. Da das gesamte CAT-Projekt frei von Gebühren vertrieben wird,
gibt es keine Gewährleistung für dieses Projekt und Teile davon,
soweit dies gesetzlich zulässig ist. Dieses Projekt wird so zur
Verfügung gestellt, wie es ist, ohne Gewährleistung jedweder Art,
weder direkte noch indirekte, einschlie₧end, aber nicht
beschränkt auf, die Funktionsfähigkeit zu irgendeinem Zwecke. Das
gesamte Risiko für die Benutzung oder Nichtbenutzung der in
diesem Projekt enthaltenen Informationen und/oder der Programme
und/oder Teilen davon liegt bei dem Nutzer! Unter keinen
Umständen wird irgend jemand, egal ob lebeNd, tot oder scheintot
und/oder irgendeine Gruppe, die der menschlichen Rasse oder sonst
einer (mehr oder weniger) intelligenten Spezies (einschlie₧lich,
aber nicht beschränkt auf jenen bisweilen SOL III genannten
Planeten) entstammt oder vorgibt zu entstammen, und der dieses
Projekte und/oder Teile davon oder ein anderes, damit in
Verbindung stehendes Projekt und/oder Programm oder Teile davon
modifiziert und/oder weiterverbreitet, egal ob legal oder
illegal, in irgendeiner Art verantwortlich sein für irgendwelche
Schäden, einschlie₧lich aber nicht beschränkt auf
entgangener/geschmälerter/verlorerer Profite, Gelder, Geltung,
Gesundheit, Freunde/Freundinnen etc., die implizit oder explizit
aus der Verwendung oder Nichtverwendung dieses Projektes und/oder
Programme und/oder Teilen davon, resultieren.
!end_verbatim
!hline
!index Copyright
Copyright (c) by Götz Hoffart. Alle Rechte am Programm und der Dokumentation
sowie den zugehörigen Dateien vorbehalten.
!index Kontaktadresse
!index E-Mail-Adresse
Autor: Götz Hoffart, Rheinstetten. (!nl)
MausNet: Götz Hoffart @ FR (!nl)
Internet: goetz@hoffart.de (!nl)
!ifdest [html]
!raw [html] WWW: <a href="http://www.hoffart.de/">http://www.hoffart.de/</a><br>
!else
WWW: http://www.hoffart.de/
!endif
###############################################################
!node Was tut es?
GEMJing spielt Samples ab, bevorzugt per Fernsteuerung. Wie diese
vorgenommen werden kann, wird im
(!link [Programmierabschnitt] [Für Programmierer]) erklärt.
Akzeptiert werden derzeit WAV-Samples (bekannt aus der Windows-Welt), HSN-Samples
(CrazySounds, Atari), AVR-Samples (Michtron), SMP-Samples (Galactic Sound-
Sampler, Atari) sowie deren Abart ""STE-SMP"", ungepackte DVS-Samples
(von der Harddisc-Recording-Software ""WinRec"") sowie Sun/NeXT-Samples
im "".au"" bzw. "".snd""-Format (mit einigen (!link [Einschränkungen] [Sun/NeXT])).
Die Einsatzmöglichkeiten von GEMJing reichen vom simplen Dateiviewer bis
zum Plug-In.
GEMJing läuft mit folgenden Hardwarekonfigurationen:
!begin_itemize
!item ST, MegaST (PSG)
!item STE, MegaSTE, TT (DMA)
!item Falcon
!item MagiCMac (mit WeirdMac oder MSND)
!item MagiC-PC 6.0
!item Hades040 und Hades060 (PSG)
!item Hades mit der Startrack-Soundkarte, mit und ohne Clockmodul
!item Milan mit Milanblaster
!end_itemize
Dabei wird versucht, die jeweils maximale Qualität, die das
Soundsystem der Hardware bietet, auszunutzen. Auf ST-kompatiblen
Systemen ist dies der Soundchip (in obiger Auflistung: PSG), STE-
kompatible Systeme werden mittels 8 Bit DMA Sound betrieben (DMA) und auf
dem Falcon wird der 16 Bit XBIOS-Sound verwendet (XBIOS). Bei Apple
Macintosh mit MagiCMac und installiertem MSND oder WeirdMac hängt die
Qualität von der zugrundeliegenden Soundhardware des Macs ab, kleinere und
ältere Macs bieten nur 8 Bit Sound, neuere dagegen 16 Bit (XBIOS).
MagiC-PC 6.0 bietet ebenfalls freie Frequenzwahl an (XBIOS).
!index Stoppen des Samples durch Tastendruck
Das Abspielen kann durch Drücken von Control und Links-Shift
unterbrochen werden.
Fehlermeldungen gibt GEMJing nur aus, wenn der Benutzer den Menüeintrag
gewählt hat, um sich das Sample anzuhören. Bei Aufforderung zur Wiedergabe
per Kommandozeile oder VA_START bleibt GEMJing (für den Benutzer)
stumm in Sachen Fehlerrückmeldung.
###############################################################
!node Einsatzmöglichkeiten
!index Einsatz im Desktop
Man kann GEMJing im Desktop für WAV, AVR, SMP, HSN, DVS, AU und SND-Dateien
anmelden und dann bequem Sample-Dateien doppelklicken, um sie anzuhören,
ohne riesige Programmonster und Super-Viewer nachladen zu müssen.
!index Einsatz mit Jinnee
Bei Verwendung des Desktops Jinnee kann man GEMJing für die gewünschten Extensionen
als Applikation anmelden und in der Eingabezeile für die Kommandozeile ""-q %$p""
eingeben. Das bewirkt, da₧ GEMJing sich nach dem Spielen sofort wieder aus dem
Speicher verabschiedet.
!index Einsatz als Startsample beim Booten
Oder man schreibt sich ein Mupfel-Script, das GEMJing beim Booten startet
und ein Sample spielen lä₧t. Einfach mit der Kommandozeile
""-q sample.wav"" aufrufen und schon tönt es bei jedem Rechnerstart. Oder
bei jedem Shutdown. Oder zu jeder vollen Stunde ...
!index Einsatz als Soundtreiber
TOS bietet leider keinerlei Möglichkeiten, Samples über einen
Betriebssystemaufruf abzuspielen. Daher mu₧ jeder Programmautor, dessen
Programm sich lautstark ausdrücken soll, diese Routinen selbst in sein
Programm integrieren. Mit GEMJing ist das nicht mehr notwendig, es besitzt
mehrere Schnittstellen nach au₧en. Der
Abschnitt (!link [Für Programmierer] [Für Programmierer]) hilft hier
weiter.
GEMJing gehört (!I)nicht(!i) in den AUTO-Ordner.
!index Einsatz über OLGA
Programme können GEMJing auch über OLGA
(!link [OLGA][OLGA-Start]) nachstarten
lassen, was sehr bequem ist. Dazu bitte die OLGA.INF
(!link [anpassen][Anpassung der OLGA.INF]).
!index Environmentvariable GEMJINGPATH
Wer will, da₧ andere Programme GEMJing finden, der sollte die
Environmentvariable GEMJINGPATH setzen: Machen Sie sich von der Datei
MAGX.INF eine Sicherheitskopie. Öffnen Sie nun Ihre originale MAGX.INF mit
einem Texteditor wie etwa qed, 7Up, Tempus etc. Eine Zeile lautet
(!V)"#_ACC C:\"(!v) oder ähnlich. Fügen Sie nun (!I)danach(!i)
eine Zeile ein, in die Sie schreiben:
!begin_verbatim
#_ENV GEMJINGPATH=C:\Tools\GEMJing\GEMJing.prg
!end_verbatim
Den Pfad müssen Sie natürlich noch an Ihre Gegenheiten anpassen. Gemini-
Benutzer können die Environmentvariable in der Mupfel-Profile setzen,
N.AES-User in der MINT.CNF. Es ist (!B)nicht(!b) notwendig, da₧ die
Variable gesetzt wird, aber es spart letztlich Arbeit, da die Programme
GEMJing von alleine finden.
#####################################################################
!node Für Programmierer
!index Programmer's Guide
GEMJing ist in erster Linie dazu gedacht, ferngesteuert zu werden. Der
statische RAM Verbrauch beträgt ungefähr 30kB, alles andere wird dynamisch
angefordert.
Wer GEMJing von seinem Programm aus aufrufen will, hat drei Möglichkeiten:
!begin_itemize
!item Start und
(!link [Übergabe einer VA_START-Nachricht] [VA_START-Übergabe])
!item Start mit
(!link [Übergabe einer Kommandozeile] [Kommandozeilenstart])
!item Über (!link [OLGA] [OLGA-Start])
!item Über GEMScript (das OPEN- und QUIT-Kommando wird unterstützt)
!end_itemize
Beim Start sollte beachtet werden, da₧ die Environmentvariable GEMJINGPATH
anzeigt, wo sich GEMJing befindet. Unter MagiC sähe das in der MAGX.INF
dann etwa so aus: (!nl)
!begin_verbatim
#_ENV GEMJINGPATH=D:\Tools\GEMJing\GEMJing.prg
!end_verbatim
!hline
#####################################################################
!subnode VA_START-Übergabe
GEMJing wird normal gestartet. Andere Applikationen können es nun
über die AES ausfindig machen und eine VA_START-Nachricht
verschicken. Als Antwort bekommen sie AV_STARTED und GEMJING_RETURN.
Die VA_START-Nachricht ist für GEMJing durch eine Übergabe von
Parametern erweiterbar. Es wird in msg[3] und msg[4] ein Pointer auf einen
String übergeben, der die Kommandozeile enthält. Dieser String mu₧ global
lesbar sein.
!begin_xlist [ blaa ]
!item [-q] Quit. Das Sample wird abgespielt und unmittelbar im
Anschlu₧ an das Ende des Samples beendet sich das Programm selbständig.
!index Repeat (VA_START)
!index Wiederholungen (VA_START)
!item [-rx] Repeat. Das Sample wird x-mal gespielt. ""-r1"" bedeutet,
da₧ das Sample einmal gespielt wird, ""-r0"" bedeutet endlose
Wiederholung. Wird kein ""-r""-Parameter übergeben, so entspricht
dies ""-r1"". Wertebereich für x: [0; 32000]
!index Delay (VA_START)
!index Abstand (VA_START)
!item [-dx] Delay. Zwischen den Wiederholungen kann eine Pause von x
Sekunden liegen, wobei x ganzzahlig und positiv sein mu₧. ""-d0""
bedeutet, da₧ die zwei Wiederholungen direkt aneinander
folgen (so dicht es GEMJing erlaubt). Wertebereich für x: [0; 32000]
!index Memory playing (VA_START)
!index Spielen direkt aus dem Speicher (VA_START)
!item [-mx] Spielen aus dem Speicher (-m für Memory). x steht für einen Ausdruck
der Form ""a,b"", wobei ""a"" die Adresse als Dezimalzahl angibt, ab der
das Sample in einem der unterstützten Formate komplett liegt. ""b"" ist die Länge
des Samples im Speicher, ebenfalls als Dezimalzahl. (!nl)
Der Speicher mu₧ natürlich global alloziert sein, d.h. Mxalloc(menge, 0 | MGLOBAL),
damit GEMJing auch in Systemen mit Speicherschutz darauf zugreifen darf. (!nl)
Ein korrekter Ausdruck wäre also ""-m445340,49768"", natürlich ohne die """". Das
Sample liegt hier ab Adresse 445340 mit einer Länge von 49768 Bytes.
!end_xlist
Mit dem ""-m""-Parameter müssen Programme das Sample nicht dauernd von GEMJing laden
lassen, sondern können selbst ein halbes Dutzend Samples in den Speicher laden, um
GEMJing dann nur noch die Adresse mitzuteilen.
!index MiNT-Signal (VA_START)
!index Stoppen des Samples per Fernsteuerung (VA_START)
Wenn ein Sample plötzlich gestoppt werden mu₧, so ist GEMJing das
MiNT-Signal ""SIGUSR1"" zu schicken.
Nach einem (!link [VA_START] [VA_START-Nachricht]) bedankt sich
GEMJing mit AV_STARTED und mit der GEMJing-Returnmessage, mittels derer
auf evtl. aufgetretene Fehler reagiert werden kann. GEMJing selbst gibt
keine Fehler aus, wenn das Sample fehlerhaft oder das Soundsystem gesperrt
ist oder ähnliches, damit das bedienende Programm auf jeden Fall die
Kontrolle behält und nicht irgendwo noch Alerts von GEMJing rumdümpeln.
Idealerweise soll der Benutzer GEMJing ja gar nicht bemerken.
#####################################################################
!subnode Kommandozeilenstart
Bei Start von GEMJing mit Übergabe einer Kommandozeile wertet GEMJing
die übergebenen Parameter aus und spielt ggf. das Sample. Wird
GEMJing beendet, so wird der Fehlercode zurückgegeben, der beim
zuletzt gespielten Sample auftrat.
!begin_xlist [ blaa ]
!item [-q] Quit. Das Sample wird abgespielt, ohne da₧ eine Menüzeile
dargestellt wird. Unmittelbar im Anschlu₧ an das Ende des Samples
beendet sich das Programm selbständig.
!index Repeat (Kommandozeile)
!index Wiederholungen (Kommandozeile)
!item [-rx] Repeat. Das Sample wird x-mal gespielt. ""-r1"" bedeutet,
da₧ das Sample einmal gespielt wird, ""-r0"" bedeutet endlose
Wiederholung. Wird kein ""-r""-Parameter übergeben, so entspricht
dies ""-r1"". Wertebereich für x: [0; 32000]
!index Delay (Kommandozeile)
!index Abstand (Kommandozeile)
!item [-dx] Delay. Zwischen den Wiederholungen kann eine Pause von x
Sekunden liegen, wobei x ganzzahlig und positiv sein mu₧. ""-d0""
bedeutet, da₧ die zwei Wiederholungen direkt aneinander
folgen (so dicht es GEMJing erlaubt). Ist kein ""-d"" angegeben,
so wird ""-d0"" verwendet. Wertebereich für x: [0; 32000]
!index Start ohne Menüzeile (Kommandozeile)
!label Start ohne Menüzeile (Kommandozeile)
!item [-p] Plain. GEMJing startet und bleibt im Speicher, zeigt jedoch
keine Menüzeile an. (!B)Achtung:(!b) Nur als Kommandozeilenparameter
erlaubt!
!index Memory playing (Kommandozeile)
!index Spielen direkt aus dem Speicher (Kommandozeile)
!item [-mx] Spielen aus dem Speicher (-m für Memory). x steht für einen Ausdruck
der Form ""a,b"", wobei ""a"" die Adresse als Dezimalzahl angibt, ab der
das Sample in einem der unterstützten Formate komplett liegt. ""b"" ist die Länge
des Samples im Speicher, ebenfalls als Dezimalzahl. (!nl)
Der Speicher mu₧ natürlich global alloziert sein, d.h. Mxalloc(menge, 0 | MGLOBAL),
damit GEMJing auch in Systemen mit Speicherschutz darauf zugreifen darf. (!nl)
Ein korrekter Ausdruck wäre also ""-m445340,49768"", natürlich ohne die """". Das
Sample liegt hier ab Adresse 445340 mit einer Länge von 49768 Bytes.
!end_xlist
Mit dem ""-m""-Parameter müssen Programme das Sample nicht dauernd von GEMJing laden
lassen, sondern können selbst ein halbes Dutzend Samples in den Speicher laden, um
GEMJing dann nur noch die Adresse mitzuteilen. Achtung! Der Speicher für
das Sample darf erst freigegeben werden, wenn GEMJing beendet wurde und
damit eine Rückmeldung vorliegt, da₧ es nicht mehr spielt. AES-Messages
kann man als TOS-Programm ja nicht verschicken.
!index MiNT-Signal (Kommandozeile)
!index Stoppen des Samples per Fernsteuerung (Kommandozeile)
Wenn ein Sample plötzlich gestoppt werden mu₧, so ist GEMJing das
MiNT-Signal ""SIGUSR1"" zu schicken.
#############################################################################
!subnode OLGA-Start
GEMJing ist ein OLGA-Server für .WAV, .DVS, .HSN, .AVR, .SMP und .AU bzw.
.SND-Samples. Die Datei OLGA.INF ist also
(!link [anzupassen][Anpassung der OLGA.INF]).
Danach kann man z.B. in Stella einfach eine WAV-Datei öffnen und
GEMJing wird automatisch über OLGA nachgestartet: man hört das
Sample.
#############################################################################
!subsubnode Anpassung der OLGA.INF
Unter ""[Extensions]"" sind die folgenden sieben Einträge
hinzuzufügen:
!begin_verbatim
.WAV=C:\Programme\GEMJing\GEMJing.PRG
.DVS=C:\Programme\GEMJing\GEMJing.PRG
.SMP=C:\Programme\GEMJing\GEMJing.PRG
.AVR=C:\Programme\GEMJing\GEMJing.PRG
.HSN=C:\Programme\GEMJing\GEMJing.PRG
.AU=C:\Programme\GEMJing\GEMJing.PRG
.SND=C:\Programme\GEMJing\GEMJing.PRG
!end_verbatim
Den Abschnitt ""[Types]"" kann man wie folgt ergänzen:
!begin_verbatim
MU=C:\Programme\GEMJing\GEMJing.PRG
!end_verbatim
Man sollte jedoch darauf achten, da₧ keine Einträge doppelt
vergeben werden! Ab OLGA 1.3 liegen dem OLGA-Archiv die OLGA-Tools bei,
die eine bestehende OLGA.INF überprüfen.
#############################################################################
!subnode VA_START-Nachricht
!index Beispielcode in C
Hier eine Beispiel-VA_START-Nachricht, wie sie an GEMJing verschickt
werden kann. Daraufhin erhält man AV_STARTED sowie
(!link [GEMJING_RETURN] [GEMJing-Returnmessage]).
!hline
!begin_verbatim
#define MGLOBAL 0x20
#define VA_START 0x4711
#define AV_STARTED 0x4738
#define GEMJING_RETURN 0x7407
#define MagX_COOKIE 0x4D616758L
#define MiNT_COOKIE 0x4D694E54L
BYTE *playbuf;
BOOLEAN MagiC, MultiTOS, MiNT;
if ((get_cookie(MiNT_COOKIE, &ldum) == TRUE)
{
MiNT = TRUE;
if (_GemParBlk.global[1] > 1 || _GemParBlk.global[1] == -1))
MultiTOS = TRUE;
}
if (get_cookie(MagX_COOKIE, &ldum) == TRUE)
MagiC = TRUE;
[...]
/* Globalen Speicher für den String anfordern. Ist weder MiNT noch
* MagiC aktiv, so werden keine Speicherschutzflags gesetzt (TOS
* hat damit Probleme).
*/
if (MagiC == TRUE || MiNT == TRUE)
playbuf = (BYTE *) Mxalloc (150, 0 | MGLOBAL);
else
playbuf = (BYTE *) Malloc (150);
/* Diesen Playbuffer kann man jetzt z.B. mit
* "-q -r3 E:\Sound\BeBack.wav"
* belegen - ohne die Anführungszeichen natürlich.
*/
/* und jetzt aufrufen */
play_sample (playbuf);
[...]
Mfree (playbuf);
VOID play_sample(CONST BYTE *args)
{
WORD msg[8], gemjing_id;
LONG ldum, start;
if (!args) /* ohne Argumente -> fertig */
return ;
/* AES-ID von GEMJing ermitteln */
gemjing_id = appl_find("GEMJING ");
if (gemjing_id < 0) /* Läuft GEMJing bereits? */
{
/* Environmentvariable "GEMJINGPATH" auslesen */
PfadvonGEMJing = getenv("GEMJINGPATH");
if (PfadvonGEMJing && strlen(PfadvonGEMJing) > 0)
{
if (MultiTOS == TRUE)
shel_write(0, 1, 1, PfadvonGEMJing, NULL);
else if (MagiC == TRUE)
shel_write(1, 1, 100, PfadvonGEMJing, NULL);
/* Ja, man könnte die Parameterübergabe auch schon beim
Start per shel_write() erledigen. Dann hat man jedoch
keine Möglichkeit der Fehlercoderückgabe. */
}
}
/* Kurz warten, damit die AES-ID da ist. Nicht optimal gelöst. */
/* Innerhalb von zwei Sekunden immer mal wieder die AES-ID suchen */
start = clock();
while (clock() - start < 2 * CLK_TCK)
if (appl_find("GEMJING ") >= 0)
break;
if ((gemjing_id = appl_find("GEMJING ")) >= 0)
{
msg[0] = VA_START;
/* die eigene Applikations-ID, die von appl_init()
* geliefert wird
*/
msg[1] = app_id;
msg[2] = 0;
/* den Pointer auf zwei Words zerlegen */
msg[3] = (WORD)(((LONG)args >> 16) & 0x0000ffff);
msg[4] = (WORD)((LONG)args & 0x0000ffff);
msg[5] = 0;
msg[6] = 0;
msg[7] = 0;
/* Die VA_START-Nachricht verschicken */
appl_write(gemjing_id, 16, msg);
}
return ;
}
!end_verbatim
!hline
#####################################################################
!subnode GEMJing-Returnmessage
GEMJing liefert nach einem VA_START die Messages AV_STARTED sowie
GEMJING_RETURN (0x7407). In msg[3] von GEMJING_RETURN erhält man einen
positiven Fehlercode, alle anderen Felder sind 0. Jeder dieser Fehler führt
dazu, da₧ GEMJing das Abspielen (!I)nicht(!i) beginnt. Je nach aufrufender
Applikation und Fehlermeldung sollte der Fehler dem Benutzer mitgeteilt
werden.
!hline
!begin_verbatim
/* es trat kein Fehler auf, das Sample wurde gespielt */
#define RT_OKAY 1
/* nicht genug Speicher am Stück für den Header oder das Sample */
/* selbst oder für programminterne Zwecke */
#define RT_NO_MEM 117
/* Datei konnte nicht gefunden werden oder hat die Länge 0 oder */
/* es trat ein Lesefehler auf. */
#define RT_NO_FILE 118
/* Das Sample ist gepackt (nur bei DVS-Samples). Gepackte */
/* Samples werden von GEMJing nicht unterstützt. */
#define RT_PACKED 119
/* Das WAV-Sample enhält keine Sample-Daten */
#define RT_WRONG_CHUNK 120
/* Die Datei enthält kein bekanntes Sampleformat */
#define RT_WRONG_FILE 121
/* Das Soundsystem ist gesperrt, da ein anderes Programm darauf */
/* zugreift */
#define RT_LOCKED 122
/* Interner Fehler - sollte nie auftreten */
#define RT_SND_ERR 123
/* Die Hardware wird von GEMJing nicht unterstützt */
#define RT_WRONG_HARDWARE 124
/* Die au/snd-Datei enthält nicht unterstützte Formate */
#define RT_UNSUPPORTED_AU_SND 125
!end_verbatim
!hline
#####################################################################
!subnode WeirdMac
WeirdMac von Thorsten Pohlmann <Thorsten_Pohlmann@wi2.maus.de> ist eine
sehr empfehlenswerte Alternative zu MSND, da es wirklich kompatibel zum
Falcon-XBIOS ist und eine freie Frequenzwahl erlaubt. GEMJing unterstützt
es ab WeirdMac Version 0.64.
WeirdMac ist Fairware.
#####################################################################
!node Tips & Tricks
!index Probleme mit der Hardware
(!I)Mein GEMJing will nicht spielen, es bleibt einfach stumm!(!i) (!nl)
Das kann viele Gründe haben. Wenn das Sample per Dateiauswahl bestimmt
wurde,
so werden Fehlermeldungen per Alert dargestellt, ansonsten nicht (um die
Fernsteuerbarkeit zu gewährleisten).
!begin_itemize
!item Es liegt keine passende Hardware vor, d.h. der Sound-Cookie (_SND)
zeigt weder eine ST, STE oder Falcon-kompatible Hardware an und es ist
auch kein MacSound installiert.
!item Das Soundsystem ist bereits von einem anderen Programm in Beschlag
genommen und daher gesperrt, so z.B. wenn gleichzeitig Zeig's mir läuft und
dort ein Sample geladen ist.
!item Vor GEMJing lief eine veraltete Version von Zeig's mir, die das
Soundsystem nicht richtig freigab. Ab der Version 0.97 von Zeig's mir und
den
zugehörigen Modulen sollte dieses Problem nicht mehr existieren.
!item Es ist nicht genug Speicher vorhanden, um das Sample zu laden.
!item Das Format des Samples ist unbekannt und wird nicht unterstützt
(das ist leider relativ oft der Fall, viele Programme schreiben sehr
seltsame Header).
!end_itemize
!hline
!index Probleme mit MagiC-PC Versionen kleiner gleich 1.3
(!I)GEMJing will nicht unter MagiC-PC 1.3 spielen!(!i) (!nl)
Ein Update auf MagiC-PC 6.0 hilft. Ab dieser Version wird die
Soundausgabe via XBIOS unterstützt. (!nl)
!hline
!index Probleme mit Crazy Sounds
(!I)Habe ich Crazy Sounds installiert, so spielt GEMJing nicht.(!i) (!nl)
Crazy Sounds scheint das Soundsystem regelmä₧ig zu initialisieren, so da₧
GEMJing keine Chance hat. Abhilfe: Rational Sounds von Heiko Achilles (heiko_achilles@du.maus.de)
und Nils Schneider verwenden. (!nl)
!hline
!index Probleme mit zu schnellem/langsamen Abspielen
(!I)Mein Sample wird zu langsam oder zu schnell gespielt.(!i) (!nl)
Wahrscheinlich ist das Sample mit einer ""krummen"" Frequenz aufgenommen
worden. Die Abspielhardware des STE und Falcon (MSND für MagiCMac verhält
sich wie ein Falcon) lassen leider keine stufenlose Auswahl der Frequenz
zu. Die recht häufig vorkommenden 22kHz Samples werden mit 25kHz
abgespielt, das hört sich besser an, als 19kHz (Falcon, Mac) oder gar
12kHz (STE, TT). Abhilfe bei Verwendung von MagiCMac: Benutzen Sie statt
MSND besser WeirdMac ab Version 0.64 von Thorsten Pohlmann, das eine freie
Frequenzwahl ermöglicht. (!nl)
!hline
!label Sun/NeXT
!index Probleme mit Sun/NeXT-Samples
(!I)Mein Sun/NeXT-Sample wird nicht abgespielt, obwohl GEMJing das doch
können sollte!(!i) (!nl)
Sun/NeXT-Samples gibt es mit zwei Dutzend Untertypen, von denen GEMJing
derzeit nur einige unterstützt. Es wird daran gearbeitet.
!hline
!index Probleme mit WAV-Samples
(!I)Manche meiner WAV-Samples werden nur verrauscht gespielt, man erkennt
nichts.(!i) (!nl)
Microsoft hat ein WAV-Format definiert, das gepackt vorliegt. GEMJing kann
diese Samples derzeit noch nicht entpacken.
!hline
!index Freedom
!index Liberty
(!I)GEMJing will nicht spielen, wenn Freedom 2 (Liberty) installiert ist(!i) (!nl)
An einem Workaround wird gearbeitet. Benutzer von originaler Atari-Hardware
können von mir eine gepatchte Version erhalten, die funktioniert. Alle anderen
müssen sich noch etwas gedulden.
#####################################################################
!node Dank
Ein herzliches Dankeschön haben sich verdient:
!begin_itemize
!item Thomas Much - für geduldiges Betatesten (bei ihm lief's ja immer :-)
und Vorschläge.
!item Dirk Haun - von ihm stammt die verbesserte 16 Bit nach 8 Bit
Wandlung.
!item Alexander Clauss - für Anregungen und den Hinweis auf die SND-FAQ.
!item Jörg Hahne - er stellte seine Abspielroutinen für den PSG zur
Verfügung.
!item Holger Weets, Thomas Künneth, Gerd Hofmann und Alexander Lorenz
für das Ertragen von Bombendrohungen und für Betatesting.
!item Sven & Wilfried Behne für den verbesserten
PureC-Startup-Code.
!item Katrin Müller für das Ignorieren des nervtötenden Sampleschnipsels
(""we don't need no education""), das sie mehrere Hundert mal unfreiwillig
vorgespielt bekam.
!item Uwe Lehmann, Olivier Booklage, Jo Vandeweghe, Marion Messerich,
Laisani Petersen, Sascha Malatsion, Gideon Jacques, Leona Baba, Tiziana
Marotta, Christian Marcelo, Atilim und Devrim Erkmen, Basar Alabay, Horst
Boenisch und Markus Müller für Übersetzungen.
!item Das Team von ASH, vor allem Oliver Buchmann und Volker Ritzhaupt,
für die Unterstützung.
!item Ulrich Kaiser für beharrliches Drängen.
!item Holger Herzog für den sinnlosen Vorschlag mit der Environmentvariable, den ich
so toll fand :-)
!item Dimitri Junker für den neuen Kommandozeilenparser und die Zeit für die Tests
vor der Source-Veröffentlichung.
!item Stephan Wilhelm, der auf dem CETiK '99 viel Geduld bewies, wenn ich mal wieder
rumwuselte und nachher vor meinem Programmcode stand wie der Ochs vor'm Berg :-)
!end_itemize
GEMJing entstand mit PureC, PureAssembler und Interface auf einem Apple
PowerMacintosh 8600/300, Apple Performa 475, Apple PowerBook 190cs,
Apple Macintosh SE/30 (alle mit MagiCMac) und einem Atari Falcon
(TOS 4.04, N.AES). Für die Dokumentation wurde qed und UDO verwendet.
#####################################################################
!node Historie
(!B)Version 1.36, 01.06.00(!b)
!begin_itemize
!item Lizenz von Freeware zur CAT Public License geändert.
!item Sourcen veröffentlicht.
!item Neuer Kommandozeilenparser mit Workaround für CAB-Quoting.
!end_itemize
(!B)Version 1.35, 07.03.99(!b)
!begin_itemize
!item Bei sehr alten SingleTOS-Versionen konnte GEMJing beim Aufruf der Dateiauswahl
einen Absturz produzieren (ungültiger Pfad). Sollte behoben sein.
!item GEMJing unterstützt jetzt die StarTrack-Karte mit und ohne Clockmodul.
!end_itemize
(!B)Version 1.30, 07.06.98(!b)
!begin_itemize
!item Unterstützung von MagiC-PC 6.0 mit beliebigen Frequenzen.
!item Böser Bug bei SMP entfernt, Dank an Thorsten Otto.
!item Neuer Kommandozeilenparameter
(!link [""-p""][Start ohne Menüzeile (Kommandozeile)]): GEMJing zeigt nach
dem Start keine Menüzeile an, bleibt aber als AES-Programm im Speicher.
Nur für Fernsteuerung sinnvoll.
!item Kleinere Bugfixes und Optimierungen, Debug-Code der 1.25-
Zwischenversion raus.
!item Doku etwas überarbeitet.
!item Kein AV_SENDKEY bei Gemini als AV-Server wg. eines Bugs in
Gemini.
!end_itemize
(!B)Version 1.25, 04.04.98(!b)
!begin_itemize
!item Messeversion Neuss
!item WAV-Einleseroutine fehlertoleranter
!item Bugs bei AVR entfernt (Stereo-16-Bit)
!item Ferngesteuertes Abspielen geht nun auch aus einem Speicherbereich heraus,
siehe (!link [Programmierdoku][Für Programmierer]).
!item GEMJing spielt auch auf dem Hades040, trotz der z.T. grob fehlerhaften Cookies.
Dank an Holger Herzog @ ZW für die Testmöglichkeit auf dem CETiK '98.
!end_itemize
(!B)Version 1.06, 15.10.97(!b)
!begin_itemize
!item Fremdsprachliche Versionen: Philippinisch von Christian Marcelo,
italienisch von Tiziana Marotta.
!item Kleinere Bugfixes und Korrekturen in der Hinsicht auf alternative
Systemfonts.
!item Bessere Unterbrechbarkeit (CTRL-Shift) auch während eines Delays.
!end_itemize
(!B)Version 1.05, 04.10.97(!b)
!begin_itemize
!item Fremdsprachliche Versionen: Englisch von Uwe Lehmann, Französisch
von Jo Vandeweghe, Latein von Marion Messerich, Bishlamaro von Gideon
Jacques, Fidschi von Laisani Petersen, Esperanto von Sascha Malatsion,
Spanisch von Ursula Hoffart, Türkisch von Atilim and Devrim Erkmen,
Japanisch von Leona Baba. (!nl)
Koordination: Markus Müller.
!item Fremdsprachliche Dokumentationen: Französisch von Olivier Booklage,
Englisch von Uwe Lehmann.
!item Atari-Messe-Neuss-Edition.
!end_itemize
(!B)Version 1.04, 04.09.97(!b)
!begin_itemize
!item Es wird nun nicht nur unter MagiC performanceneutral zwischen den
Samples
gewartet, sondern auch unter N.AES und anderen Betriebssystemen, die
Fselect()
unterstützen.
!item Drei neue Sampleformate: HSN, AVR und SMP. Trotzdem benötigt GEMJing
mal wieder weniger Platz, das Programm ist jetzt 17 KB gro₧. Lange halte
ich den Trend aber nicht mehr durch :-)
!item WDIALOG wird nicht mehr benötigt. Der fehlende Fensterdialog ist
hoffentlich zu verschmerzen.
!item AV_SENDKEY eingebaut. Tastendrücke, die GEMJing nicht selbst
auswertet, werden nun an den AV-Server weitergeleitet.
!item GEMScript Rel. 0.8 wird unterstützt: OPEN und QUIT.
!item Eine französische Version ist verfügbar, Dank an Olivier Booklage
und Jo Vandeweghe.
!item GEMScript-Kommando ""QUIT"" wird zusätzlich zu ""OPEN"" unterstützt.
!item Bug bei Kommandozeilenübergabe bei SingleTOS raus (Dank an Peter
Melzer).
!item SCCS-Kennung eingebaut
!item GS_INFO-Extension korrigiert
!end_itemize
(!B)Version 1.03, 15.07.1997(!b)
!begin_itemize
!item Eine englische Version ist verfügbar, Dank an Uwe Lehmann.
!item sleep als evnt_timer-Ersatz für TTP-Start: damit funktioniert
der Parameter ""-d"" nun auch bei Start als non-GEM-Programm.
!item OLGA-Server-Funktionalität eingebaut
!item GEMScript implementiert, Kommando ""OPEN"" wird verstanden
!item GS_COMMAND korrigiert, Dank an Alexander Barton
!item AP_TERM-Unterstützung wird angemeldet
!item böser Bug bei OLGA-Initialisierung raus - Dank an Olivier Booklage
!item OLE_EXIT wird versandt
!item einige Verschlankungen: geringerer Speicherverbrauch
!end_itemize
(!B)Version 1.00, 24.03.1997(!b)
!begin_itemize
!item Erste von mir veröffentlichte Version.
!end_itemize
#####################################################################
!end_document