












                           HARMONY Version 6
                           =================

                     Copyright (c) Neil Jennings 1996




          A unique program which generates chords to accompany a melody. It
          also  displays score, plays music, transposes, etc. and can print
          or display enlarged music for the visually impaired.

          Version 6 adds a print facility (HP Laser only) and lyrics

          Requires EGA or VGA graphics. A 486 or better is  recommended,
          but  not essential.















          Written and distributed by:
          Neil Jennings BSc CEng MBCS FIAP
          Green Hedges Bungalow, Neath Road, Bryncoch,
          Neath SA10 7YH, West Glamorgan, Wales, UK


          Tel:        (+44)1639-633072
          Compuserve: 100040,471
          Email:      100040.471@compuserve.com




          This software package is copyrighted material. You may use it for
          non-commercial  work  only, for a trial period of 30 days. If you
          are  going  to  be  using  it  after  that  trial,  or  using  it
          commercially,  or  in  any  work that is to be distributed in any
          manner, you  must  register  by  purchasing  a  license  for  the
          package.


               HARMONY         UK users. . . . . .   20

                               Overseas users. . .   $37
                               (includes bank handling charges)

               This purchases a SINGLE licence for a SINGLE copy.
               Commercial and Site licences are available on request.


          To order see the ORDER.FRM file.






          LICENSE AGREEMENT - REGISTERED VERSIONS ONLY

          This  is  a  legal  agreement between you, the end user, and Neil
          Jennings. By using this software, you are agreeing to be bound by
          the terms of this agreement.

                                   SOFTWARE LICENCE

          1. GRANT OF LICENCE. Neil Jennings grants to you the right to use
          one copy of the SOFTWARE on a  single  terminal  connected  to  a
          single  computer  (i.e.,  with a single CPU). You may not network
          the SOFTWARE or otherwise use it on more  than  one  computer  or
          computer terminal at a time.

          2.  COPYRIGHT. The SOFTWARE is owned by Neil Jennings and is pro-
          tected by United Kingdom copyright laws and international  treaty
          provisions. Therefore, you must treat the SOFTWARE like any other
          copyrighted  material  (e.g., a book or musical recording) except
          that you may either (a) make one copy of the SOFTWARE solely  for
          backup  or  archival  purposes, or (b) transfer the SOFTWARE to a
          single hard disk provided you keep the original solely for backup
          or archival purposes. You may make a single copy of this document
          for your own use only.

          3. OTHER RESTRICTIONS. You may not rent or  lease  the  SOFTWARE,
          but  you may transfer the software and accompanying documentation
          on a permanent basis  provided  you  retain  no  copies  and  the
          recipient  agrees  to  the  terms  of this Agreement. You may not
          reverse engineer, decompile, or disassemble the software. If  the
          SOFTWARE  is an update, any transfer must include the most recent
          update and all previous versions.

          NO WARRANTIES. Neil Jennings  disclaims  all  warranties,  either
          expressed  or  implied,  including  but  not  limited  to implied
          warranties  of  merchantability  and  fitness  for  a  particular
          purpose, with respect to the SOFTWARE and the documentation.

          NO  LIABILITY  FOR  CONSEQUENTIAL DAMAGES. In no event shall Neil
          Jennings be liable for any damages whatsoever arising out of  use
          of or inability to use this SOFTWARE.


          This agreement is governed by the laws of England.











                       Contents
                       ========

           1           Introduction

           2           Quick Guide to using the program

           3           Menu Options

           4           Editing the tune and lyric

           5           Printing

           6           Tablature

           7           Bugs

           8           Samples

           9           Restrictions

           10          Registration

           11          Future Plans

           12          Feedback

           13          Acknowledgements

                       Appendices
                       ==========

           A           Tune file definition

           B           Voice file definition

           C           Chord and Harmony files

           D           Technical details

           E           History

           F           About the Author






                              1. Introduction
                              ===============

          Purpose
          -------

          This  program is designed to add simple chords to a given melody.
          The melody must be supplied in the text format used by  the  ACCU
          Music system.  A summary of the syntax, including extensions used
          only by HARMONY, is given below as Appendix A

          HARMONY should work on any PC with EGA or VGA graphics, but a 486
          is recommended as a minimum for SOME of the options.

          Sound
          -----
          In order to check the  tune,  it  can  be  played  using  the  PC
          speaker,  or  on  a  suitable  (ADLIB or Soundblaster compatible)
          sound card.

          Score
          -----
          The tune can be displayed as a melody with or without words
          (lyrics) and chord  symbols,  as  a 2-stave  score, or as a
          full score with a separate staff for each voice.
          The  display  is  scalable,  facilitating  use  by   the
          partially sighted.

          The chords can be saved and edited as a text file, if changes are
          desired.  The  melody  with  chord  symbols  can  be printed if a
          suitable printer is available (needs graphic capability).

          Harmony
          -------
          A single voice file can be  loaded,  and  the  generated  harmony
          stored  as  a  full  .SNG file with four voices. This can also be
          played on a sound card.

          Alternatively, an existing .SNG file can be loaded and used.

          You can, of course, enter all voices manually, and just use the
          program to print or play the tune.





                       2. Quick Guide to using the program
                       ===================================

          Type HARMONY to run the program. A menu will  be  displayed.  The
          menu options are described in a following chapter.

          You  can  also  include  a song or voice file name on the command
          line, and that file will be loaded before the menu is displayed.

          You can specify either a SNG or a voice file. By default, the SNG
          file will be loaded.

          Example
          -------
                HARMONY JACK

          Generation of suggested chords
          ===============================

          Load Melody
          -----------
          A melody line is loaded from a  voice  file.   The  program  will
          ALWAYS assume that voice 1 (file extension V1) is the melody.

          Chords
          ------
          Select Generate Harmony (or View Harmony) from the View menu.

          The  program  will  generate chord symbols for each bar, using an
          algorithm which I have devised. This version uses only  the  most
          basic  chords,  and  is suitable for simple melodies.  The chords
          are chosen on a points system, and the View Harmony  option  will
          show the the three highest scoring chords for each bar or part of
          a bar.

          Note  that  there  is  usually  more  than one way to harmonise a
          melody,  depending  on  the  style  of  music  and  the  personal
          preferences of the arranger.

          You can edit the chord file to replace the automatic chord by one
          of  your  choice,  but these changes will not be reflected in the
          other  voices,  and  will  be  overwritten  if  the  harmony   is
          regenerated.







          Time signatures
          ---------------
          Although  any  time  signature may be displayed, the program only
          recognises common signatures when generating chords.

          The current version recognises

                  2/2, 2/4, 3/4, 4/4, 5/4, 6/4, 6/8, 9/8

          Bars and accents
          ----------------
          By default, one chord is generated for each accented note in  the
          bar.   Thus  2/4, 3/4, 5/4 will have one chord per bar, 2/2, 4/4,
          and 6/8 will have  two,  and  9/8  will  have  3.   This  can  be
          overridden by selecting Chord Options from the View menu.

          Other Voices
          ------------
          The program will then use these chord symbols to fill voices 2 to
          4  with  the notes of the selected chord. The notes are chosen to
          fit within the Bass clef where possible.

          In technical terms, the selected chord will normally be  a  chord
          in  either  the  root position or the first inversion. Only three
          notes can be generated, because there are only four voices.   For
          the  dominant  7th,  this  means that one note will be missing. I
          have chosen to omit the 'third' in this version.

          Playing the chords
          ------------------
          The music can be played, complete  with  chords,  on  a  suitable
          sound  card.   To  do this, you must load the Sound driver BEFORE
          running  HARMONY.   The  driver  may  be  called   SOUND.COM   or
          SB-SOUND.COM. Refer to your sound card manual for details.






                              3. Menu Options
                              ===============

          Menus and Pick lists
          --------------------

          The  menus  can be activated by standard key strokes, eg ALT/F, S
          to save. Within the drop down menus and pick lists, you  can  use
          either the highlighted letter or cursor select.

          Alternatively, you may use the arrow keys to highlight items, and
          ENTER to select. Mouse selection is not yet supported.

          Page  up  and  Page  down  action  on file selection lists can be
          selected by the PgUp and PgDn keys.

          Note that some menu options will be  'greyed'  and  will  not  be
          selectable until a song or voice file is loaded.





          3.1. File submenu
          -----------------
          New
                        Clears any tune file from memory

          Open Tune file
                        Opens  a  tune  file,  loading all voices which are
                        present

          Open Voice file
                        Opens a Voice file, ie with file extension V1.

          Save Tune file
                        Saves the current tune with all  voices  and  chord
                        file  (.CHD),  as  a  tune file with the same name,
                        replacing it if already present.

          Save Tune As
                        Saves the current tune or voice as a new tune file

          Save ACCU song
                        Saves  the  song  under  a  new   name   with   all
                        HARMONY-specific  commands removed.  It should then
                        be compatible with ACCU Musicsys

          Delete Tune from disk
                        Deletes a tune and all voices from the disk

          Select printer
                        Displays a menu of printers.

          Setup printer
                        Set printer options.
                        Currently only Dots Per Inch on laser printers This
                        will change the actual size of the printed score.

          Print
                        Prints the current tune on the selected printer

          Go to DOS
                        Shells out to a DOS session

          Change Directory
                        Select Drive
                        Select Directory



          3.2. Edit submenu
          -----------------
          Edit Voice
                        Allows you  to  select  a  voice,  then  to  change
                        individual notes, insert or delete notes.

          Edit Chords
                        Allows  you  to  edit  the  chord  symbols. See the
                        detailed description for further details

          Edit Tune Name
                        Allows you to change the tune name.  The  new  name
                        will be saved when you save the song.

          Create Tune
                        Creates  a  new tune, empty except for default Key,
                        Time and Tempo

          Create Random Tune
                        Creates  a  new  tune,  with  random  notes,  in  a
                        selected  style.   Strictly  for  fun!  Sometimes a
                        quite reasonable tune is  generated.   I  find  the
                        Waltz  style  to  be the most realistic but you may
                        well find usable  phrases  in  any  of  the  styles
                        provided.





          3.3. View submenu
          -----------------

          Note: You can type Q to quit the display before it is finished.

          View          Displays the current tune in the selected mode

          Melody mode      )   mode selection, with <- indicating the
          Score mode       )   currently selected mode
          Open Score mode  )

                        Melody  mode  displays  the melody line only. Score
                        mode uses the Treble and  Bass  Clefs.  Open  score
                        uses one staff for each voice.

          Select Voice  Selects a voice for viewing in melody mode

          View Harmony
                        Displays  and  writes to a file the points score of
                        each generated chord,  with  two  alternatives  for
                        each.

          Generate Harmony
                        Generates the chords to accompany the melody

          Turn Lyric display (ON/OFF)
                        Select whether to display lyrics.
                        The display is faster when OFF

          Turn chord display (ON/OFF)
                        Select whether to display chord symbols
                        The display is faster when OFF

          Enlarge font) Change the size of the displayed music font
          Reduce font )



          3.4. Options submenu
          --------------------

          Save configuration
                        Saves the  configuration  file  to  the  current
                        work directory.
                        Items saved are:
                            Colour scheme
                            Font size
                            Work directory

          Load Configuration
                        Loads  the  configuration  file from the current
                        work directory.

          Display Configuration
                        Displays the configuration details

          Monchrome scheme  )  Alternative colour schemes
          Cyan/Blue scheme  )
          Blue/Cyan scheme  )
          Red/Grey scheme   )

          Change work directory
                Select Drive
                Select Directory




          3.5. Transpose submenu
          ----------------------

          Select steps
                        Select the tnumber of steps for transposition.

          Select key
                        Select  the  target  key  for transposition. You be
                        able to select the key from a pick list.

           Transpose Melody
                        Transpose the melody to a new key, specified by the
                        steps or key selected. The chords and other  voices
                        will automatically be regenerated.

           Transpose Tune
                        Transpose  the  song to a new key, specified by the
                        steps  or  key  selected.  All   voices   will   be
                        transposed.




          3.6. Play submenu
          -----------------

          Turn PC speaker On/Off

          Play melody
                        Plays voice 1 on the PC speaker.
                        Any repeats specified will be actioned.
                        Use Q to stop

          Play voice
                        Plays the selected voice on the PC speaker.
                        Any repeats specified will be actioned.
                        Use Q to stop

          Play with score
                        Plays the melody and displays the score at the same
                        time.  The display slows down the program, and this
                        option  is  only  recommended for a fast PC (486 or
                        greater).

          Play on Sound card
                        Plays  the  melody  on  a  sound  card. You will be
                        invited to select voices. Any  combination  of  the
                        four voices may be selected.

          Select bank file
                        Select  an  instrument  bank file to be used by the
                        sound card. Default is STANDARD.BNK,  which  should
                        be in the current directory.

          Select instrument
                        Select  an instrument from the bank file to be used
                        by one voice when playing on the  the  sound  card.
                        The stored voice will be updated and can be written
                        back to the tune file.

          Staccato      For sound card only, you may enter a value in the
                        range 0 (legato) to 4 (Very staccato)



          3.7. Tablature submenu
          -----------------------
          Options
                        Select tablature option
                        1 = precedence to home row
                        2 = precedence to bellows direction
                        3 = show both alternatives

          Select Instrument
                        Select an instrument definition for tablature

          Display Tablature
                        Display the generated tablature

          Save Tablature to file
                        Save the generated tablature to a text file for
                        later use or printing.



          3.8. Restrictions submenu
          -------------------------

          This  submenu  has no choices, it is only included to list the
          program limits.



                         4. Editing the tune and lyric
                         ==============================

          Editing a Voice
          ---------------
          A very simple edit facility is  included,  which  allows  you  to
          replace  individual  notes  or  chords,  and  to insert or delete
          notes. The chords MUST be kept in  step  with  voice  1,  or  the
          display   may   be   wrong,   so  inserting  into  voice  1  will
          automatically insert a filler into the chord list.

          You will first be asked to select  the  voice,  unless  only  one
          voice is present.  You will then be able to select the note to be
          edited from a menu, and press enter. You can replace the selected
          note  by  another.  The menu also allows you to page forwards and
          backwards through the stored tune.

          Short cuts:

            You do not need to enter the * in column 2, it will be inserted
            for you. Thus A*4E can be entered as A4E.

            Entering  J  or  K  will add the letter to the note to indicate
            joining by beams, or remove it if already present.

            You only need to enter M for a bar, the *** will be  generated.
            Similarly, M ;> will be expanded to M*** ;>

          You can insert notes immediately  after  the  selected  note,  by
          typing >, or delete the selected note by typing !. New notes will
          be validated as they are entered.

          The program will revalidate the bar structure after editing.
          For more substantial changes, it may be better to use the DOS
          Editor.

          Inserting Notes
          ---------------
          You  can  insert notes or append notes to the end of the selected
          voice.  This has been designed to speed input of tunes,  and  the
          following commands are allowed:

          a)  A valid note.

          If  you  just  enter the letter, all other details will be copied
          from the previous note (It will search back past a  bar  to  find
          the previous note)

          If  there  is  no  accidental,  you do not need to enter the * in
          position ie you can type D4E instead of D*4E

          b)  -n will generate a note n steps down from the previous note.

          c)  +n will generate a note n steps up from the previous note
          If you leave out the number, it will assume 1

          d)  Just press enter to copy the previous note (NOT rest)

          e)  Q will end the facility.






          Editing the Chords
          ------------------
          The chord file includes details of three possible chords for  the
          melody  note,  and  the  weighting generated for each.  The chord
          automatically selected will be the one with the highest weighting
          value.

          You can replace this by any other chord that you wish  to  print.
          Note  that  the  notes  displayed will NOT change unless you edit
          them too!

          When changing a chord, just type the chord that you wish  to  see
          displayed and ignore the rest of the information provided.

          Editing the tune name.
          ----------------------
          You can change the tune name. The new name will be saved when you
          save the tune.







                                5. Printing
                                ===========

          The  program  now  has  a proper score print capability, which is
          limited by the restrictions in the BASIC compiler. It provides  a
          pure screen image bit copy to the printer.

          This  means  that  a line of print is restricted to the number of
          pixels across the screen, which is 640 for VGA and  EGA.  (Sorry,
          but  the  language  does not support SVGA). Selecting the printer
          resolution (100 or 150 dpi) therefore does NOT alter  the  number
          of dots, but changes the SIZE of the printed music. 100 dpi gives
          larger print, 150 smaller.

          You  can  either print to a LaserJet compatible on LPT1, or print
          to a file in LaserJet format. The file can then be  copied  to  a
          printer (eg LPT2) by DOS command
                        COPY xxx.PRN LPT2 /b
          where xxx is the tune file.

          I hope to provide a dot-matrix driver soon.

          You can also print to ANY printer, if running under Windows 3.x,
          by the following procedure:

                Run Harmony in a full screen DOS session until
                     the required page is displayed
                Switch the DOS session to a window by Alt+enter
                Click on the '-' (top left) and use the EDIT option to
                     mark and copy the screen
                Paste into a suitable Windows program
                     (Windows Write will work)
                In the DOS session, switch back to full screen mode
                Repeat for each full screen of the score

          You can then print from the Windows prorgam. This procedure  uses
          the  Windows  drivers  to  correct  the aspect ratio and actually
          gives a better looking print.







                               6. Tablature
                               ============

          The  program  can  generate  a  tablature  print  for  free  reed
          instruments  such  as the Anglo Concertina and the Melodeon (also
          known as the Diatonic Accordion or Button Accordion). It can also
          be used for the Chromatic Accordion, such as a B/C or C/C#.

          These instruments work on the same principle as the Harmonica, in
          that the note played depends on  the  direction  of  the  bellows
          (unlike  the Piano Accordion).  They are relatively easy to play,
          and used for many types of music, including Morris dance,  Irish,
          Eastern  European and Cajun. The Push-Pull action gives a natural
          rhythm, and is therefore particularly suited to dance music.

          The tablature is NOT suitable for the  English  and  Duet  system
          concertinas  in which any button will play the same note whatever
          the direction of the bellows.

          Tablature format
          ----------------

          Books tend to use a notation like this:
                    _       _   _
          G row   3 3     4 4 5 5
                 |-------|-------|------------------
                        _
          D row       3 3


          where the number gives the button to use, starting with 1 for the
          lowest note, and the direction is indicated by an overline for  a
          'PULL'  note,  and  nothing for a 'PUSH' note. The top line gives
          notes to be played on the 'G' row, and the  bottom  for  the  'D'
          row, assuming you are using the common D/G instrument.

          The vertical bars indicate musical bar lines.

          This  notation shows only two rows, although it could be expanded
          to 3.

          I  have  produced  a  more  general notation which allows for any
          number of rows in a more compact format. The same notes are shown
          as in the previous example :

          Push    3 3  4 5
                  --1-|----|------------------
                  ---1|----|------------------
          Pull     3 3  4 5







          In this version, push notes are on the top, pull notes are  below
          the lines and the row on the keyboard is indicated by the numbers
          on  the  middle lines. The 'Home row' is the row of the key being
          played, and is not shown, but any use of other rows is  indicated
          by  the  row number.  This notation allows alternative fingerings
          for the same note to be displayed together, if one  is  a  'Push'
          note and the other a 'Pull' note.

          I  have  also  indicated  the note being played (lower case for a
          sharp or flat) and given an indication of the  duration,  with  |
          for  a  quaver (Eighth note) and + for a semiquaver, so the final
          notation looks like this:


                               ||||       (indicates rhythm)
                  GADE BCDE fGfEDCB       (indicates note)
          Push    3 3  4 5   6  5 4       (Push notes)
                  --1-|----|-------||     (row for push notes)
                  ---1|----|-------||     (row for pull notes)
          Pull     3 3  4 5 6 65 4        (Pull notes)

          Options
          =======

          There are often duplicated notes on these  instruments,  allowing
          some  notes to be played, on different buttons, on either push or
          pull.

          Three options are available for generation of the  tablature,  to
          take account of these variations.

          Option  1 gives precedence to the row for the key in which the
          tune is written.

          Option 2 gives precedence to the direction of the bellows when
          playing the previous note. This option tends to highlight runs
          which can be played without changing bellows direction.

          Option 3 shows both possible  notes,  giving  the  player  the
          choice.

          Where  there  are  THREE possible buttons for a note, only two
          can  be  shown,  and  they  must  be  in   different   bellows
          directions.






          Instrument files
          ================

          The   program  needs  an  instrument  definition  file  for  each
          instrument, to match the musical notes to the buttons.  You  must
          therefore  load  an instrument definition before you can generate
          the tablature.

          Instrument files are text files, and must have extension .INS

          I have prepared and included a number of these files  for  common
          instruments:

          Hohner Erica  - D/G melodeon

            This comes in two variants
                ERICA.INS     old  (without accidentals)
                ERICA2.INS    new  (With accidentals on end keys of each row)
            These should suit most D/G melodeons

          Hohner Club Model 3 melodeon in C/F,
          which has a third row of accidentals
                CLUB3.INS

          30 key Anglo Concertina in C/G
                ANGLO30.INS  (NOT YET AVAILABLE)

          For  registered  users  only, I will prepare a file for any other
          suitable instrument, if you can give me details of  the  keyboard
          layout and notes.






                                  7. Bugs
                                  =======


          There are bound to be  SCORES  of  bugs  (sorry!)  in  a  complex
          program,  containing over 8000 lines of BASIC code.  I would like
          to hear of any (via Email or post only,  please)  which  actually
          cause incorrect operation.

          My token Beta tester has not notified me of any, but that doesn't
          mean much, as I don't know whether he has actually tried it yet!


          Display
          -------
          I  KNOW  that  the  scoring facility is not perfect, and I do not
          require feedback about minor quirks in the display, such as notes
          overlapping.  I will continue working on the display.

          Chords
          ------
          I  also  know  that the generated harmony is not likely to be the
          best  possible,  but  I  would  like  to  hear  of  any  discords
          generated.  Please include the voice file in this case, so that I
          can  test  any  correction.   There  needs  to  be  more  work on
          fine-tuning the chord generation algorithm  by  running  a  large
          number of tunes through it.

          Operating System
          ----------------
          The  program  is  designed  and  compiled  for  MS/DOS.  For some
          reason, it does NOT work with Norton DOS, as supplied with Norton
          Utilities. It WILL run in DOS session under WINDOWS 3.x.

          Hardware
          --------
          I cannot ensure that the program works on all hardware -  I  only
          have my own machine for development.



          Sharp/Flat  problem.
          ===================
          The program converts notes to  an  internal  format,  using  a
          number  for  each  note,  for  all processing.  This can cause
          problems for Enharmonic equivalents, ie C#/Db, D#/Eb, Cb/B and
          so on, because they generate  the  same  number.  For  a  note
          within  the  scale  being used, this is no problem, but a note
          with an accidental may be wrongly reconverted for  display  or
          saving.

          The  current  version  of the program will generate only flats
          when the key signature contains flats, and  only  sharps  when
          the key signature contains sharps.

          Therefore  you  may  enter,  say  C#,  but  have  Db displayed
          instead. The actual note is the same, but it may  mislead  the
          experienced  musician.  This  is  not  musically  correct, but
          mainly affects  Minor  keys,  which  are  not  yet  officially
          supported.

          The  program  needs  substantial  changes to carry and reflect
          the ORIGINAL accidental, through processing  and  also  during
          transposition. This will be done as soon as possible.







                                8. Samples
                                ==========

          All samples  provided  are  traditional  or  historical  tunes
          believed  to  be  in  the public domain. If we have mistakenly
          included any copyright tune, then we apologise in advance  and
          will withdraw it as soon as we are notified.


          JACK.SNG       Jack's Maggot - Old English dance tune

          SELL.SNG       Sellenger's Round - old English tune
                         (by William Byrd, I believe)

          BLARNEY.SNG    Blarney Pilgrim - an Irish Double Jig

          BJOKE.SNG      Black Joke - a Morris dance tune from Adderbury
                         Unusual bar structure - 6 bar 'A' music, 10 bar 'B'

          WHISKEY.SNG    Part of 'Whiskey in the jar' illustrating
                         the lyric facility.






                              9. Restrictions
                              ===============


          The number of notes  per  voice,  and  number  of  files  of  the
          selected  type  (ie  SNG  or  V1) per directory are restricted by
          available storage. The current  maximum  values  are  displayable
          from the menu. (500 notes per voice, 200 files) Only 100 bars are
          allowed.  These  values  are due to internal storage restrictions
          inherent in the DOS environment.

          Voices
          ------
          Only 4 voices are allowed at present.

          Keys
          -----
          The only explicitly supported keys are major keys,  and  those
          based  on  a  major  key  note row, such as Dorian and Aeolian
          modes.

          Support for minor keys may  be  added  later  if  there  is  a
          demand.

          The only chords which will be suggested are the  main  chords  of
          the  key  ie  I,  II, IV, V, V7, VI, and the less often used III.
          Thus for the key of C, the chords  generated  would  be  selected
          from C, Dm, F, G, G7, Am, and Em.

          Only root positions and first inversions of chords are used.

          Tied notes are not yet implemented.

          Notes  are  made  up of horizontal ellipses, rather than slanted,
          because they are the only kind provided by the language. I  wrote
          tilted  ellipse subroutine in BASIC, but it was too slow. When we
          all have Pentiums, (is that the right plural?) I may include it.

          Notation
          --------
          Only a subset of full musical notation is available.

          This is not intended to be a full scoring package (yet!) although
          it should handle many simple melodies.

          The scoring and printing facilities are provided mainly in  order
          to  view the generated harmony, and may give unpredicable results
          if used to view voice files which have been edited by hand.

          Some notes may appear on adjacent  positions  on  the  staff.  In
          standard notation, one of the notes will be reversed in order not
          to  overlay  the other.  These collisions are not yet detected or
          handled.






                              10. Registration
                              ================


          This program is made available for a 30-day trial  period.  If
          you  wish  to  make use of it after that, you are requested to
          register.

          This is a moral AND  LEGAL  requirement,  although  it  would  be
          impracticable  to  enforce.   I  am  therefore  dependent on YOUR
          HONESTY. Creating this large and  complex  program  (about  8,000
          lines of code) took several months of effort, in return for which
          I ask only a nominal fee.

          "I am a struggling programmer/musician, with wife  and  family
          to  support.  Please  give  generously...  I  never  reject  a
          payment of MORE than the requested fee."

          Registered users will be provided with  support  and  possibly
          an improved version. I have attempted to keep to the spirit of
          shareware, and do NOT issue crippled software.


          a) By COMPUSERVE (GO SWREG)

          This  is  the  preferred,  and for non-UK residents, the cheapest
          method.  The fee requested is $30. (approx UK pounds 20).  Please
          register  the  program  under the name HARM03.ZIP.  This saves me
          having to update SWREG every time I release a new version!


          b) By post

          We have to ask for an extra amount for non-UK residents, to  help
          to cover the exorbitant bank handling charges.

          The fee requested is 20 pounds sterling if paying in UK currency,
          or  $30  or  equivalent  in your local currency, plus $7 for bank
          handling charges for all other currencies.






                               11. Feedback
                               ============

          I  would  like  to  hear  from  anyone who has suggestions for
          improvement, whether registered or not.

          I would also be interested to hear of a suitable  compiler  or
          library  which  will allow printing of graphics. I have looked
          at GrafWiz, but the version I found does  not  provide  PAINT,
          nor can you generate an arc of a circle or ellipse.








                             12. Future Plans
                             ================


          The  program  is  currently  adequate  for  my  own needs, but
          development  will  continue  if   enough   registrations   are
          received.

          Areas for potential enhancement include:

            Support for a wider range of chord types and for Minor keys

            Improved  score display and print, addition of demisemiquavers

            A  Windows  version.  I  would  like  to hear of any shareware
            TrueType music font.

            Support for MIDI output and/or MIDI files.





          Subtunes
          --------
          Music often  contains  sub  elements  which  are  repeated  at
          different  places  in  the  tune.   For  example, in music for
          dancing, the tunes often have sections referred to as A music,
          B music, C music etc.

          A formula for playing a Morris dance may read

          1/2 A ( (AB2)2 (AC)2 )3

          which is interperted as
            Play half an A music  as  introduction ("Once to yourself")
            Play the following three times:
            Play  ( A music followed by (B  music  twice))  twice
            Play  ( A music followed by C music ) twice

          There are some which are much more complex than this!

          The new phrase repeat facility allows you to implement this
          more concisely.







                           13. Acknowledgements
                           ====================

  Item                    Owner
  ====                    =====
  ACCU music system       Kevin Fischer, Member of ASP
  WINDOWS 3.x             MicroSoft
  QBASIC                  MicroSoft
  HP Laserjet             Hewlett-Packard
  Pentium                 Intel

  The print facility was made possible by hints found within
  David Schneider's 'Handbook of QuickBASIC' (ISBN 0-13-381880-2)
  (Second? edition, 1991)






                                Appendix A
                                ==========


          Song/Tune file definition
          -------------------------

          All song and tune files are plain ASCII text, and can  easily  be
          edited  using  the DOS EDIT command, or any text editor which can
          save ASCII files.

          A Tune file has a file extension of .SNG. It is used to hold  the
          tune name and a list of voice files present.

          Harmony  can  read tune files, but only uses them to get the tune
          name.  It does not need a .SNG file, but will generate  one  when
          saving a tune.

          Note that the ACCU MUSICSYS program requires a blank line as  the
          last line of the SNG file.

          ACCU Compatibility mode
          -----------------------

          A  new  save  command has been added, which removes from the file
          all elements which are not compatible with ACCU Musicsys.

          This will eliminate any triplets, beams joining quavers etc,  and
          the score spacing commands.


          Further incompatibilities with ACCU
          -----------------------------------

          ACCU Musicsys TEMPO command does not seem to work well with music
          in  6/8  and  9/8. In order for the music to be played at correct
          speed, the TEMPO must be doubled. HARMONY does  not  suffer  from
          this,   therefore  files  may  need  editing  before  using  with
          Musicsys.

          In fact, the TEMPO  does  not  seem  to  work  AT  ALL  with  the
          SB-SOUND.COM driver, but does with SOUND.COM






                                Appendix B
                                ==========

          Voice file definition
          ---------------------

          A  Musicsys  voice  file has a file extension of Vn where n is in
          the range 1 to 9. HARMONY only uses voices 1 to 4.

          V1 is always assumed by this program to contain the  melody,  and
          voices  V2  to V4 contain the generated accompaniment. Since they
          are saved as text files, they can be edited with any text editor.

          Each  line  (record)  of  the  file  contains  either  a  note
          definition or a music command. DO NOT  ADD  EXTRA  CHARACTERS,
          EVEN SPACES, TO A LINE, except after a ;

          Extensions not supported by ACCU Musicsys have, where possible,
          been implemented as ACCU comments, ie following a semicolon (;)

          Music Commands available are:

          CLEF=x        Music clef, x=T for treble, B for Bass.
                        N(Tenor), A (alto) and S (soprano) are not supported.

          KEY=nx        Key, n = number, x = S for sharps, F for flats
                        Thus for the key of D, use KEY=2S
                        For C, use KEY=0S

          TIME=x/y      TIme signature, eg 3/4 or 6/8

          TEMPO=nnn     Up  to 3 digits giving the tempo. This can only
                        appear  in  Voice 1.  (Harmony allows it in any
                        voice, but ignores it except in voice 1)

          These will be displayed in the order in which  they  appear,  and
          the   order  show  above  is  recommmended  as  standard  musical
          practice. They can also be used at the start of any bar within the
          tune.



          Bars, Lyrics and comments
          =========================

          INST=xxxxxx
                        Select  instrument.  If the named instrument is not
                        present in the selected bank  (.BNK)  file,  PIANO1
                        will  be  substituted. (Not ACCU compatible) It may
                        appear anywhere within the voice file, but will  be
                        actioned  only once, at the start of the tune.  You
                        cannot,  at  present,   change   to   a   different
                        instrument  later  within the tune.  Only the first
                        occurrence will be actioned.

          M***          New bar

                        M*** ;>n marks the start of a section of  music  to
                        be  played  n times (2 to 9). If n is omitted, 2 is
                        assumed

                        M*** ;< marks the end  of  a  repeated  section  of
                        music

                        M***  ;n  means play the bar only on the 'n'th time
                        through. This will be reflected on the score.

                        Repeats can nested if required

                        M*** ;= generates a double bar line to mark the
                        end of a section without repeats
                        
                        NOTE:
                        Bar/Measure numbers will NOT be incremented when 
                        the following command is ALSO a bar line, and 
                        the current command is a ;< (end repeat)

          Q***          This ACCU command indicates the end of a  file.
                        It  is  currently  allowed   by   Harmony,   but
                        ignored, and is not essential

          ;             indicates a comment. It can be used by itself on  a
                        line,  or  following a note definition, on the same
                        line.

          ;;            following a note definition in VOICE 1 ONLY,
                        indicates the word or part of word to be printed
                        (Lyrics) eg     D*4Q ;;New
                                        G*4E ;;York



          Score appearance
          ================

          @             is a spacing command  (NOT  supported  by  ACCU)
                        which  allows  you  to  adjust  the  spacing of the
                        displayed score, particularly  when  it  is  to  be
                        printed.   It  inserts one horizontal spacing unit,
                        the size of which depends on the font size.  It can
                        also be followed by up  to  two  digits,  thus  @12
                        inserts 12 spacing units.

                        For  reference,  the  width  of  a  crotchet is two
                        spacing units.

          @P            is similar, but spaces by pixels, thus @P3 would
                        insert  a  3-pixel  space.   This   is   for   fine
                        adjustments to the score.

          @F            Forces  a new line. This can be required when a
                        bar containing joined notes spreads over two lines.
                        It should ONLY be used at the start of a bar.

                        If @ commands are  placed  in  Voice  1,  then  the
                        harmony should be regenerated afterwards, otherwise
                        it  may not be displayed correctly. This is because
                        the Chord symbols are linked to voice 1.

                        They may be placed in other voices, but would  then
                        be  lost  if  the harmony were regenerated, because
                        voices 2 to 4 are then totally cleared first. Also,
                        if placed in Voices 2 to 4, they will not have  any
                        effect when displaying just the melody.



          Note Definitions
          ----------------

          A note definition must specify the pitch and duration  of  the
          note.

          The pitch is specified by the first 3 characters, which give  the
          note  name,  any  accidental  (sharp,  flat  or natural), and the
          octave number

          The duration is specified by character 4, and sometimes 5.

          The note name can be A, B, C, D, E, F, G or R (rest). If the note
          belongs  to  the current key, then the second character is *. The
          second character can also be S (sharp) F (Flat) or N (Natural)

          The  octave  number  is  a digit in the range 1 to 7. Octaves run
          from C to B, thus note 1 of octave 1 is C, note 12 of octave 1 is
          B. The total range allowed by this system of notation, as well as
          by the normal BASIC PLAY command, is seven octaves,  notes  1  to
          84.

          The volume of the note can be specified by a / followed by suffix
          P, PP, PPP, MP, F, FF,  FFF  or  MF.  These have no effect yet in
          HARMONY.

          The  ACCU  MUSIC SYSTEM also allows T, to indicate Tied.  This is
          allowed, but ignored, by Harmony.

          Beams
          =====

          Groups of quavers and semiquavers in the same phrase of music are
          usually  shown  joined  together with 'beams'. This is purely for
          dosplay, and has no effect on the sound of the music.

          HARMONY allows commands J or K to be  added  to  a  quaver  or
          semiquaver definition. J will cause a note to be  joined  to  the
          following  note,  K  indicates  the  LAST  note  of a group to be
          joined. (Quavers may be joined to semiquavers  and  vice  versa.)
          See tune BJOKE for examples.



          Triplets and similar constructs
          ===============================

          A  triplet  is  a  group  of  three  notes,  usually  quavers  or
          semiquavers, played in the time usually taken for two notes. This
          is often seen in hornpipes, and sometimes in reels.

          Similarly,  you can have a group of 4 notes played in the time of
          3, found occasionally in jigs.

          The  ACCU  Music  system  does  not  provide facilities for these
          groupings. HARMONY provides an extension of the method  used  for
          beams.  J3  and  K3  indicate that the group of joined notes is a
          triplet, and J4 and K4 indicate a quadruplet.

          Some music also specifies 2 quavers to be played in the time  for
          3  (particularly  in  the 'Slows' in Morris dancing). There is no
          need for a special notation, as two dotted quavers  can  be  used
          instead.

          Triplets will play correctly on a sound  card,  but  due  to  the
          limitations  of the BASIC PLAY command, may not sound quite right
          when played on the PC speaker.

          Files containing these definitions will NOT be acceptable to ACCU
          MUSICSYS.

          Note that end of a bar forces the end of a group of joined notes.






                                Appendix C
                                ==========


          Chord and Harmony files
          -----------------------
          HARMONY  generates  a separate file, with extension .CHD, for the
          generated chord  symbols.   It  also  writes  a  text  file  with
          extension  HAR,  containing  the three best chords as well as the
          weightings assigned to them.  You can  examine  this  and  decide
          whether to change the automatically generated chords.

          It also indicates the type of chord generated, using the standard
          Roman numerals, plus a letter (a,b,c) to indicate which inversion
          it is.

          Thus Ib is the first inversion of the Tonic chord, and V7a is the
          root position of the dominant 7th.  HARMONY does not get generate
          second inversions, as the use of these is more restricted.







                                Appendix D
                                ==========


          Technical details
          -----------------


          This  program  is written in BASIC, and was compiled by MicroSoft
          QuickBASIC V 4.5. It also includes some routines in 'C' to handle
          file and directory lists.

          All notes and some digits have had to  be  composed  from  lines,
          circles  and  arcs!  That explains the peculiar font used for the
          time signature, but at least it can be scaled. Most  letters  are
          taken from the system EGA and VGA fonts.

          If  anyone would like me to release the subroutines for the score
          display as a library, please let me know.






                                Appendix E
                                ==========


          History
          =======

          Changes in version 6
          --------------------
          Print facility added - only HP laserjet so far.

          Lyric facility added - one line only, from voice 1

          One Instrument may be specified for each voice, and a  pick  list
          is provided from the BNK file.

          Bar  options  enhanced. Nested repeats, conditional bars added to
          score, and to playback on PC speaker.  (Not  yet  implemented  in
          PLAY on sound card, nor Play with Score)

          Better screen fonts - the VGA and EGA system fonts are used

          EGA displays now supported

          New option on Transpose menu, to transpose whole tune

          Improved menu - does not always return to the top bar

          Better look-ahead reduces the chance of incorrect display

          Some diagnostic displays removed

          File  selection  no  longer  needs to write to disk, as it is now
          done by using DOS calls instead of reading a DIR list

          Many minor bugs eliminated.

          Changes in version 5 (never uploaded to Compuserve)
          --------------------
          Bug fix in the Chord Generation algorithm, which would  sometimes
          generate the wrong chord.

          Beams joining quavers to semiquavers corrected.

          New facilities in Version 4
          ---------------------------
          SOUND CARD SUPPORT ADDED

             Includes    selection of sound bank file
                         selection of voices.

             Note  that  playing  on  the  sound  card  does  NOT currently
             implement repeats as displayed.

          Generation of random tunes in selected style

             This is just for fun, and no claim is made that the  generated
             tunes will be usable!

          Transpose to specified key

          Display selected voice

          Chord options added. You can now choose how many chords to put to
          a bar, as well as an option to generate one for each melody note.

          Number of joined notes allowed in a group increased to 12.

          New  display  command @F forces a new line, sometimes needed when
          joined phrases cannot be fitted onto current line.

          Other minor improvements to score display, eg larger treble  clef
          sign.

          Stack  size  increased  to  prevent  stack overflow, which caused
          lock-up of the machine.

          Changes in version 3
          --------------------
          Quavers can now be joined to semiquavers with beams

          Generation of harmony improved. The  previous  version  sometimes
          generated a Dominant 7th in inappropriate places.

          Use of Pg Up & Pg Dn keys added to pick lists

          Selection letters added to pick lists

          Support for ACCU format comments, using command ;

          'Play  voice'  option now implements repeats, shown by double bar
          lines

          Tablature for melodeon, anglo concertina added

          Display spacing command @ added

          Editable chord display improved

          New compatibility mode allows you  to  save  an  ACCU  compatible
          file, by removing all HARMONY extensions from the data.

          SOUND option removed from menu - it was not implemented anyway

          Some characters refined, score spacing improved

          Key signatures for 5 and 6 flats in bass clef corrected







                       Appendix F - About the Author
                       =============================

          I have been an  amateur  folk  musician  since  1970.  I  play
          Melodeon  (D/G),  30  key Anglo Concertina, Harmonica, Guitar,
          Bodhran

          Musician for Dubai-Sharjah Morris Dancers (UAE) 1979-82

          Member of groups Ratcliffe Highway and Unadopted Woad in Dubai
          1979-82

          Founder,  Musician  and  Dancer  with  Luxembourg Morris 1983-4

          Dancer and musician with Men of Sweyn's Ey Morris
          (Swansea, Wales) 1994-5

          Musician with Dwy Droed Chwith (Welsh Clog dancers) 1994-5

          Member of "Five Bar Gait" Ceilidh Band 1994-5

          I intend to make as many Morris Dance tunes as possible available
          for  use with Harmony.  This is a slow process, because there are
          over  250 tunes and variants!  I have included just one with this
          package. For Morris enthusiasts, there are now several Web  pages
          on the tradition, including some with tunes to download, but in a
          different notation.

