home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1998 February / PCOnline_02_1998.iso / filesbbs / dos / nbeta087.exe / PAGEPLAY.DOC < prev    next >
Text File  |  1996-02-04  |  33KB  |  711 lines

  1.  
  2. PagePlay 1.34 (C) Copyright 1991,1994 Whirlwind Software
  3. Documentation (C) Copyright 1991,1994 Whirlwind Software
  4.  
  5. Program and documentation written by Gerald T. Albion
  6.  
  7. Date of Issue:
  8.  
  9.         March 27, 1994
  10.  
  11. Notice:
  12.  
  13.         NO WARRANTY!
  14.  
  15.         Gerald Albion and Whirlwind Software assume no responsibility
  16.         whatsoever for any damage or loss caused by the use of PagePlay.
  17.         By using PagePlay you assent to this condition and absolve
  18.         Gerald Albion and Whirlwind Software of all liability for your
  19.         use of PagePlay.
  20.  
  21.         PagePlay may not be "re-packaged" or "re-archived" in any way.
  22.         If you receive this archive in anything other than a ZIP
  23.         envelope, please report this to the author either at the address
  24.         below or on the BBS listed at the end of this file.  PagePlay
  25.         may not be included on a CD-ROM or for-sale shareware disk
  26.         without the express written consent of the author.  PagePlay may
  27.         not be uploaded to Big Blue & Cousins BBS (Victoria, B.C.) under
  28.         any circumstances.
  29.  
  30.         PagePlay is not crippled or disabled in any way.  It is
  31.         distributed on the "honour system" as shareware.  If you like
  32.         and use PagePlay, please help make the shareware concept work,
  33.         and send $5 to the following address:
  34.  
  35.                 Whirlwind Software
  36.                 P.O. Box 480 South Joffre
  37.                 Victoria, British Columbia
  38.                 Canada V9A 6C8
  39.  
  40.         If you send $12 (U.S. Funds) and your address, you will receive
  41.         the full retail PagePlay package including the 17-page manual!
  42.         This low, low price includes shipping within North America!
  43.  
  44.         Because PagePlay is uncrippled, there is no "key" file to be
  45.         mailed, but if you include your Fidonet or Internet address with
  46.         your registration, you'll get a note of thanks and confirmation
  47.         of receipt.
  48.  
  49.  
  50.  
  51. Purpose:
  52.  
  53.         PagePlay originated as a tiny program which could play sound
  54.         files written for the SysOp Page function of RemoteAccess(tm)
  55.         BBS version 0.03 or later.  It now serves two purposes: (1) to
  56.         give the page-music experimenter a more convenient way to test
  57.         and debug his/her creations, and (2) to allow sysops of any BBS
  58.         (that allows DOS drops) to use existing RemoteAccess PAGE.RA
  59.         files, Maximus TUNES.BBS files, and (best of all) the
  60.         more-advanced *.PPL files such as those included in PagePlay's
  61.         distribution archive.
  62.  
  63.         PagePlay is 100% command-compatible with UFO Communications Engine.
  64.  
  65. Usage:
  66.  
  67.   PAGEPLAY <filename.ext> <User's name 1> <Name 2> .. <Name X> <-d> <-mMaxTune>
  68.  
  69.         PagePlay normally requires that you enter the full filename with
  70.         extension.  If no extension is provided, PagePlay assumes .PPL.
  71.         If no .PPL file exists, PagePlay will search for a .RA file.  If
  72.         there is neither .RA file nor a .PPL file, PagePlay searches for
  73.         a file with no extension.  If none of these exist, PagePlay will
  74.         abort with an error.
  75.         If no extension is provided, but a dot is provided, PagePlay assumes
  76.         no extension.
  77.  
  78.         You may specify a User Name with as many names as you require.  If you
  79.         specify a user name, a message will appear:
  80.  
  81.                 "You are being paged by ____ _______ "
  82.  
  83.         ...where the ____ _______ would actually be the specified user name.
  84.  
  85.         For the convenience of operators of Maximus-CBCS, PagePlay will strip
  86.         any name that is "NLN".  "NLN" is what Maximus generates when a user
  87.         has no last name, e.g. a one-word pseudonym.  Since most users and
  88.         sysops agree that NLN is pretty ugly, it is stripped.
  89.  
  90.         If no user name is specified on the command line, then no message
  91.         is displayed except the copyright notice.
  92.  
  93.         The -D optional switch enables "Debug Mode."  Debug mode is
  94.         useful for locating individual notes within a large music file.
  95.         When Debug mode is enabled, striking ESC to abort the tune will
  96.         produce an abort message with the line number of the note where
  97.         the abort occurred.
  98.  
  99.         The -M optional switch specifies Maximus Mode.  In Maximus mode,
  100.         PagePlay will assume a Maximus-style TUNES.BBS file structure,
  101.         in which any number of tunes can exist and be called
  102.         independently.  The -m and its parameter must be a single
  103.         string, e.g. -mMarseillaise.  The parameter is the name or "Yell
  104.         Number" of the tune within your Tunes.Bbs that you wish to
  105.         invoke.  If a number is specified instead of a name, PagePlay
  106.         assumes that the number represents a "Yell" name such as Yell1,
  107.         Yell2, Yell6, etcetera.  These names are not special in any way
  108.         except that Scott Dudley has chosen to include them as alternate
  109.         names in Maximus' sample TUNES.BBS file.  The parameter is case
  110.         insensitive.
  111.  
  112. Examples:
  113.  
  114.         PAGEPLAY PAGE.RA
  115.         PAGEPLAY DROID.PPL
  116.         PAGEPLAY DROID
  117.         PAGEPLAY TEST9 Uncle Ernie
  118.         PAGEPLAY QUINT -d
  119.         PAGEPLAY TUNES.BBS /m3
  120.         PAGEPLAY TUNES.BBS /mtinkle
  121.         PAGEPLAY PAGE
  122.  
  123.         The first example would play the current RemoteAccess Page Music
  124.         file (if any is present).
  125.  
  126.         The second and third examples both play DROID.PPL.
  127.  
  128.         The fourth example plays TEST9.PPL and informs the sysops that
  129.         a user named Uncle Ernie is paging them.
  130.  
  131.         The fifth example plays QUINT.PPL and will display a line number
  132.         if it is aborted.
  133.  
  134.         The sixth and seventh examples each play individual tunes from
  135.         within a TUNES.BBS file.  The sixth example will play the tune
  136.         labelled Yell3, and the seventh example will play the tune
  137.         labelled Tinkle.
  138.  
  139.         The last example looks for PAGE.PPL.  If it does not find it, it
  140.         looks for PAGE.RA.  If it finds PAGE.RA, PAGE.RA is played.
  141.  
  142. General Notes:
  143.  
  144.         A song being played can be stopped at any time by striking
  145.         ESCAPE.  If debug mode is enabled with the -D command-line
  146.         switch, the line number will be displayed.
  147.  
  148.         As of version 1.33, holding either SHIFT key during play
  149.         temporarily puts PagePlay in "Fast Forward" mode until you
  150.         release the key.
  151.  
  152.         All of the commands listed below, and most of their parameters,
  153.         can be abbreviated to just their first character.
  154.  
  155.         PagePlay is oblivious to DesqView and other multi-taskers.  It
  156.         has been tested under DesqView and shown no particular hostility
  157.         towards DesqView, although PagePlay's own performance may be
  158.         affected by the use of a multi-tasker.
  159.  
  160.         If you are experiencing short "gaps" or pauses in PagePlay's
  161.         musical output, and you are not using a multi-tasker, it could
  162.         be that the disk from which you are reading the music file is
  163.         slow.  Try optimising your hard disk with one of the many
  164.         de-fragmenters available, and, failing that, try placing your
  165.         music file(s) on a RAMDisk, where there should be no such
  166.         delays.  TSRs can also affect PagePlay's performance.
  167.  
  168.         PagePlay will ignore anything after the fortieth column in a
  169.         line.  Since most of PagePlay's commands can be abbreviated to
  170.         one letter, this should not pose a problem.  Comments, of
  171.         course, can be as wide as 255 columns.
  172.  
  173. File Format:
  174.  
  175.         Please consult your Maximus documentation for information on the
  176.         TUNES.BBS File structure.
  177.  
  178.         PagePlay and RemoteAccess use raw text.  PagePlay 1.32 supports
  179.         several basic commands, with parameters.  Briefly, here they
  180.         are.
  181.  
  182.         TONE [frequency in Hz] [ticks]
  183.  
  184.            This command sounds a tone of the specified frequency for the
  185.            duration specified in the second parameter.  By default, each
  186.            "tick" is 10 milliseconds in length, for RemoteAccess
  187.            compatibility.  This command is supported by RemoteAccess.
  188.  
  189.           ╔══════╦═════════════════════════════════════════════════╗
  190.           ║      ║ Frequencies                                     ║
  191.           ║ Note ║ 0   1    2    3    4    5     6     7     8     ║
  192.           ╟──────╫─────────────────────────────────────────────────╢
  193.           ║  A   ║ 27  55   110  220  440  880   1760  3520  7040  ║
  194.           ║  Bb  ║ 29  58   116  233  466  932   1864  3729  7458  ║
  195.           ║  B   ║ 30  61   123  246  493  987   1975  3950  7901  ║
  196.           ║  C   ║ 32  65   130  261  523  1046  2092  4185  8370  ║
  197.           ║  C#  ║ 34  69   138  277  554  1108  2216  4433  8867  ║
  198.           ║  D   ║ 36  73   146  293  587  1174  2348  4697  9394  ║
  199.           ║  Eb  ║ 38  77   155  311  622  1244  2488  4976  9952  ║
  200.           ║  E   ║ 41  82   164  329  658  1317  2635  5271  10543 ║
  201.           ║  F   ║ 43  87   174  349  698  1396  2792  5584  11169 ║
  202.           ║  F#  ║ 46  92   184  369  739  1479  2958  5916  11833 ║
  203.           ║  G   ║ 48  97   195  391  783  1567  3134  6268  12536 ║
  204.           ║  Ab  ║ 51  103  207  415  830  1660  3320  6640  13281 ║
  205.           ╚══════╩═════════════════════════════════════════════════╝
  206.           These note values are approximate, especially at the low end.
  207.  
  208.         WAIT [ticks]
  209.  
  210.            This command simplay pauses with silence, for the specified
  211.            number of ticks.  This would be used for a musical rest or a
  212.            dramatic pause.  This is the only other command, aside from TONE,
  213.            which is RemoteAccess compatible (because RemoteAccess only provides
  214.            two commands).
  215.  
  216.  
  217.         MUSIC [note] [length] [dot] [3 (triplet)] [tie]
  218.  
  219.            Examples:
  220.  
  221.            Music F#3 Whole
  222.            M Eb4 Eighth 3(Triplet)
  223.  
  224.         Complete Syntax:
  225.  
  226.            [note] may be two or three characters.  If two, the first
  227.            character expresses a musical note in the range [A..G], and
  228.            the second character expresses the octave in which that note
  229.            is played, in the range [0..8].
  230.  
  231.            If [note] is three characters, the THIRD character represents
  232.            the octave.  The first character is the note, and the second
  233.            character represents the accidental - either sharp or flat -
  234.            to be applied to the specified note.
  235.  
  236.            Acceptable syntaxes: ( x is the octave in the range [0..8] )
  237.            Case is not significant.
  238.  
  239.                 Ax     D#x    Rest (or just "R")
  240.                        Ebx
  241.                 A#x
  242.                 Bbx    Ex
  243.                        Fbx
  244.                 Bx
  245.                 Cbx    Fx
  246.                        E#x
  247.                 Cx
  248.                 B#x    F#x
  249.                        Gbx
  250.                 C#x
  251.                 Dbx    Gx
  252.  
  253.                 Dx     G#x
  254.                        Abx
  255.  
  256.            Length is one or more characters, of which only the first is
  257.            significant:
  258.  
  259.            D: Double-Whole
  260.            W: Whole
  261.            H: Half
  262.            Q: Quarter
  263.            E: Eighth
  264.            S: Sixteenth
  265.            T: Thirty-second
  266.            6: Sixty-Fourth
  267.            U: Utility Duration
  268.  
  269.            The utility duration is a user-defined duration.  See the "U"
  270.            command below for details.
  271.  
  272.            When ZPEED is 10 (the Pageplay default), a whole note is
  273.            960 milliseconds (96 RA 'ticks') in duration.
  274.  
  275.            Dot is one or more characters, of which only the first is
  276.            significant.  If 'D' is the first letter of any parameter
  277.            of the M command after and including the third, the note's
  278.            length will be "dotted" or extended by half again its specified
  279.            duration.
  280.  
  281.            3(Triplet) is one or more characters, of which only the first is
  282.            significant.  If '3' is the first letter of any parameter
  283.            of the M command after and including the third, the note's
  284.            length will be treated as a triplet, or shortened to two-thirds
  285.            the specified duration.
  286.  
  287.            T (Tie) is one or more characters, of which only the first is
  288.            significant.  If 'T' is the first letter of any parameter of the
  289.            M command after and including the third, the note will be "tied"
  290.            to the following note, or in other words, the speaker will not
  291.            be turned off at the completion of this note.
  292.  
  293.            MUSIC (which may be abbreviated to M) is not supported by
  294.            RemoteAccess.
  295.  
  296.         -TIE ON
  297.         -TIE OFF
  298.  
  299.            This command may be abbreviated to -T (not just to - like
  300.            most other commands).  -TIE ON will force Tie mode to be on
  301.            full-time, overriding any TIE parameters associated with
  302.            music notes.  -TIE OFF returns Tie mode to normal - most
  303.            notes are not tied, and notes that have ties indicated are
  304.            tied.
  305.  
  306.         SWEEP ON
  307.         SWEEP OFF
  308.         SWEEP DEST [note]
  309.  
  310.            This command "sweeps" or "bends" the sound from subsequent
  311.            notes to the specified "destination" note, and automatically
  312.            assures that the sweep will take exactly the specified number
  313.            of ticks.  If the end frequency is less than the start
  314.            frequency then the sweep will be from high to low.  Use SWEEP
  315.            DEST (or S D) followed by a note (as described above under
  316.            the MUSIC command) to specify the note which following notes
  317.            will glide to.  Use SWEEP ON (or S ON) to enable the sweep
  318.            function.  Use SWEEP OFF (or S OFF) to turn sweeping off.
  319.            SWEEP can be used in conjunction with the ARPEGGIO and VIBRATO
  320.            commands below for many special effects.
  321.  
  322.         NOISE ON
  323.         NOISE OFF
  324.  
  325.            This command causes PagePlay to play subsequent notes using a
  326.            "random" noise suitable for sound effects or drum effects.
  327.            The noise's average frequency is that of the note or tone
  328.            being played.
  329.  
  330.         NOISE OLD
  331.         NOISE NEW
  332.         NOISE FACTOR [65000's-of-a-second]
  333.  
  334.            There are two modes of "noise" available: "old" and "new."
  335.            The "Old" mode is left behind from previous versions of
  336.            PagePlay for compatibility reasons.  Since it uses a HLL
  337.            pseudo-random algorithm, its noise effect is lost at
  338.            specified frequencies above 3000 Hz.  The "New" mode uses
  339.            assembly language timing to generate true white or pink
  340.            noise.
  341.  
  342.            The "Noise Factor" is the duration, in sixty-five-thousandths
  343.            of a second, between updates of the speaker frequency.  The
  344.            default noise factor is 20 (which is equal to about 306
  345.            microseconds).  On slower machines this setting may prove to
  346.            generate too much loop overhead and will thus cause tempo
  347.            distortion (noise will play slower than music).  If this is
  348.            the case, then adjust the noise factor so that it is larger.
  349.            The larger the noise factor, the slower the updates but the
  350.            lesser the overhead.  As Noise Factor increases, the noise
  351.            output by "new" noise sounds more and more like "old" noise.
  352.  
  353.         ZPEED [milliseconds per tick]
  354.  
  355.            This command lets you change the "tempo" of the piece without
  356.            changing all the note durations for every note.  By default (i.e.
  357.            if ZPEED is never used) this value is 10, so that 100 ticks
  358.            can occur each second, which is compatible with RemoteAccess.
  359.            When using this to alert you of paging users, ZPEED can be used in
  360.            a special version of your regular chat-music file to indicate
  361.            a "special" user with an increased, more "urgent" tempo.  ZPEED
  362.            can also be potentially used to aid in sculpting sound effects
  363.            not yet implemented in PagePlay...
  364.  
  365.         X-TRANSPOSE [Transposition factor]
  366.  
  367.            This command causes PagePlay's output to be raised or lowered -
  368.            "transposed" a specified number of semitones.  For example,
  369.            if you include the following command:
  370.  
  371.                                 X 12
  372.  
  373.            PagePlay will shift all tones up one octave.  Similarly:
  374.  
  375.                                 X -24
  376.  
  377.                 ...will shift all tones down two octaves.
  378.  
  379.         UTILITY:
  380.  
  381.            This command specifies the duration, in ticks, of PagePlay's
  382.            user-defined "Utility" duration.  With utility durations, you
  383.            can create durations not supported by PagePlay directly, such
  384.            as quintuplets and septuplets.  For example, to create a
  385.            construct of five eighth quintuplets which, temporally, equal
  386.            four eighths, you would calculate the number of ticks that
  387.            those four eighths would use:
  388.  
  389.                         Whole     = 96 ticks
  390.                         Half      = 48 ticks
  391.                         Half      = 4 eighths
  392.                   ergo  4 eighths = 48 ticks
  393.  
  394.                 Now divide 48 by five, to find the utility duration for
  395.                 each of your quintuplets:
  396.  
  397.                            48/5 = 9.6
  398.  
  399.                 Now, we can't have a fractional number of ticks, so we
  400.                 have some notes longer and some shorter.
  401.  
  402.                            Utility: 10
  403.                            Music C4 Utility
  404.                            Music D4 Utility
  405.                            Music E4 Utility
  406.                            Utility: 9
  407.                            Music F4 Utility
  408.                            Music G4 Utility
  409.  
  410.                 The above example shows how you can use the utility
  411.                 duration to make your quints equal 48 ticks exactly.
  412.                 There you have your quintuplet structure.  This
  413.                 principle can be applied to virtually any type of
  414.                 non-standard duration.
  415.  
  416.         VIBRATO ON
  417.         VIBRATO OFF
  418.         VIBRATO DEPTH [depth]
  419.         VIBRATO RATE [period]
  420.  
  421.            This set of commands will cause notes played to have a
  422.            vibrato quality.  The depth is the maximum frequency the note
  423.            will be allowed to deviate from the specified start
  424.            frequency.  The "rate" (rate is a misnomer; it means
  425.            "frequency" and what we are actually specifying is a period
  426.            of time, which is the reciprocal of frequency) or period is
  427.            the time required, in milliseconds, for the vibrato to
  428.            complete one frequency cycle.  The period is not affected by
  429.            the ZPEED command. The software-generated waveform which
  430.            produces the vibrato is triangular in shape.
  431.  
  432.            VIBRATO can be used in conjunction with SWEEP for effects,
  433.            but not with ARPEGGIO (Arpeggio will automatically take
  434.            precedence if both are specified).  VIBRATO is not supported
  435.            by RemoteAccess.
  436.  
  437.         ARPEGGIO ON
  438.         ARPEGGIO OFF
  439.         ARPEGGIO DEST [note]
  440.         ARPEGGIO RATE [period]
  441.         ARPEGGIO MODE ABSOLUTE
  442.         ARPEGGIO MODE RELATIVE
  443.         ARPEGGIO FACTOR [transposition factor]
  444.  
  445.            This command is very similar to VIBRATO except that the
  446.            tone being played is modulated with a square wave (technically
  447.            a pulse wave but it is square in duty-cycle) rather than
  448.            a triangle.  The result is a sound that can be made to
  449.            simulate a two-part harmony.
  450.  
  451.            The DESTination is a note following the syntax of the note
  452.            parameter of the MUSIC command above. The duration of the
  453.            tone is in ticks, and the period of each arpeggio cycle,
  454.            specified by the RATE paramter, is in milliseconds.
  455.  
  456.            The MODE parameter specifies whether Arpeggio will alternate
  457.            to an absolute note (specified by the DEST parameter) or to a
  458.            relative transposition (specified by the FACTOR parameter).
  459.            By default, Absolute mode is used.  In relative mode, you
  460.            specify the offset to the current note, in semitones.  Thus,
  461.            if you specify FACTOR to be 12, the destination will always
  462.            be one octave above the base note value.  If you specify 7,
  463.            the destination will be a seventh above.
  464.  
  465.         REPEAT [# of times]
  466.         LOOP
  467.  
  468.         Example:
  469.  
  470.            Repeat 4
  471.            Music A4 Eighth
  472.            Music A3 Eighth
  473.            Loop
  474.  
  475.         This example will "play" the two music commands a total of
  476.         four times.
  477.  
  478.            These two commands form a LOOP structure.  You may place
  479.            music commands, more structural commands or any other valid
  480.            PagePlay commands in between REPEAT and LOOP.  When PagePlay
  481.            encounters a REPEAT statement, it knows to expect a LOOP
  482.            statement somewhere further down the song.  When it
  483.            encounters the LOOP statement, it "goes back" to the line
  484.            immediately following the REPEAT, and plays the same music
  485.            again.  This continues until the music between the REPEAT and
  486.            the LOOP has been played the number of times specified in the
  487.            REPEAT parameter.
  488.  
  489.         DEFINE [block number]
  490.         END [block number]
  491.         CALL [block number]
  492.  
  493.            These commands allow you to define and call a "block" of
  494.            music - a musical sub-routine if you like.  PagePlay allows
  495.            up to 64 such blocks to be defined, and they are numbered
  496.            from 0 to 63.  A block may be re-defined elsewhere.
  497.            DEFINE and END are used to define the beginning and ending of
  498.            a particular block of music.  CALL is used later, to play a
  499.            block of music which you have previously defined.
  500.  
  501.  
  502. File Format Examples:
  503.  
  504.         Refer to the included files, "WHISTLE.PPL", "DROID.PPL",
  505.         and the TEST*.PPL files, for examples of syntax usage and
  506.         produced results.  There are many other included music files
  507.         with varying degrees of "shortcuts" in the syntax; all of them
  508.         are perfectly valid.  Note:  The "Tocatta" tune included in
  509.         TUNES.BBS is a verbatim conversion of one voice of a three-voice
  510.         SIDPlayer file, and as such is quite imperfect.  It is included
  511.         mainly to illustrate the PP2MAX and the possible size of a
  512.         TUNES.BBS tune...
  513.  
  514. Revision History:
  515.  
  516.   1.33 : Streamlined code a bit, cleaned up a few loose ends where
  517.          PagePlay could conceivably leave a note playing forever after
  518.          executing.  Documentation clarified somewhat.  A few new
  519.          musics.  Added "Fast Forward" mode - hit a shift key to
  520.          activate it.  Bundled PP2ANS, an admittedly imperfect but still-
  521.          useful utility which makes ANSi music files for your BBS!
  522.  
  523.   1.32 : Maintenance release.  Improved memory efficiency.
  524.          Documentation enhanced slightly. The 4000 line limit is now
  525.          enforced at load time to prevent crashes.
  526.  
  527.   1.3  : Extended NOISE command - including finally fixing it such that
  528.          it actually outputs true noise (more or less...).  Improved
  529.          filename intelligence considerably.  Added -TIE command for
  530.          fulltime tie mode.
  531.  
  532.   1.2  : Added Maximus-CBCS 2.xx compatibility with TUNES.BBS.  Bundled
  533.          PP2MAX, a PagePlay-to-TUNES.BBS conversion program.
  534.  
  535.   1.1  : Added a Debug Mode.  When the -D command line switch is used,
  536.          aborting the tune with Escape will cause an "Aborted at Line..."
  537.          message.  Added a "Utility Duration" which can be any number of
  538.          ticks from zero to 65535.  Added 64th notes.  Do not use them
  539.          at fast Zpeeds - Your brain might explode.  Added Transpose.
  540.          Added "relative" arpeggio (or auto-octava, auto-fifth,
  541.          auto-whatever) for automatic arpeggio destination
  542.          transposition.  Changed frequency base from A4=451Hz to
  543.          A4=440Hz.  Bundled PP2RA, a PagePlay-to-RemoteAccess
  544.          conversion program.
  545.  
  546.   1.0  : Final form of Version 1.0.  Memory is now allocated only as needed
  547.          according to the size of the file being played.
  548.  
  549.   0.36τ: Refined blocking somewhat - if no parameter is given to the
  550.   RAM    END command, the last DEF encountered is assumed to represent the
  551.          block to be ENDed.
  552.  
  553.   0.35τ: Added looping and blocking commands.  REPEAT..LOOP structure
  554.   RAM    gives an immediate loop of a finite number of iterations, while
  555.          DEFINE..END defines a block of music which can be CALLed later.
  556.  
  557.   0.29τ: Entire song is now loaded into memory first, eliminates timing
  558.   RAM    problems brought about by slow drives.  Song is played from RAM,
  559.          limit of 4000 lines set.
  560.  
  561.   0.21τ: Changed syntax of Vibrato, Arpeggio, Sweep and Noise commands.
  562.          This release of PagePlay is incompatible with the non-RA
  563.          features of previous PagePlay versions.  RA compatibility has
  564.          been preserved.  Existing RA page-music files may be enhanced
  565.          using PagePlay commands.  Streamlined even further.  Although
  566.          PagePlay's tempo may still be slowed somewhat on 4.77 MHz
  567.          machines, the tempo inconsistency between normal play and
  568.          arpeggio/vibrato notes has been eliminated.  Added a text input
  569.          buffer.  As a result, Pageplay now requires an additional 4k in
  570.          which to execute.  The buffer should reduce the frequency and
  571.          length of pauses in the music while PagePlay reads its data
  572.          from the disk, particularly on floppies or very slow hard
  573.          disks.  Sweep and Arpeggio can now be used in conjunction for
  574.          effects.  Sweep and Vibrato can now be used in conjunction for
  575.          effects.  Arpeggio continues to sound its second note even
  576.          during rests, for effects.  To get a true silent rest, arpeggio
  577.          must be turned off.  PagePlay no longer assumes a music file
  578.          extension of .RA when the extension is omitted, but now assumes
  579.          .PPL.
  580.  
  581.   0.11τ: First public release version.  Added extended note-entry commands.
  582.  
  583.   0.06ß: Generally refined and streamlined code for smaller size and faster
  584.          execution.  Should work better on slow machines now.
  585.          Completed 91/03/17 17:00.
  586.  
  587.   0.05ß: Added option to display name of user requesting chat.  The user's
  588.          name can contain as many words as necessary.  For Maximus sysops
  589.          who run pseudonym BBSes, the string 'NLN' is stripped (because
  590.          it is UG-LY!)  Completed 91/02/09 15:25.
  591.  
  592.   0.04ß: Added Arpeggio for 2 way chords.
  593.  
  594.   0.03ß: Added Vibrato.  You now have to hit ESC to abort.
  595.  
  596.   0.02α: Recompiled using Turbo Pascal 5.5 for faster execution and smaller
  597.          size.  Added key-press-to-abort.  Added bidirectional adjustable
  598.          sweeps.  Added adjustable noise.  Completed 91/02/05 23:30
  599.  
  600.   0.01α: Wrote core basic functionality of PagePlay.  First alpha release.
  601.          Completed 91/02/05 01:05
  602.  
  603. Development notes:
  604.  
  605. 1.34      Made some minor bug fixes.  Fixed an octave transposition
  606.           problem in PP2ANS.
  607.  
  608. 1.33      This is really another maintenance release, which fixes a
  609.           couple of little inconsistencies and other things which have
  610.           been picking at me since the last release a year ago.  Some of
  611.           my work from one of those projects (the TMR Adlib Music
  612.           routine) shows here in a couple of music files and a new "Fast
  613.           Forward" feature which I found indispensible in TMR.  Also, I
  614.           had been planning to include an ANSi music player/convertor in
  615.           this release but other projects have placed such a great
  616.           demand on my time that only the convertor PP2ANS is included.
  617.           It's still not perfect yet either but an X-Transpose comamnd
  618.           here or there should be sufficient to correct for most of its
  619.           problems; you'll hear what I mean when you play a converted
  620.           ANSi file.  I still think you'll find it tremendously useful
  621.           even in its buggy form.  Also you'll note that I have formed a
  622.           company for distribution of my programs; no, I haven't sold
  623.           out, you're still getting Gerald Albion's code and not some
  624.           junior schmuck at XYZ Software Conglomerated Inc.
  625.  
  626. 1.32      This is a "maintenance release" - which is Programmerese for a
  627.           "bug-fix" release.  Basically I have actually started
  628.           enforcing the 4000 line limit - previously PagePlay would just
  629.           lock the system if you tried to load a file bigger than 4000
  630.           lines.  I have also observed that I have yet to see any music
  631.           commands go past the 40th column on a line, so to save memory
  632.           I have imposed a 40-column cutoff.  This will halve the amount
  633.           of memory that a song occupies.  Yes, I know; I should just
  634.           compile the lines on-the-fly into 2-byte commands rather than
  635.           load the actual text into memory.  Maybe later.  There are a
  636.           pair of new .PPL samples included in TUNES.ARJ; enjoy...
  637.  
  638. 1.3       NOISE has finally been fixed.  It took a high-speed precision
  639.           timing routine in assembly to achieve, but the results are
  640.           worth the effort.  I, always a glutton for bells and whistles,
  641.           couldn't resist including a parameter (NOISE FACTOR) which
  642.           lets you make the "new" noise sound (somewhat) like the "old"
  643.           broken noise.  Also the new noise allows for an improved
  644.           TINKLE.PPL paging file.
  645.  
  646. 1.1       Just for the record, when you're programming entirely in
  647.           integers, the Equal Tempered musical scale is your worst
  648.           nightmare.  Despite this, two new forms of relative
  649.           transposition have been added.  Also, if your tunes sound a
  650.           little different under 1.1 than they did under 1.0, it's not
  651.           your imagination.  Up 'til version 1.1, there was a
  652.           discrepancy between the frequency table in the docs and the
  653.           actual speaker output: While the table gives frequencies based
  654.           on A4 being equal to 440 Hz, Pageplay based its output on A4 =
  655.           451 Hz.  As of 1.1, PagePlay uses the more widely accepted 440
  656.           Hz base.  PagePlay has been tested with a Korg digital tuning
  657.           reference, and on most machines it should be within one cent
  658.           of perfect pitch (in octave 4) - any error will more likely be
  659.           due to your system's background noise from the fan and hard
  660.           drive!
  661.  
  662. 1.0       At this date I have still not perfected the NOISE command.  I
  663.           have left it in place because some interesting effects can be
  664.           attained with it as it is, as evidenced in TEST5.PPL.  A later
  665.           release of PagePlay _WILL_ include a true white-noise
  666.           generator command IN ADDITION to the existing NOISE command.
  667.  
  668.                                                 -=( T )=-
  669.  
  670. Acknowledgements and Personal Notes from the author:
  671.  
  672.         Thanks to Allen Walker for his invaluable work in converting
  673.         C-64 SID music to PagePlay format, so that I am able to provide
  674.         many sample music files for your edification and enjoyment.
  675.  
  676.         Thanks to Patrick Wilson for putting the bug in my head to write
  677.         this thing, and for numerous suggestions, which have been
  678.         incorporated into PagePlay.
  679.  
  680.         Thanks to Richard Whittaker for trying out a completely untested
  681.         program, putting his system at grave risk, just to beta-test
  682.         PagePlay for me.
  683.  
  684.         Thanks to Craig Chamberlain and Harry Bratt for designing the
  685.         SIDplayer program, after which PagePlay is modeled in some
  686.         places.
  687.  
  688.         Finally, thanks to Rob Hubbard, for programming all that great
  689.         music on the C-64.
  690.  
  691.         Maximus-CBCS(tm) is a trademark of Scott Dudley.
  692.         RemoteAccess(tm) is a trademark of Continental Software.
  693.         DesqView(tm) is a trademark of Quarterdeck Office Systems.
  694.         SIDPlayer(tm) is a trademark of Compute! Books.
  695.         Garfield(tm) is a trademark of Jim Davis/United Feature Syndicate
  696.  
  697.         If you have any questions or comments please contact Gerald
  698.         Albion on Tommy's Holiday Camp BBS, or send netmail to 1:340/26
  699.         or email to ue075@freenet.victoria.bc.ca
  700.  
  701.               +1 604 380 6467 (2400-14400 HST)        1:340/27
  702.               +1 604 361 4549 (2400-14400 V.32bis)    1:340/26
  703.  
  704.                          24 Hours a day "In Stereo"
  705.  
  706. -eof-
  707.                         Whirlwind Software
  708.                         P.O. Box 5874
  709.                         Victoria, B.C.
  710.                         Canada    V8R 6S8
  711.