home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / misc2 / pmusic12.lzh / POLY.DOC < prev    next >
Text File  |  1989-12-08  |  39KB  |  822 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                      Polyphonic Music Package ver 1.20
  8.                       Polyphonic Music Compiler 1.10
  9.                          Polyphonic Music Player
  10.  
  11.                   Copyright (c) 1989 GrigaSoft Productions
  12.  
  13.                 _____________________________________________
  14.                /                                             \
  15.              -*> FOR UPDATES FROM VERSION 1.00 SEE THE FILE: <*-
  16.              -*>                UPDATE.TXT                   <*-
  17.              -*> ALL UPDATED MATERIAL THAT IS DOCUMENTED IN  <*-
  18.              -*>  UPDATE.TXT IS MARKED '(UPDATED)' IN THIS   <*-
  19.              -*>                  MANUAL                     <*-
  20.                \_____________________________________________/
  21.  
  22.                  IF YOU HAVE ANYTHING YOU'D LIKE TO SEE DONE
  23.                  WITH THIS PACKAGE (SPECIFIC SONG CODINGS,
  24.                  NEW APPLICATION IDEAS, ETC.) PLEASE CONTACT 
  25.                  THE AUTHOR (EDWARD GRIGASSY, (512)385-1368)
  26.                  For more personal info see section 7.5 of this 
  27.                  manual.
  28.  
  29.  
  30.  
  31.  
  32.        
  33.         INTRODUCTION
  34.         ------------
  35.  
  36.              Welcome to the world of polyphonic music!  Recently several
  37.         programmers working separately have discovered and implemented
  38.         the amazing ability to play three (count 'em) independent voices
  39.         on the cheap IBM PC/AT/Clone speaker. Why is this amazing? Well,
  40.         for years any IBM "Music" program was laughed at by experts simply
  41.         because all the software could do was drone out a simple (not to
  42.         mention, dull) melody. Lately the techniques to play three notes
  43.         at a time, allowing true chords and harmony, has been developed.
  44.         This package exemplifies the continued refining of these
  45.         techniques.
  46.  
  47.         CREDITS
  48.         -------
  49.  
  50.             Steve Muenter: wrote the original assembly algorithm
  51.                            for playing three notes at once,
  52.             Ted Holden: informed me of this algorithm and his program
  53.                         VMUSIC inspired all my work
  54.  
  55.         TABLE OF CONTENTS
  56.         -----------------
  57.  
  58.         Subject                                                 Section
  59.         -------                                                 -------
  60.         What's included ......................................... 1.0
  61.         What is Polyphonic Music? ............................... 2.0
  62.         MakePoly Compiler ....................................... 3.0
  63.            Explanation .......................................... 3.1
  64.            Use .................................................. 3.2
  65.               Requirements ...................................... 3.21
  66.               Starting MakePoly / Command Line .................. 3.22
  67.               Text File Format / Syntax ......................... 3.23
  68.         PlayKb Player ........................................... 4.0
  69.            Explanation .......................................... 4.1
  70.            Use .................................................. 4.2
  71.               Requirements ...................................... 4.21
  72.               Starting PlayKb / Command Line .................... 4.22
  73.         Other Polyphonic Music Programs ......................... 5.0
  74.            AutoHarp ............................................. 5.1
  75.            LoopKb ............................................... 5.2
  76.         Author's Note ........................................... 6.0
  77.            Program Development .................................. 6.1
  78.            Program Features ..................................... 6.2
  79.            Program Info ......................................... 6.3
  80.            Future Enhancements .................................. 6.4
  81.            Author's Corner ...................................... 6.5
  82.  
  83.  
  84.  1.0    WHAT'S INCLUDED
  85.         ---------------
  86.  
  87.         Included in this current version of Polyphonic Music are the
  88.         following files:
  89.  
  90.         README  .1ST    -- Read this file for instructions on
  91.                            getting started quickly
  92.  
  93.         MAKEPLAY.BAT    -- Batch file to compile and play a .sng file
  94.         PLAYALL .BAT    -- Batch file to compile all songs and play
  95.                            all songs (only compiles the first time)
  96.  
  97.         AUTOHARP.C      -- Example of a simple program that inter-
  98.         *.H             -- faces with the Polyphonic Music C language
  99.                            library
  100.         LOOPPOLY.PAS    -- Example of a program that interfaces with
  101.                            the Polyphonic Music Turbo Pascal routines
  102.         PLAYPOLY.PAS    -- Example of a program that interfaces with
  103.                            the Polyphonic Music Turbo Pascal routines
  104.         
  105.                         -- The poly file player
  106.         LOOPKB  .EXE    -- The poly file player that repeats a song
  107.                            until a key is pressed
  108.         MAKEPOLY.EXE    -- The textfile-to-polyfile compiler
  109.  
  110.         AUTOHARP.EXE    -- Example program created with the Polyphonic
  111.                            music C language interface
  112.  
  113.         TRIPTEST.SNG    -- An example song file that displays use of
  114.                            simulated triplets (also see FURELISE.SNG)
  115.         *.SNG           -- Various song files to play
  116.         
  117.         POLY    .DOC    -- The Polyphonic Music documenation (this file)
  118.         REGISTER.TXT    -- Shareware Regisration form
  119.         UPDATE  .TXT    -- List of important additions/modifications
  120.                            in the lifetime of Polyphonic Music software
  121.  
  122.  
  123.  2.0    WHAT IS POLYPHONIC MUSIC?
  124.         -------------------------
  125.  
  126.              The Polyphonic Music programs are an innovative system
  127.         for allowing TRUE three voice music to be played on the IBM PC 
  128.         and compatibles. The package provides several uses of Polyphonic 
  129.         Music for the user. These are:
  130.  
  131.         o A command line controlled jukebox, in which the user simply
  132.           compiles (MakePoly.exe) and plays (PlayKb.exe) his/her
  133.           songs,
  134.  
  135.         o A batch file enhancer, which can play three part music while
  136.           waiting for a keypress, 
  137.  
  138.         o A C programming language enhancer, which allows three voice
  139.           music to be played within a C program until a keypress is 
  140.           detected, and
  141.  
  142.         o (UPDATED) A Pascal (specifically Turbo Pascal 4.0 and greater)
  143.           language enhancer, which allows three voice music to be played
  144.           within a Pascal program until a keypress is detected.
  145.  
  146.           [See section 6.4 - Future Enhancements for uses soon to be 
  147.           implemented!]
  148.  
  149.              The Polyphonic Music programs use two techniques to play
  150.         music. The first is the ability to compile a text file with
  151.         commands similar to the IBM BASIC PLAY statement into a ".ply"
  152.         file format which can be directly played from the command line,
  153.         batch files, or even from within your C/Pascal programs themselves.
  154.         The second technique is only usable within C and Pascal programs. 
  155.         It involves defining the music to be played within the program 
  156.         (in array form).  This second method may be preferable if the song 
  157.         is short or if the programmer doesn't wish to access external files.
  158.  
  159.  
  160.  3.0    MAKEPOLY COMPILER
  161.         -----------------
  162.  
  163.    3.1  EXPLANATION
  164.         -----------
  165.  
  166.              The MAKEPOLY.EXE file, when run, compiles text (ASCII)
  167.         files into files in a ".PLY" format which can then be directly
  168.         read by other Polyphonic Music programs. This program is necessary
  169.         to translate a file of ASCII music commands into the raw 
  170.         frequencies that the computer can play.
  171.  
  172.    3.2  USE
  173.         ---
  174.         
  175.         3.21    REQUIREMENTS
  176.                 ------------
  177.  
  178.                      The MAKEPOLY.EXE program will run in MS-DOS (and
  179.                 compatibles) 2.0 or later. It needs less than 80K of
  180.                 memory depending on the size of the text file being
  181.                 compiled (usually needs 15K to 64K). It can be run from
  182.                 either a floppy diskette or a hard disk. To work
  183.                 properly, a text file of music commands (see 3.23 - TEXT
  184.                 FILE FORMAT / SYNTAX) is required. (For more information
  185.                 on errors, see 3.24 - MAKEPOLY ERRORS.)
  186.  
  187.         3.22    STARTING MAKEPOLY / COMMAND LINE
  188.                 --------------------------------
  189.  
  190.                 To run MakePoly, make sure you are in the directory
  191.                 where MAKEPOLY.EXE resides. Enter the following command 
  192.                 at the DOS prompt:
  193.  
  194.                 MAKEPOLY <file1> [<file2>] [/pval]
  195.  
  196.                 where:
  197.                    <file1> = the name of the text file which contains
  198.                              the Polyphonic Music commands (see 3.23 -
  199.                              TEXT FILE FORMAT / SYNTAX).
  200.                              This is the file to be compiled.
  201.                    <file2> = the name of the output ".ply" file which
  202.                              contains the raw music (frequencies, and
  203.                              durations) which can then be played by
  204.                              other Polyphonic Music routines, such as
  205.                              PLAYPOLY.EXE (this name is optional)
  206.                    pval    = (UPDATED) the frequency value for the pitch of 
  207.                              Middle C. This pitch will determine every
  208.                              pitch (relatively) of the ".ply" file.
  209.                              It may be in the range of 1 (low) to 8191 
  210.                              (high); all other notes are derived off of this
  211.                              value, so values below 170 and above 7000
  212.                              may have distorted frequencies at the low end
  213.                              and the high end of the spectrum respectively.
  214.                              See UPDATE.TXT for more information.
  215.                              (this value is optional).
  216.  
  217.                              Some good values for different machines:
  218.  
  219.                              IBM PC   543
  220.                              XT       390   <default>
  221.                              AT       311
  222.                              PS/2     253
  223.                              286      189
  224.                              386      137
  225.  
  226.                 Note: If no extension is given on <file1> and/or <file2>,
  227.                       MAKEPOLY assumes ".SNG" (song) for <file1>,
  228.                                    and ".PLY" (poly or play) for <file2>.
  229.                       Also, if the <file2> parameter is not given,
  230.                       MAKEPOLY will attempt to add the ".PLY" extension
  231.                       to <file1>.
  232.                       If pval not specified, MAKEPOLY assumes 390
  233.                       (which is perfect pitch on my Turbo XT).
  234.  
  235.                 Examples:
  236.                    to compile a file named "SIMPTEST.SNG":
  237.  
  238.                    MAKEPOLY simptest
  239.  
  240.                    to compile a file named "ODE" with a Middle C pitch
  241.                    of 195:
  242.  
  243.                    MAKEPOLY ode. ode.ply /195
  244.  
  245.         3.23    TEXT FILE FORMAT / SYNTAX
  246.                 -------------------------
  247.  
  248.                 MAKEPOLY compiles a file in a special format.
  249.                 The file is made up of ASCII text with certain ASCII
  250.                 characters representing certain music commands.
  251.  
  252.                 The commands can be in upper or lower case.
  253.  
  254.                 The commands have been derived directly from recent 
  255.                 versions of the IBM BASIC "PLAY" command (although a few
  256.                 new commands have been added).
  257.  
  258.                 Here is a list of the commands that MAKEPOLY will
  259.                 compile:
  260.  
  261.                 On  --  Sets the octave of subsequent note output. Any 
  262.                         integer n is allowed, but values between 0 and 
  263.                         6 are recommended. The value 3 is the octave 
  264.                         containing middle C (the only C written without 
  265.                         ledger lines in the Treble Clef). Octaves n < 3 
  266.                         are lower in pitch, while those with n > 3 
  267.                         are higher in pitch. Each octave contains 
  268.                         the notes from C to B (ascending).
  269.  
  270.                         (note: if not specified MAKEPOLY assumes 3; also
  271.                                "O0" causes an error, use "O1<")
  272.  
  273.                         Example: O4  -> sets subsequent note output to
  274.                                         the octave above middle C
  275.  
  276.                 Ln  --  Sets the default note length. The integer n
  277.                         can be one of the following:
  278.  
  279.                                 1  -- representing a whole note
  280.                                 2  -- half note
  281.                                 4  -- quarter note
  282.                                 8  -- eighth note
  283.                                 16 -- sixteenth note
  284.                                 32 -- thirty-second note
  285.                                 64 -- sixty-fourth note
  286.  
  287.                         (note: n can be other values between 1 and 64, see
  288.                                6.2 - PROGRAM FEATURES (discussion on 
  289.                                triplets) for details)
  290.  
  291.                         The number n is the length any subsequent note
  292.                         which doesn't have an explicit length following it
  293.                         will be assigned. (This is useful when a piece 
  294.                         comprises largely of one type of note length.)
  295.  
  296.                         (note: if not specified MAKEPOLY assumes 4)
  297.  
  298.                         Example: L4  -> sets default note length to quarter
  299.                                         notes
  300.  
  301.                 Tn  --  (UPDATED)
  302.                         Changes the current tempo for all subsequent notes. 
  303.                         See the file: UPDATE.TXT
  304.  
  305.                         This command can be embedded in any voice. The 
  306.                         tempo of all three voices is changed at the point 
  307.                         the Tn command is found.
  308.  
  309.                 >,< --  Raise current octave up, down. The command > raises
  310.                         the current octave set by the O command, while the
  311.                         command < lowers it. The current octave is raised
  312.                         or lowered by 1.
  313.  
  314.                 Vn  --  Set subsequent notes to be played by voice n.
  315.                         The integer n can ONLY have the values 1, 2, or 3.
  316.                         
  317.                         All the following notes will be programmed to play
  318.                         in voice n, until another Vn is found with a different 
  319.                         value for n.
  320.  
  321.                         (note: an error occurs when you attempt to play
  322.                                notes before setting which voice to play them
  323.                                on; no voice is assumed as default)
  324.  
  325.                         Any combination of the three voices is allowed,
  326.                         including omission of 1 or more of them.
  327.  
  328.                         Example: V1  -> sets up voice 1 to play the
  329.                                         subsequent notes
  330.  
  331.                 K   --  (UPDATED) The K command is no longer supported
  332.                         since the creation of the polyfile playing
  333.                         function that checks for a keypress after
  334.                         each note.
  335.  
  336.                 *..*    (UPDATED)
  337.                         Allow a user comment. All text in between two 
  338.                         asterisks is ignored by the compiler. 
  339.  
  340.                         This is useful if the music scorer needs to mark a
  341.                         section of music or explain something about what he
  342.                         is scoring.
  343.  
  344.                         Example: *voice1:*  V1O3 AB   -> The words "voice1:"
  345.                                                          are ignored (skipped
  346.                                                          over) by MAKEPOLY
  347.  
  348.                         
  349.                 Notes are entered in the following manner:
  350.  
  351.                 <N>[#,+,-][n][.[.[. etc.]]] 
  352.  
  353.                 where:
  354.                    <N>  = the name of the note. This may be one of
  355.                           the following letters ONLY:
  356.  
  357.                           A,B,C,D,E,F,G  -- musical notes
  358.                           P,R            -- rests (pauses, silences)
  359.  
  360.                    [#,+,-]  = optional note modifier. 
  361.  
  362.                               #,+ -- makes the note "sharp"
  363.                               -   -- makes the note "flat"
  364.                                      (note: B# (or B+) = C, E# (or E+) = F,
  365.                                             and C- = B, F- = E)
  366.  
  367.                    [n] = the optional note length. Can be of the possible
  368.                          values described under the L command. If n is not
  369.                          included, MAKEPOLY assumes the default note length
  370.                          set by the last L command.
  371.  
  372.                    [.[.[. etc.]]] = the optional dots on the note. Each dot
  373.                                     modifies the note's length by adding
  374.                                     1/2 of the current value. There is no
  375.                                     limit to the number of dots modifying
  376.                                     any given note.
  377.  
  378.                 Examples:
  379.                           e       -- play note 'e'
  380.                           f#4     -- play 'f sharp' for a quarter note length
  381.                                      duration
  382.                           a+8.    -- play a dotted 'a sharp' eighth note
  383.                           b-      -- play 'b flat' for default duration
  384.                                      specified by last L command
  385.  
  386.  4.0    PLAYKB POLYPHONIC MUSIC PLAYER
  387.         ------------------------------
  388.  
  389.     4.1 EXPLANATION
  390.         -----------
  391.  
  392.              The PLAYKB.EXE file, when run, plays a ".ply" file
  393.         in polyphonic (three voice) sound until a key is pressed. 
  394.         The ".ply" file is a special file format that cannot be 
  395.         adjusted or modified directly; it is only for use by the 
  396.         Polyphonic Music playing routines.
  397.  
  398.     4.2 USE
  399.         ---
  400.         
  401.         4.21    REQUIREMENTS
  402.                 ------------
  403.  
  404.                      The PLAYKB.EXE program will run in MS-DOS (and
  405.                 compatibles) 2.0 or later. It needs less than 80K of
  406.                 memory depending on the size of the ".ply" file being
  407.                 played (usually 15K to 64K). It can be run from
  408.                 either a floppy diskette or a hard disk. To work
  409.                 properly a ".ply" file must be specified. This file
  410.                 must be in a specific machine-readable format.
  411.  
  412.         4.22    STARTING PLAYKB / COMMAND LINE
  413.                 ------------------------------
  414.  
  415.                 To run PlayKb, make sure you are in the directory
  416.                 where PLAYKB.EXE resides. Enter the following command 
  417.                 at the DOS prompt:
  418.  
  419.                 PLAYKB <file1> [/c,/s,tval]
  420.  
  421.                 where:
  422.                    <file1> = the name of the ".ply" file which contains
  423.                              the Polyphonic Music in raw form. Such a
  424.                              file can only be created by the MakePoly 
  425.                              compiler.
  426.                              This is the file to be played.
  427.  
  428.                    One of the following optional 2nd parameters may be used:
  429.                    /C      = the song's starting tempo is determined
  430.                              by a processor speed determining routine.
  431.                    /S      = same as /C, except the status line "PLAYKB.EXE:
  432.                              Checking processor speed..." is not displayed.
  433.                    tval    = the tempo you would like to set PlayKb
  434.                              to play at. If not given, PLAYKB assumes
  435.                              1024. This can be any positive number ranging
  436.                              up to 65535. The lower the number, the
  437.                              faster the tempo. 
  438.  
  439.                 Note: If no extension is given on <file1>,
  440.                       PLAYKB assumes ".PLY" (for "poly" or "play").
  441.  
  442.                 Examples:
  443.                    to play a file named "SIMPTEST.PLY":
  444.  
  445.                    PLAYKB simptest
  446.  
  447.                    to play a file named "ODE.JOY"
  448.  
  449.                    PLAYKB ode.joy
  450.  
  451.                    to play a file named "INVENT13.PLY" and set the tempo
  452.                         according to the processor speed
  453.  
  454.                    PLAYKB invent13 /c
  455.         
  456.                    to play a file named "INVENT13.PLY" at tempo = 512
  457.  
  458.                    PLAYKB invent13 512
  459.  
  460.  
  461.  5.0    OTHER POLYPHONIC MUSIC PROGRAMS
  462.         -------------------------------
  463.  
  464.     5.1 AUTOHARP
  465.         --------
  466.  
  467.              AUTOHARP is an interesting attempt to breathe creativity 
  468.         into the PC speaker. 
  469.  
  470.              Run it by entering AUTOHARP at the DOS prompt (in the drive/
  471.         directory where AUTOHARP.EXE is located). The keyboard layout
  472.         screen comes up.
  473.  
  474.              To use this program, play your favorite chord progression
  475.         by pressing the keys representing the chords you want. The top
  476.         row of the keyboard (numbers) will play all your major chords.
  477.         The next row plays minor chords, and the third plays diminished
  478.         chords. By pressing <Shift> along with any key used plays a 
  479.         seventh of the chord in question. For instance, to play a G7 chord
  480.         (that's G DOMINANT 7, to be specific), press <Shift '-'>.
  481.  
  482.     5.2 LOOPKB
  483.         ------
  484.  
  485.              This program is identical to PLAYKB.EXE in every way except
  486.         that at the end of a song it plays it over if a key has not been 
  487.         pressed. This is useful in batch files while waiting for user input.
  488.         
  489.              One other note, the ASCII value of the key pressed which
  490.         ended the program is returned in the DOS variable "errorlevel", and
  491.         can be accessed in batch files.
  492.  
  493.  6.0    AUTHOR'S NOTE
  494.         -------------
  495.  
  496.     6.1 PROGRAM DEVELOPMENT
  497.         -------------------
  498.  
  499.              The idea for this program first came the time I excitedly
  500.         downloaded PIANOMAN.ARC from my favorite bulletin board. I 
  501.         impatiently loaded up the program waiting to see what one
  502.         unknowingly deceiving uploader penned as "Plays polyphonic
  503.         music!". When it loaded up I was sorely disheartened, as the
  504.         pianoman was as far from a piano as a computer could be (well,
  505.         next to having no speaker at all). 
  506.  
  507.              Then one day I noticed a file that said VMUSIC.ARC "plays
  508.         notes simultaneously". I had to check it out. And sure enough, it
  509.         did what it claimed. It did not "simulate" three voices by playing
  510.         three notes real fast through one voice. All three voices were there!
  511.         This interested me and I played a little with the program.
  512.  
  513.              The time came when I wanted to use the possibility of three
  514.         voices in a program I was writing. VMUSIC couldn't help me because
  515.         it was unable to be accessed from C easily and quickly (not to
  516.         mention it was copyrighted!), so I called up Ted Holden, the
  517.         writer of VMUSIC. He didn't give me any code, but he referred me
  518.         to the work of Steve Muenter. This was the guy who wrote the low-
  519.         level technique for three voices. So, I got a copy of this assembly
  520.         code and I hooked it up to C.
  521.  
  522.              I thought that a music compiler (putting the music into
  523.         raw form for quick playing) would be a good idea, so I wrote
  524.         MakePoly. I wrote it so that the three voices could be implemented
  525.         into C.
  526.  
  527.              Basically this is the end result. The C enhancement
  528.         routines provided in this package expand on the original concept
  529.         and applications of three-voice music. And there is even more in 
  530.         the works (from Mr. Holden as well as myself -- see 6.4 - PROGRAM
  531.         ENHANCEMENTS).
  532.  
  533.              Every thing in this package was written in either C or 
  534.         assembly.
  535.  
  536.         * Three voice technology first started with Steve Muenter (as
  537.           far as I know). He created a cryptic BASIC interface with a
  538.           function similar to the poly() function in this package. 
  539.           His program played the song contained in the file SIMPTEST.PLY.
  540.           The form it is in now is not very far from the original form
  541.           in was in!
  542.           Ted Holden crystalized this idea by allowing imitation BASIC
  543.           commands in ASCII text files to be played. *
  544.  
  545.     6.2 PROGRAM FEATURES (UPDATED)
  546.         ----------------
  547.         
  548.              Both MAKEPOLY/PLAYKB and VMUSIC use the Basic-like commands
  549.         to read and play three-voice music. They both are good music 
  550.         writing/composition tools.
  551.  
  552.              In the latest version of VMUSIC which is propagating around
  553.         the nation's bulletin boards, Richard Pierce scored lots of Bach
  554.         pieces and offered some comments to Ted Holden. In one of the 
  555.         README files Ted responds directly to Richard Pierce's suggestions.
  556.         I'd like to do the same (my comments delimited by **'s):
  557.  
  558.             "There  are some obvious ways (to me, at least) vmusic could
  559.         be enhanced. This is contradictory to the concept of vmusic  as,
  560.         really, a toy program (with no intention on my part to degenerate
  561.         it or the authors efforts). Many of the suggestions I have would
  562.         be satisfied by MIDI sequencer programs. I doubt that the author
  563.         had any inkling that vmusic would be put to such  efforts  as  I
  564.         have here. Be that as it may...
  565.  
  566. Check!> Tempo
  567.              Implementation  of  the  Basic "play" command for tempo 't'
  568.              would be very useful. Several  of  the  pieces  performance
  569.              style  could  have been immeasurably helped by being able to
  570.              implement even incremental changes of tempo, much less true
  571.              accelerando and ritardando.
  572.  
  573.         ** Incremental tempo changes are supported in this version... 
  574.            (see UPDATE.TXT) **
  575.  
  576. Check!> Triplets
  577.              True  triplet  notes  (where  three notes are played in two
  578.              beats) could have made some of the pieces far  easier,  and
  579.              would  have  encouraged me to try others. One way that this
  580.              could be noted in the music source would be some convention
  581.              that would group the triplets together, such as:
  582.  
  583.                   l8
  584.                   v1o4 (efe)3 (ded)3 c4
  585.                   v2o3 c<b    >cd     e4
  586.  
  587.  
  588.              where  the triplet eighth notes like "efe" are played three
  589.              against the normal two eighth notes "c<b" in a  normal  3/4
  590.              time  measure.  The  extension  of  this to sixth groupings
  591.              "(......)6" and even seventh groupings  "(.......)7"  would
  592.              enable  many  other  pieces  to be simply coded (the latter
  593.              being true for the first movement of Bach's Partita #6).
  594.  
  595.         ** MAKEPOLY will allow "simulated" triplets. The manner in which
  596.            this is accomplished is the following:
  597.  
  598.            Every note length in the <textfile> is first converted to
  599.            a real time value. Specifically,
  600.  
  601.                Note Length:     1   2   4    8   16   32   64
  602.            - is converted to -
  603.            Real Time Duration:  64  32  16   8   4    2    1
  604.  
  605.            (the formula is RTD = 64 / NL)
  606.  
  607.            So, if you time your triplets in real time, and then set
  608.            your note length accordingly, you can fake them.
  609.  
  610.            For instance, say you want a triplet for eighth notes.
  611.            This would be equivalent in real time to 2 eighth notes, i.e.
  612.            real time = 8+8 = 16, so your three notes would need to add up
  613.            to 16. Let's use 5, 5, and 6. Since NL = 64 / RTD, and 64/5 =
  614.            12.8, and 64/6 = 10.67, use the notelengths, 13, 13, and 11,
  615.            which add up to (when applied through the original formula, and 
  616.            rounded) 16. This works only because MAKEPOLY rounds the RTD 
  617.            derived from the formula. Try it! 
  618.  
  619.            This example is realized in the file TRIPTEST.SNG.  They sound
  620.            like triplets to me! **
  621.  
  622.         More voices
  623.              Simply said...
  624.  
  625.         ** Am working on a possible avenue of many, many more voices.
  626.            It is very possible! **
  627.  
  628.         Platform independence
  629.              It would be nice to be able to  detect  the  speed  of  the
  630.              machine,  then set the tempo and pitch parameters automati-
  631.              cally (or at least scale them) so that the same piece would
  632.              sound the same on different hardware.
  633.  
  634. Check!> ** PLAYKB currently offers this capability (see the command line
  635.            parameter /C, section 4.22 - STARTING PLAYPOLY / COMMAND LINE)
  636.            for playing songs which don't change tempo internally. This 
  637.            option has not been fully tested to see whether it reproduces 
  638.            pitches perfectly or just scales them (most likely the pitches 
  639.            are only scaled). 
  640.  
  641.            (UPDATED) The current processor speed test works with
  642.             minimal user interface.  It also uses more speaker
  643.             speed dependent routines than the previous version
  644.             providing for minimalsystem halts (which was fairly
  645.             common in the old speed checking routines) **
  646.  
  647.         Syntax checking
  648.              A   more  intelligent  parser  would  help  debugging.  For
  649.              example, if  vmusic  had  some  knowledge  of  the  measure
  650.              length,  it could detect missing or excessive notes in each
  651.              measure.
  652.  
  653.         ** MAKEPOLY simply plays silence for a voice when a voice's 
  654.            info runs out. If you know what the piece sounds like, you 
  655.            should be able to detect slips in the voices. 
  656.  
  657.            Also: use the comment delimiters to section off pieces of
  658.            the music. This allows focusing in on certain parts and
  659.            you can then easily determine what's wrong. Never thought
  660.            I'd be debugging an opera! **
  661.  
  662.         Note Style
  663.              Implementing the Basic  "play"  command  for  setting  note
  664.              style,  such as legato, portamento and staccato, would make
  665.              coding easier.
  666.  
  667.         ** One possible alternative is to play half of the value of the
  668.            note and then rest the other half (staccato). I believe these
  669.            styles are possible (in fact I think playpoly plays entirely in
  670.            legato, what do you think?). Explain what exactly the terms mean, 
  671.            and I'll have a go at them in upcoming versions **
  672.  
  673. Check!> Equal voices
  674.              In some of the  more  complex  pieces  (such  as  the  trio
  675.              sonata),  the  second and third voices get lost beneath the
  676.              more predominate first voices. All voices should have equal
  677.              weight. 
  678.  
  679.         ** 'This version of MAKEPOLY doesn't account for this but I have
  680.             some ideas of ways to attempt this. Hopefully the next
  681.             version will have conquered this problem.' - I said (1.00)
  682.            version. 
  683.  
  684.            And it has... see UPDATE.TXT for details on equal voices ** ."
  685.  
  686.     6.3 PROGRAM INFO
  687.         ------------
  688.  
  689.              MakePoly was written entirely in C.
  690.         In its finished form it is roughly 20K of source code.
  691.              PlayPoly was written in C, and linked to and external 
  692.         function written in assembly.
  693.              The Turbo Pascal interfacing was implemented in Turbo 
  694.         Pascal 5.0 (thanks to the request and support of Al Dundead (sp?) 
  695.         in California!).
  696.  
  697.              Both programs use dynamic memory for note storage, so the
  698.         only limitation to song length is the amount of available memory.
  699.         (Large memory model only, the small memory model has an upward
  700.         limit of about 64K).
  701.  
  702.              Updated versions will be produced even if the amount of user
  703.         feedback is minimal (in other words, PLEASE FEED BACK! Your comments
  704.         are greatly wanted/appreciated!).
  705.  
  706.     6.4 FUTURE ENHANCEMENTS
  707.         -------------------
  708.  
  709.         Other than the enhancements mentioned in the discussion with
  710.         Richard Pierce in section 6.2 - PROGRAM FEATURES, I personally
  711.         am dedicated to see the following enhancements come to the world
  712.         of three voice IBM music:
  713.  
  714.                 * Functions to add three voice capability to:
  715.                         BASIC
  716.                 * The ability to work apparently simultaneously
  717.                   while other functions are doing their thing (this
  718.                   is the "DOS-world-possibility" mentioned in section
  719.                   6.2).  I have written the routine to do this I just
  720.                   need help in figuring out how to run this routine
  721.                   every few clock ticks safely.
  722.                 * For AUTOHARP type programs, a sensitive assembly key-
  723.                   board parser which plays a chord until a key is released
  724.                   (not just repeating the key).
  725.                 * A simple sequencer-type program that let's you
  726.                   edit a ".ply" file without knowing how to read music!
  727.                   (the keyboard would have to have assembly-type instructions
  728.                   as described for AUTOHARP above so the program could
  729.                   sense when keys were pressed and released.)
  730.                 * What would be really great is to be able to tune
  731.                   the player to concert pitch (if anyone tunes their version
  732.                   of MAKEPOLY to concert pitch, let me know!).
  733.                 
  734.  
  735.     6.5 AUTHOR'S CORNER
  736.         ---------------
  737.  
  738.         Let me just tell you a little about myself...
  739.  
  740.         I am 20, a Computer Science Major at the University of Texas.
  741.         I also work for the Department of Veterans Affairs, working with
  742.         (what else) PC's. I am a programmer, and a serious musician.
  743.         I play the guitar primarily, but I also have a great love for
  744.         piano and the drums (trapset). I can't deny but that the Lord has been 
  745.         very instrumental and creative in my life. He has given me peace, joy, 
  746.         and love I never knew before I knew Him (and believe me, I searched!).
  747.         Not only that but He has specifically answered my prayers and spoken 
  748.         through me. I give every waking moment to Him, and He satisfies me 
  749.         more than the world ever did!
  750.  
  751.         So if you have any comments, questions, advice, suggestions, or
  752.         obscene remarks about what is present in this package, PLEASE 
  753.         contact me!
  754.  
  755.         Edward ("Eddie") Grigassy
  756.         2304A Riverside Farms Rd.
  757.         Austin, TX  78741
  758.         (512)385-1368
  759.  
  760.         On Compuserve: 73207,3140   
  761.  
  762. Technical Stuff:
  763. ----------------
  764.  
  765. If you enjoyed, used, or even loved this package, please consider a 
  766. contribution of $20 or of any size. This package has been designated as
  767. ShareWare by the author (E. Grigassy); it serves as a demo for the
  768. more powerful later versions of Polyphonic Music, the C & Pascal Polyphonic
  769. Music language enhancements (see REGISTER.TXT), and the registration 
  770. releasing full rights to the registeree (is that a word?).
  771.  
  772.     Registration Information:
  773.  
  774.     Polyphonic Music is distributed as User-Supported software.  You are free 
  775.     to copy and distribute this software freely, however, if you find it of 
  776.     use to you, you are encouraged to register your copy.  Registering your 
  777.     copy of the software helps the author continue to provide professional
  778.     quality software at very reasonable prices.
  779.  
  780.     All materials are shipped on 5.25-inch floppy diskettes. If you require
  781.     3.5-inch floppies instead, there is an additional $2.00 charge covering
  782.     the cost of the diskette itself.
  783.  
  784.     Non-U.S. orders need to include $5.00 extra to cover additional shipping
  785.     and handling charges.  Checks and money orders must be drawn on a U.S.
  786.     bank.  Please send all payments payable in U.S. Dollars.
  787.  
  788.     Print the registration form, REGISTER.TXT, or include on a piece of
  789.     paper your name, address, phone number, and requested items, and send
  790.     it along with your payment to:
  791.  
  792.         Edward Grigassy
  793.         GrigaSoft Productions
  794.         2304A Riverside Farms Rd.
  795.         Austin, TX  78741
  796.  
  797. Microsoft(R), MS(R) are registered trademarks of Microsoft Corporation.
  798. IBM(R) is a registered trademark of the International Business Machines
  799. Corporation.
  800. Turbo Pascal (R) is a registered trademark of Borland International, Inc.
  801. All versions of VMUSIC (vm0389.exe is latest as of writing) are Copyright
  802. HT Enterprises / Ted Holden
  803.  
  804. The files: PLAYKB.EXE, MAKEPOLY.EXE, LOOPKB.EXE, AUTOHARP.EXE, 
  805.            AUTOHARP.C, and any of the original source code not 
  806.            mentioned above are Copyright (c) 1989 Edward P. Grigassy 
  807.            / GrigaSoft Productions, all rights reserved. None of these 
  808.            files or procedures may be used in any commercial software 
  809.            nor may they be bought or sold (except by authorized Shareware /
  810.            Public Domain distributors) without the explicit written 
  811.            permission of Edward P. Grigassy / GrigaSoft Productions. 
  812. Polyphonic Music (TM) is a trademark of GrigaSoft Productions.
  813.  
  814. Disclaimer:
  815. -----------
  816. Edward Grigassy / GrigaSoft Productions is not responsible for any
  817. damage or loss of property caused by the software in this package. This
  818. package is provided AS IS and no guarantee is made by the author/owner
  819. for the safety of the user's property.
  820. All the documentation included in this package is subject to change at any
  821. time and in no way reflects any commitment on the part of the author/owner.
  822.