home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 2002 January
/
STC_CD_01_2002.iso
/
APP
/
TRAIL_PG
/
GEMJING
/
GEMJ136.LZH
/
Doc
/
gemjing.txt
< prev
Wrap
Text File
|
2000-06-01
|
35KB
|
926 lines
GEMJing-Dokumentation
V.1.36
2000-06-01
von
Götz Hoffart
Inhaltsverzeichnis
==================
1 Rechtliches
2 Was tut es?
3 Einsatzmöglichkeiten
4 Für Programmierer
4.1 VA_START-Übergabe
4.2 Kommandozeilenstart
4.3 OLGA-Start
4.3.1 Anpassung der OLGA.INF
4.4 VA_START-Nachricht
4.5 GEMJing-Returnmessage
4.6 WeirdMac
5 Tips & Tricks
6 Dank
7 Historie
1 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
E-Mail: Götz Hoffart @ FR (MausNet)
goetz@hoffart.de (Internet)
Web: http://www.hoffart.de/
Adresse: Einsteinstr. 3, 76287 Rheinstetten
Von Telefonanrufen bei obiger Adresse bitte ich dringend abzusehen.
----------------------------------------------------------------------
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.
----------------------------------------------------------------------
Copyright (c) by Götz Hoffart. Alle Rechte am Programm und der Doku-
mentation sowie den zugehörigen Dateien vorbehalten.
Autor: Götz Hoffart, Rheinstetten.
MausNet: Götz Hoffart @ FR
Internet: goetz@hoffart.de
WWW: http://www.hoffart.de/
2 Was tut es?
**************
GEMJing spielt Samples ab, bevorzugt per Fernsteuerung. Wie diese
vorgenommen werden kann, wird im Programmierabschnitt (siehe "Für Pro-
grammierer") 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
Einschränkungen (siehe "Tips & Tricks")).
Die Einsatzmöglichkeiten von GEMJing reichen vom simplen Dateiviewer
bis zum Plug-In.
GEMJing läuft mit folgenden Hardwarekonfigurationen:
∙ ST, MegaST (PSG)
∙ STE, MegaSTE, TT (DMA)
∙ Falcon
∙ MagiCMac (mit WeirdMac oder MSND)
∙ MagiC-PC 6.0
∙ Hades040 und Hades060 (PSG)
∙ Hades mit der Startrack-Soundkarte, mit und ohne Clockmodul
∙ Milan mit Milanblaster
Dabei wird versucht, die jeweils maximale Qualität, die das Sound-
system 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).
Das Abspielen kann durch Drücken von Control und Links-Shift un-
terbrochen werden.
Fehlermeldungen gibt GEMJing nur aus, wenn der Benutzer den Menüein-
trag gewählt hat, um sich das Sample anzuhören. Bei Aufforderung zur
Wiedergabe per Kommandozeile oder VA_START bleibt GEMJing (für den Be-
nutzer) stumm in Sachen Fehlerrückmeldung.
3 Einsatzmöglichkeiten
***********************
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.
Bei Verwendung des Desktops Jinnee kann man GEMJing für die
gewünschten Extensionen als Applikation anmelden und in der Einga-
bezeile für die Kommandozeile "-q %$p" eingeben. Das bewirkt, da₧
GEMJing sich nach dem Spielen sofort wieder aus dem Speicher
verabschiedet.
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 ...
TOS bietet leider keinerlei Möglichkeiten, Samples über einen Be-
triebssystemaufruf 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 Für Pro-
grammierer (siehe "Für Programmierer") hilft hier weiter.
GEMJing gehört nicht in den AUTO-Ordner.
Programme können GEMJing auch über OLGA OLGA (siehe "OLGA-Start")
nachstarten lassen, was sehr bequem ist. Dazu bitte die OLGA.INF
anpassen (siehe "Anpassung der OLGA.INF").
Wer will, da₧ andere Programme GEMJing finden, der sollte die Environ-
mentvariable 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
"#_ACC C:\" oder ähnlich. Fügen Sie nun danach eine Zeile ein, in die
Sie schreiben:
#_ENV GEMJINGPATH=C:\Tools\GEMJing\GEMJing.prg
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 nicht notwendig, da₧ die
Variable gesetzt wird, aber es spart letztlich Arbeit, da die Program-
me GEMJing von alleine finden.
4 Für Programmierer
********************
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öglich-
keiten:
∙ Start und Übergabe einer VA_START-Nachricht (siehe "VA_START-
Übergabe")
∙ Start mit Übergabe einer Kommandozeile (siehe "Kommandozei-
lenstart")
∙ Über OLGA (siehe "OLGA-Start")
∙ Über GEMScript (das OPEN- und QUIT-Kommando wird unterstützt)
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:
#_ENV GEMJINGPATH=D:\Tools\GEMJing\GEMJing.prg
----------------------------------------------------------------------
4.1 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 Para-
metern 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.
-q Quit. Das Sample wird abgespielt und unmittelbar im Anschlu₧
an das Ende des Samples beendet sich das Programm selbstän-
dig.
-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 ent-
spricht dies "-r1". Wertebereich für x: [0; 32000]
-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]
-mx Spielen aus dem Speicher (-m für Memory). x steht für einen
Ausdruck der Form "a,b", wobei "a" die Adresse als Dezimal-
zahl 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.
Der Speicher mu₧ natürlich global alloziert sein, d.h.
Mxalloc(menge, 0 | MGLOBAL), damit GEMJing auch in Systemen
mit Speicherschutz darauf zugreifen darf.
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.
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.
Wenn ein Sample plötzlich gestoppt werden mu₧, so ist GEMJing das
MiNT-Signal "SIGUSR1" zu schicken.
Nach einem VA_START (siehe "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.
4.2 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.
-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.
-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 ent-
spricht dies "-r1". Wertebereich für x: [0; 32000]
-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" ange-
geben, so wird "-d0" verwendet. Wertebereich für x: [0;
32000]
-p Plain. GEMJing startet und bleibt im Speicher, zeigt jedoch
keine Menüzeile an. Achtung: Nur als Kommandozeilenparameter
erlaubt!
-mx Spielen aus dem Speicher (-m für Memory). x steht für einen
Ausdruck der Form "a,b", wobei "a" die Adresse als Dezimal-
zahl 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.
Der Speicher mu₧ natürlich global alloziert sein, d.h.
Mxalloc(menge, 0 | MGLOBAL), damit GEMJing auch in Systemen
mit Speicherschutz darauf zugreifen darf.
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.
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ückmel-
dung vorliegt, da₧ es nicht mehr spielt. AES-Messages kann man als
TOS-Programm ja nicht verschicken.
Wenn ein Sample plötzlich gestoppt werden mu₧, so ist GEMJing das
MiNT-Signal "SIGUSR1" zu schicken.
4.3 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 anzupassen (siehe
"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.
4.3.1 Anpassung der OLGA.INF
-----------------------------
Unter "[Extensions]" sind die folgenden sieben Einträge hinzuzufügen:
.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
Den Abschnitt "[Types]" kann man wie folgt ergänzen:
MU=C:\Programme\GEMJing\GEMJing.PRG
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.
4.4 VA_START-Nachricht
=======================
Hier eine Beispiel-VA_START-Nachricht, wie sie an GEMJing verschickt
werden kann. Daraufhin erhält man AV_STARTED sowie GEMJING_RETURN
(siehe "GEMJing-Returnmessage").
----------------------------------------------------------------------
#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 ;
}
----------------------------------------------------------------------
4.5 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 nicht beginnt. Je nach auf-
rufender Applikation und Fehlermeldung sollte der Fehler dem Benutzer
mitgeteilt werden.
----------------------------------------------------------------------
/* 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
----------------------------------------------------------------------
4.6 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.
5 Tips & Tricks
****************
Mein GEMJing will nicht spielen, es bleibt einfach stumm!
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).
∙ 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.
∙ Das Soundsystem ist bereits von einem anderen Programm in Be-
schlag genommen und daher gesperrt, so z.B. wenn gleichzeitig
Zeig's mir läuft und dort ein Sample geladen ist.
∙ 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.
∙ Es ist nicht genug Speicher vorhanden, um das Sample zu laden.
∙ Das Format des Samples ist unbekannt und wird nicht unterstützt
(das ist leider relativ oft der Fall, viele Programme schreiben
sehr seltsame Header).
----------------------------------------------------------------------
GEMJing will nicht unter MagiC-PC 1.3 spielen!
Ein Update auf MagiC-PC 6.0 hilft. Ab dieser Version wird die
Soundausgabe via XBIOS unterstützt.
----------------------------------------------------------------------
Habe ich Crazy Sounds installiert, so spielt GEMJing nicht.
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.
----------------------------------------------------------------------
Mein Sample wird zu langsam oder zu schnell gespielt.
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: Be-
nutzen Sie statt MSND besser WeirdMac ab Version 0.64 von Thorsten
Pohlmann, das eine freie Frequenzwahl ermöglicht.
----------------------------------------------------------------------
Mein Sun/NeXT-Sample wird nicht abgespielt, obwohl GEMJing das doch
können sollte!
Sun/NeXT-Samples gibt es mit zwei Dutzend Untertypen, von denen
GEMJing derzeit nur einige unterstützt. Es wird daran gearbeitet.
----------------------------------------------------------------------
Manche meiner WAV-Samples werden nur verrauscht gespielt, man erkennt
nichts.
Microsoft hat ein WAV-Format definiert, das gepackt vorliegt. GEMJing
kann diese Samples derzeit noch nicht entpacken.
----------------------------------------------------------------------
GEMJing will nicht spielen, wenn Freedom 2 (Liberty) installiert ist
An einem Workaround wird gearbeitet. Benutzer von originaler Atari-
Hardware können von mir eine gepatchte Version erhalten, die funktio-
niert. Alle anderen müssen sich noch etwas gedulden.
6 Dank
*******
Ein herzliches Dankeschön haben sich verdient:
∙ Thomas Much - für geduldiges Betatesten (bei ihm lief's ja immer
:-) und Vorschläge.
∙ Dirk Haun - von ihm stammt die verbesserte 16 Bit nach 8 Bit
Wandlung.
∙ Alexander Clauss - für Anregungen und den Hinweis auf die SND-
FAQ.
∙ Jörg Hahne - er stellte seine Abspielroutinen für den PSG zur
Verfügung.
∙ Holger Weets, Thomas Künneth, Gerd Hofmann und Alexander Lorenz
für das Ertragen von Bombendrohungen und für Betatesting.
∙ Sven & Wilfried Behne für den verbesserten PureC-Startup-Code.
∙ Katrin Müller für das Ignorieren des nervtötenden Sample-
schnipsels ("we don't need no education"), das sie mehrere
Hundert mal unfreiwillig vorgespielt bekam.
∙ 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.
∙ Das Team von ASH, vor allem Oliver Buchmann und Volker Ritzhaupt,
für die Unterstützung.
∙ Ulrich Kaiser für beharrliches Drängen.
∙ Holger Herzog für den sinnlosen Vorschlag mit der Environ-
mentvariable, den ich so toll fand :-)
∙ Dimitri Junker für den neuen Kommandozeilenparser und die Zeit
für die Tests vor der Source-Veröffentlichung.
∙ 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 :-)
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.
7 Historie
***********
Version 1.36, 01.06.00
∙ Lizenz von Freeware zur CAT Public License geändert.
∙ Sourcen veröffentlicht.
∙ Neuer Kommandozeilenparser mit Workaround für CAB-Quoting.
Version 1.35, 07.03.99
∙ Bei sehr alten SingleTOS-Versionen konnte GEMJing beim Aufruf der
Dateiauswahl einen Absturz produzieren (ungültiger Pfad). Sollte
behoben sein.
∙ GEMJing unterstützt jetzt die StarTrack-Karte mit und ohne
Clockmodul.
Version 1.30, 07.06.98
∙ Unterstützung von MagiC-PC 6.0 mit beliebigen Frequenzen.
∙ Böser Bug bei SMP entfernt, Dank an Thorsten Otto.
∙ Neuer Kommandozeilenparameter "-p" (siehe "Kommandozeilenstart"):
GEMJing zeigt nach dem Start keine Menüzeile an, bleibt aber als
AES-Programm im Speicher. Nur für Fernsteuerung sinnvoll.
∙ Kleinere Bugfixes und Optimierungen, Debug-Code der 1.25-
Zwischenversion raus.
∙ Doku etwas überarbeitet.
∙ Kein AV_SENDKEY bei Gemini als AV-Server wg. eines Bugs in
Gemini.
Version 1.25, 04.04.98
∙ Messeversion Neuss
∙ WAV-Einleseroutine fehlertoleranter
∙ Bugs bei AVR entfernt (Stereo-16-Bit)
∙ Ferngesteuertes Abspielen geht nun auch aus einem Speicherbereich
heraus, siehe Programmierdoku (siehe "Für Programmierer").
∙ GEMJing spielt auch auf dem Hades040, trotz der z.T. grob fehler-
haften Cookies. Dank an Holger Herzog @ ZW für die
Testmöglichkeit auf dem CETiK '98.
Version 1.06, 15.10.97
∙ Fremdsprachliche Versionen: Philippinisch von Christian Marcelo,
italienisch von Tiziana Marotta.
∙ Kleinere Bugfixes und Korrekturen in der Hinsicht auf alternative
Systemfonts.
∙ Bessere Unterbrechbarkeit (CTRL-Shift) auch während eines Delays.
Version 1.05, 04.10.97
∙ 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.
Koordination: Markus Müller.
∙ Fremdsprachliche Dokumentationen: Französisch von Olivier
Booklage, Englisch von Uwe Lehmann.
∙ Atari-Messe-Neuss-Edition.
Version 1.04, 04.09.97
∙ Es wird nun nicht nur unter MagiC performanceneutral zwischen den
Samples gewartet, sondern auch unter N.AES und anderen Betriebs-
systemen, die Fselect() unterstützen.
∙ 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 :-)
∙ WDIALOG wird nicht mehr benötigt. Der fehlende Fensterdialog ist
hoffentlich zu verschmerzen.
∙ AV_SENDKEY eingebaut. Tastendrücke, die GEMJing nicht selbst
auswertet, werden nun an den AV-Server weitergeleitet.
∙ GEMScript Rel. 0.8 wird unterstützt: OPEN und QUIT.
∙ Eine französische Version ist verfügbar, Dank an Olivier Booklage
und Jo Vandeweghe.
∙ GEMScript-Kommando "QUIT" wird zusätzlich zu "OPEN" unterstützt.
∙ Bug bei Kommandozeilenübergabe bei SingleTOS raus (Dank an Peter
Melzer).
∙ SCCS-Kennung eingebaut
∙ GS_INFO-Extension korrigiert
Version 1.03, 15.07.1997
∙ Eine englische Version ist verfügbar, Dank an Uwe Lehmann.
∙ sleep als evnt_timer-Ersatz für TTP-Start: damit funktioniert der
Parameter "-d" nun auch bei Start als non-GEM-Programm.
∙ OLGA-Server-Funktionalität eingebaut
∙ GEMScript implementiert, Kommando "OPEN" wird verstanden
∙ GS_COMMAND korrigiert, Dank an Alexander Barton
∙ AP_TERM-Unterstützung wird angemeldet
∙ böser Bug bei OLGA-Initialisierung raus - Dank an Olivier
Booklage
∙ OLE_EXIT wird versandt
∙ einige Verschlankungen: geringerer Speicherverbrauch
Version 1.00, 24.03.1997
∙ Erste von mir veröffentlichte Version.