@DATABASE "SoundJunkie.guide"
@AUTHOR "George Hornmoen (deimos@fundy.net)"
@SMARTWRAP
@$VER: SoundJunkie.guide 1.3 (24/03/1998) (Copyright 1998 by George Hornmoen)
@INDEX "MAIN"
@NODE "MAIN" "SoundJunkie"
@{CODE}@{JCENTER}
@{B}@{APEN 2}@{BPEN 3} S·o·u·n·d J·u·n·k·i·e @{BPEN 0}
@{APEN 1}
Version 1.3 (23/03/1998)
© 1998 by George Hornmoen
@{UB}
@{APEN 2}Index
@{B}=====@{UB}@{APEN 1}

@{"     Introduction      " LINK "Intro"}
@{"     Requirements      " LINK "Require"}
@{"     Installation      " LINK "Install"}
@{"        Usage          " LINK "Usage"}
@{"     Configuration     " LINK "Config"}
@{"     Supported SW      " LINK "Support"}
@{"      Submissions      " LINK "Submission"}
@{"     Future Plans      " LINK "Future"}

@{"       Author          " LINK "Author"}
@{"      DISCLAIMER       " LINK "Disclaimer"}
@{"     Distribution      " LINK "Distribution"}
@{"       History         " LINK "History"}
@{"       Credits         " LINK "Credits"}

@{APEN 2}This program is @{"E-mailware" LINK "Author"}!@{APEN 1}

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Intro" "Introduction"
@{CODE}@{JCENTER}@{APEN 2}Introduction@{APEN 1}
@{JLEFT}
@{BODY}
SoundJunkie is a sound daemon for the Amiga OS.  It runs as a background task
and relies upon other programs to send it messages. Once a message is receieved,
SoundJunkie then identifies it, and plays the corresponding sample (if one is
configured for this requester / event type).  As SoundJunkie is 100% event driven,
it only requires a little CPU time while playing a sound sample.

@{PAR}Currently, SoundJunkie streams uncompressed IFF samples off the HD.  While this
works fine in most situations the sound @{B}may@{UB} become "broken up", if streaming off a slow
IDE drive (if this happens to you, please contact @{"me" LINK "Author"}).  To remedy this problem,
a sample buffer may be added to a future revision of SoundJunkie.  Please see the
@{"future plans" LINK "Future"} section for more details.

@{PAR}Software which SoundJunkie supports can be found in the @{"supported SW" LINK "Support"} section.
If you have a program which you want to liven up, or are interested in writing
a program to patch other events (such as window openings, etc.), please contact
@{"me" LINK "Author"}, as I would love to expand SoundJunkies usefulness.

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Require" "Requirments"
@{CODE}@{JCENTER}@{APEN 2}Requirements@{APEN 1}
@{JLEFT}
@{B}Minimum Requirements@{UB}

· OS2.1+
· Approximately 40K of HD space

@{B}Recommended System@{UB}

An Amiga with a usable operating environment.  To me that means the following:
· OS3.1
· at least a 25Mhz 030
· 2 Megs of CHIP RAM
· 8 Megs+ of FAST RAM
· Graphics Card with either Picasso96 or CyberGraphX

@{B}NOTE@{UB}: You are also @{B}@{I}encouraged @{UB}@{UI}to e-mail @{"me" LINK "Author"} if you like this program.
Additionally all comments, suggestions and requests are welcome.

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Install" "Installation"
@{CODE}@{JCENTER}@{APEN 2}Installation@{APEN 1}
@{JLEFT}
To install SoundJunkie on your system, perform the following steps:

1 - Copy the SoundJunkie directory to a location on your HD.  Copy the executable
    appropriate to your processor (eg, either the generic 68000 version or the 020+ version)
    to "SoundJunkie".  This directory contains the two executables, the documentation, and
    the example configuration file.

2 - (OPTIONAL) You may want to add this directory to your search path, to make
    usage of "NotifyJunkie" easier.  If you do not know how to expand your
    search path, please refer to your AmigaDOS manual and look up the "PATH"
    command.

3 - Create a configuration file, as described in the @{"configuration" LINK "Config"} section.

4 - Run the main server "SoundJunkie" as described in the @{"usage" LINK "Usage"} section.
    To install SoundJunkie permanently on your system, enter the following line
    (anywhere) in your User-Startup file:

    @{APEN 2}run >nil: SoundJunkie <configuration file>

@{APEN 1}@{B}PLEASE NOTE@{UB}: A future release of SoundJunkie will include an Installer script
for easy installation.

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Config" "Configuration"
@{CODE}@{JCENTER}@{APEN 2}Configuration File@{APEN 1}
@{JLEFT}
SoundJunkie is configured via a text file.  A GUI configuration client may be available
in the future.

Currently SoundJunkie differentiates several different types of requesters that @{"KeyReq" LINK "Support"}
patches.  If you have a suggestion for a requester "type" then please see the @{"submission" LINK "Submission"} section.

@{PAR}@{APEN 2}Configuration File:
===================
@{APEN 1}
The configuration file is comprised of several keyword - value pairs with optional
comments.  The format for this pair is:

@{APEN 2}    <keyword> <value> ; optional comment @{APEN 1}

Some correct examples are:
@{APEN 2}
  ; This is a comment (using the standard AmigaDOS delimiter)

  ERROR_READWRITE Samples:system/readwrite.iff      ; A valid configuration keyword

  ERROR_READWRITE      Samples:system/readwrite.iff ; You can use multiple spaces or
                                                    ; tabs if you wish.  Leading and
                                                    ; trailing whitespace are ignored.

  ERROR_READWRITE = Samples:system/readwrite.iff    ; The '=' is used as a delimiter,
                                                    ; and ignored

  ERROR_READWRITE_ID write protected                ; Whitespace is allowed.

@{APEN 1}
Some incorrect examples are:

@{APEN 2}
  Error_READWRITE Samples:system/readwrite.iff      ; This is WRONG, keywords are case
                                                    ; sensitive, and must be in CAPS.
@{APEN 1}
For a complete example, please refer to the accompanying "junkie.config" configuration file.

@{JCENTER}@{U}                                                                                @{UU}


@{APEN 2}Keywords
@{JLEFT}
@{APEN 2}Daemon Values:
@{APEN 2}@{B}==============@{UB}
@{APEN 1}(These keywords are case sensitive, and must be capitalised)

The following values configure the global characteristics of SoundJunkie.

@{APEN 4}DAEMON_VOLUME      : @{APEN 1}Use a system wide volume level?
                     [1 = YES, 0 = NO <default>]

                     This directive tells SoundJunkie whether or not you want to play
                     all samples at the same level (as specified by the VOLUME_LEVEL
                     directive).  The default as of 1.1 is to read the volume level
                     out of the sample header.

@{APEN 4}VOLUME_LEVEL       : @{APEN 1}The system wide volume level.
                     [Valid range is 0 to 64]

                     This directive sets the system wide volume level for SoundJunkie.
                     As it currently relies upon the Paula chip for sound, the valid range
                     is 0 to 64.

@{APEN 2}Requester Types:
@{APEN 2}@{B}================@{UB}
@{APEN 1}(These keywords are case sensitive, and must be capitalised)

The following keywords specify the sample to be played (eg a file name) when this type
of requester appears.  The user should insure that the file actually exists, and that it
is a valid IFF sample.  SoundJunkie currently does not check to see if the file
exists, or verify that it is a valid sample.

@{APEN 4}ERROR_READWRITE    : @{APEN 1}Sample for the WB "Read/Write Error" Requester.

@{APEN 4}ERROR_TASK         : @{APEN 1}Sample for the "Task Held" Requester.

@{APEN 4}WARN_DELETE        : @{APEN 1}Sample for the "WB Delete Warning" Requester.

@{APEN 4}WARN_PRINTER       : @{APEN 1}Sample for the "Printer Trouble" Requester.

@{APEN 4}WARN_REBOOT        : @{APEN 1}Sample for "Reboot Warning" Requesters (tested with PicassoModeTNG, and ScreenTab).

@{APEN 4}WARN_VOLUME        : @{APEN 1}Sample for the WB "Insert Volume" Requester.

@{APEN 4}WARN_WRITE         : @{APEN 1}Sample for the WB "Write Protected" Requester.

@{APEN 4}WARN_GENERAL       : @{APEN 1}Sample for generic warning requesters (1 button).

@{APEN 4}QUERY_GENERAL      : @{APEN 1}Sample for generic query requesters (2 or more buttons).

@{APEN 4}APP_VERSIONWB      : @{APEN 1}Sample for the VersionWB program.

@{APEN 4}APP_FORMATWARN     : @{APEN 1}Sample for WB's Format Warning requester.


@{APEN 2}Requester ID Strings:
@{APEN 2}@{B}=====================@{UB}
@{APEN 1}(These keywords are case sensitive, and must be capitalised)

The following keywords specify a string (without quotes!) to attempt to match
against a requester body.  These values are all optional, and if any of them are
not specified, then SoundJunkie will use the built-in default value.  These
values are included in SoundJunkie so that non-English systems can be configured
for SoundJunkies full effect.  English users should not require these values, the
default values should work in all instances.

@{APEN 4}ERROR_READWRITE_ID : @{APEN 1}ID string for the ERROR_READWRITE Requester.

@{APEN 4}ERROR_TASK_ID      : @{APEN 1}ID string for the ERROR_TASK Requester.

@{APEN 4}WARN_DELETE_ID     : @{APEN 1}ID string for the WARN_DELETE Requester.

@{APEN 4}WARN_PRINTER_ID    : @{APEN 1}ID string for the WARN_PRINTER Requester.

@{APEN 4}WARN_REBOOT_ID     : @{APEN 1}ID string for the WARN_REBOOT Requester.

@{APEN 4}WARN_VOLUME_ID     : @{APEN 1}ID string for the WARN_VOLUME Requester.

@{APEN 4}WARN_WRITE_ID      : @{APEN 1}ID string for the WARN_WRITE Requester.

@{APEN 4}APP_VERSIONWB_ID   : @{APEN 1}ID string for the APP_VERSIONWB Requester.

@{APEN 4}APP_FORMATWARN_ID  : @{APEN 1}ID string for the APP_FORMATWARN Requester.

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Usage" "Usage"
@{CODE}@{JCENTER}@{APEN 2}Usage@{APEN 1}
@{JLEFT}
The SoundJunkie package is comprised of two programs, the main server
"SoundJunkie" and the user control client "NotifyJunkie". Currently these two
programs @{B}MUST@{UB} be run from a SHELL, they do not support WB execution
yet. ToolType support will be present in a future version of SoundJunkie.

@{B}SOUNDJUNKIE@{UB} - Main sound server.

@{APEN 2}Format      :@{APEN 1} SoundJunkie [DEBUG] [VERBOSE] <prefs file>
@{APEN 2}Template    :@{APEN 1} D=DEBUG/S, V=VERBOSE/S, P=PREFSFILE/F/A
@{APEN 2}Description :@{APEN 1}

  D=DEBUG/S     - SoundJunkies default mode is to show only error messages.  If this SWITCH
                  is set, SoundJunkie will display the message body it is currently
                  trying to match against (complete with line breaks), and places a
                  '[' and ']' around the message body.

                  Additional debugging information will be added in future revisions.

  V=VERBOSE/S   - SoundJunkie defaults to only showing error messages.  If this SWITCH
                  is set, SoundJunkie will display it's configuration upon execution
                  and rescans, and confirms reciept of non-play messages.

  P=PREFSFILE/F - This argument @{B}must@{UB} be supplied, and it must contain the full path
                  to the file for SoundJunkie to configure itself.


@{B}NOTIFYJUNKIE@{UB} - User command client.

@{APEN 2}Format      :@{APEN 1} [VERBOSE] <RESCAN | TEST | QUIT>
@{APEN 2}Template    :@{APEN 1} V=VERBOSE/S, R=RESCAN/S, T=TEST/S, Q=QUIT/S
@{APEN 2}Description :@{APEN 1}

  V=VERBOSE/S - By default, NotifyJunkie only shows error messages.  If this SWITCH is
                set, NotifyJunkie will display messages when sending messages to
                SoundJunkie, and during the configuration test mode.

  One of the following SWITCHES should always be present:

  R=RESCAN/S  - This SWITCH will make SoundJunkie rescan it's preferences file.  This is very
                useful if you edit the preferences file, and then test the changes. With other
                programs (such as UPD), you would have to reboot your machine for the changes
                to be recognised.

  T=TEST/S    - This SWITCH informs SoundJunkie to go into "test" mode. Once in test mode, it will
                play the first 2 seconds for each requester type, so you can tell if a sample is
                configured for that requester or not.  This operation is much more useful if you use
                the V=VERBOSE/S SWITCH.

  Q=QUIT/S    - This SWITCH informs SoundJunkie to release the memory it is
                using, and exit gracefully.

  If you forget to include one of the above three switches, NotifyJunkie will
  default to the RESCAN operation (the least dangerous of the three).

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Support" "Supported Software"
@{CODE}@{JCENTER}@{APEN 2}Supported Software@{APEN 1}
@{JLEFT}
Currently SoundJunkie supports the following Software packages / patches:

· KeyReq by Georg Steger (Aminet - util/boot/KeyReq.lha)

If you want to add sound support to an OS patch (or another program), please
contact @{"me" LINK "Author"}, I will be happy to help.

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Submission" "Submissions"
@{CODE}@{JCENTER}@{APEN 2}Submissions@{APEN 1}
@{JLEFT}
If you feel that a certain requester type should be given it's own sample,
please feel free to contact @{"me" LINK "Author"}.  Please make sure to do the following:

· Confirm that the requester is patched by @{"KeyReq" LINK "Support"}.  If KeyReq has not patched
  the requester, then it is unable to send SoundJunkie a message.
· Include the @{B}EXACT@{UB} message body of the requester.  This is used for
  requester identification.
· Include the number of buttons the requester has.  This can be used for
  further identification in some cases.

Additionally, all bug reports, questions, suggestions, etc. are welcome.  Feel
free to e-mail @{"me" LINK "Author"}.

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Future" "Future Plans"
@{CODE}@{JCENTER}@{APEN 2}Future Plans@{APEN 1}
@{JLEFT}
What does the future hold for SoundJunkie?  Here are some plans (in order of
priority):

· WB Support via ToolTypes (for both "SoundJunkie" and "NotifyJunkie").
· Installation script.
· Possible Sample Buffer.
· Dynamic loading of @{B}different@{UB} configuration files.
· Locale support.
· AHI version (separate from the standard Paula version).
· GUI preference editor.

If you see something on this list that you like, or can think of something else,
please feel free to e-mail @{"me" LINK "Author"}.  These new features will be added
faster if I know people are actually using SoundJunkie.

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Author" "Author"
@{CODE}@{JCENTER}@{APEN 2}About The Author
@{JLEFT}

@{APEN 2}Address     :@{APEN 1} George Hornmoen
              339 York Street
              Apartment #16
              Fredericton, NB
              E3B 3P5
              Canada

@{APEN 2}EMail       :@{APEN 1} ghornmoe@asg.unb.ca
              deimos@fundy.net
@{APEN 2}HTTP        :@{APEN 1} http://www.deimosdesign.home.ml.org
              (http://user.fundy.net/deimos)
@{JCENTER}@{U}                                                                                @{UU}

@{CODE}@{JCENTER}@{APEN 2}Development System
@{JLEFT}
@{APEN 1}SoundJunkie was developed with StormC 3.0 on the following system:

@{APEN 2}Machine     :@{APEN 1} A4000 Desktop
              OS3.1
              CS PPC 604e @ 200Mhz / 68040 @ 25MHz
              2 Megs Chip, 48 Megs Fast
              Picasso IV Graphics Card
              125 Meg & 1.7 Gig IDE HDs
              12X external CD-ROM
              Spitfire SCSI II controller
              NEC 3D MultiSync monitor
              14.4k GVC fax modem
              DSS8+ sound sampler

@{APEN 2}Environment :@{APEN 1} DOpus Magellan (WBRM), PicassoIV: 800x600 - 16bit (ProLite/NewIcon palette),
              Picasso 96 RTG Software (V1.37), CShell, MUI 3.8, ScreenTab, SoundJunkie

@{APEN 2}Patches     :@{APEN 1} PatchControl, MCP, KeyReq, VisualPrefs

Also the Author of: /game/demo/SGrabs.lha (Aminet)
                    /util/cli/ReqReboot.lha (Aminet)

@ENDNODE

@REMARK------------------------------------------------------------------------

@NODE "Disclaimer" "DISCLAIMER"
@PREV "Author"
@{CODE}@{JCENTER}@{APEN 2}DISCLAIMER@{APEN 1}
@{JLEFT}
@{BODY}THERE IS NO WARRANTY FOR THE SOFTWARE TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHERE OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
@{PAR}
@{PAR}IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE SOFTWARE AS
PERMITTED BELOW, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
SOFTWARE TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
@{PAR}
@{PAR}Gateway2000 and AMIGA International are NOT liable for any claims, damages or
liabilities resulting from or arising out of use of its Installer.
@{PAR}
@{PAR}Installer and Installer project icon © Copyright 1997 Gateway 2000. All Rights
Reserved. Reproduced and distributed under license from Gateway 2000.
@{PAR}

@ENDNODE

@REMARK------------------------------------------------------------------------

@NODE "Distribution" "Distribution"
@{CODE}@{JCENTER}@{APEN 2}Distribution@{APEN 1}
@{JLEFT}
@{BODY}SoundJunkie may be freely distributed and reproduced by any
means (solely for Amiga computers) provided no more than a minimal fee (of
$2US) is charged.
@{PAR}
@{PAR}The related documentation, executables, and any other files related to the
Amiga version of SoundJunkie provided by the @{"author" LINK "Author"} may @{B}only @{UB}
be reproduced or distributed as a complete and unmodified archive as provided by the
@{"author" LINK "Author"}.
SoundJunkie may be included on CD-ROM compilations such as the Fred Fish or Aminet
series.
@{PAR}
@{PAR}@{B}Please Note@{UB}: Magazine publishers are not required to contact
@{"me" LINK "Author"} before including this program on cover disks / CD's
provided I am accredited for my work.
@{PAR}
@{PAR}The original archive should contain the following files:

@{PAR}SoundJunkie       1.3 (Main executable, 68K optimised version)
@{PAR}NotifyJunkie      1.3 (Control executable)
@{PAR}SoundJunkie.guide 1.3 (AmigaGuide documentation)
@{PAR}Junkie.config     N/A (Example configuration file)
@{PAR}
@{PAR}Please see the @{"disclaimer" LINK "Disclaimer"}!

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "History" "History"
@{CODE}@{JCENTER}@{APEN 2}History
@{JLEFT}@{APEN 1}
V1.0 - Initial public release (02/02/1998):

V1.1 - Small update:

       - Added DAEMON_VOLUME and VOLUME_LEVEL directives to SoundJunkie (requested by Mark A. Loyd).
       - Added full sample names to VERBOSE TEST mode in NotifyJunkie.
       - Update documents.

V1.2 - Internal update:

       - Cleaned up code.

V1.3 - Public Release (23/03/1998):
         (took an evening out from M&M to do the following...)

       - Added new requester types, REQ_APP_VERSIONWB and REQ_APP_FORMATWARN.
       - Added ID strings to support non-English users.
       - Expanded verbose information in both SoundJunkie and NotifyJunkie.
       - Update documents and example configuration file.

@ENDNODE

@REMARK -----------------------------------------------------------------------

@NODE "Credits" "Credits"
@{CODE}@{JCENTER}@{APEN 2}Thanks to...
@{JLEFT}@{APEN 1}
· Georg Steger for KeyReq.
· Markus Castern, Eddie Collins, Richy Hammond, Trevor Morris, and Chris Page
  for all of the fun working on our games.
· Several of my friends whom include Chris Cote, Tom Mersereau, Ben Steeves, and
  Dave Zwicker for suggestions, etc..

  Keep an eye out for our up coming games, "Explorer 2260" and "Maim & Mangle"
  published by Vulcan Software!

@ENDNODE

