












                           HARMONY Version 4
                           =================

                     Copyright (c) Neil Jennings 1995




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

          Version 4 supports sound cards, and generates random tunes.

          Requires VGA graphics. A 386 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

           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 VGA graphics, but a 386 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 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.





                       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.





          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

          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.

          Go to DOS
                        Shells out to a DOS session

          Change Directory
                        Select Drive
                        Select Directory

          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.




          3. View submenu
          ---------------

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

          View Melody
                        Displays   the  melody  line  only,  with  chord
                        symbols if generated

          View score
                        Displays the music using Treble and Bass Clefs

          View full score
                        Displays the music using one staff for each voice.

          View Voice    Displays only the selected voice on a single staff

          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

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

          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




          5. Transpose submenu
          --------------------

          Transpose steps
                        Transpose the song to a new key, up  or  down  a
                        number  of  semitones.   The  chords  and  other
                        voices will automatically be regenerated.

          Transpose to Key
                        Transpose the tune to a selected key. You will
                        be able to select the key from a pick list.


          6. Play submenu
          ---------------

          Play melody
                        Plays voice 1 on the PC speaker.

          Play voice
                        Plays  the selected voice on the PC speaker.
                        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.

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



          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.



          8. Restrictions submenu
          -----------------------

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






                            4. Editing the tune
                            ===================

          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.

          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.

          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.

          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 does not yet have a proper  score  print  capability.
          This is not a deliberate omission, but due to restrictions in the
          BASIC  compiler  used,  which  supports  graphic screens, but not
          graphic print. Alternative compilers and graphics  libraries  are
          currently  being  investigated, but nothing suitable has yet been
          found. Short of rewriting the whole thing in C, for  which  I  do
          not have time, I cannot see a solution.

          It  is  possible to print the melody as follows, if running under
          Windows 3.x

                Run HARMONY in a DOS Window, NOT full screen
                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)
                Repeat for each full screen of the score

                You can then print from Windows.

          In  the  longer  term,  if  there  is   sufficient   support   in
          registrations,  I  intend  to  write a Windows version, in Visual
          Basic, which will have a proper print facility.






                               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)

          Two consecutive bar lines force a new line on the tablature  (and
          cause repeat dots to be generated on the score). Otherwise, a new
          line  will  usually be generated at the end of a bar, near to the
          end of the line.

          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.

          (Please DO NOT Email me from Internet unless you are a registered
          user  of  HARMONY,  because  Compuserve  will  charge  me for the
          message, and the reply.)

          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.

          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

          BLARNEY.SNG    Blarney Pilgrim - an Irish Double Jig

          BJOKE.SNG      Black Joke - a Morris dance tune from Adderbury







                              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
          the  internal  data  storage.  The  current maximum values are
          displayable from the menu. (500 notes per voice, 200 files)

          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.

          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).

          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:

            Use  of DOS calls for file/directory/disk selection instead of
            the current method, which  is  to  write  and  read  directory
            listings!

            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.

          Many  tunes  with  repeated  sections contain alternative last
          bars for the repeated part, one to be played on the first time
          through, the other for the last time through. Also,  there  is
          often a finish (CODA) which is only played once, at the end.

          The   Bar   command   M***  could  be  expanded  to  implement
          conditional play.

          For example

            M***S could mark the start of a repeated section

            M***R3 could mark the end, with the number of  times  to  play
            it, which is not necessarily 2

            M***3 could mean only play the bar on the third time through

            M***X3 could mean DO NOT play on the third time through

          Repeats  could  then  be  nested  if  required,  which  is not
          possible with the current implementation.

          (If this facility is implemented, it may not follow the  above
          example)





          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!

          In order to play this with HARMONY, or indeed  with  Musicsys,
          you would have to cut and paste to repeat the notes within the
          file.

          It might nice to have a command which would say "Now play bars
          4-7  "  as a kind of subroutine.  Nested repeats would provide
          part of the functionality.


          Please let me know what  you  think  of  these  proposals,  or
          whatever you would like to see in the program.







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

ACCU music system       Kevin Fischer, Member of ASP
WINDOWS 3x              MicroSoft
QBASIC                  MicroSoft







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


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

          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.

          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)

          When generating extra voices, Harmony needs to map each record in
          voice 1 to each other voice. In order to keep the voices in step,
          it may replace TEMPO by another copy of TIME in  voices  2  -  4.
          This  is  needed because ACCU MUSIC SYSTEM rejects TEMPO in these
          voices.

          These will be displayed in the order in which  they  appear,  and
          the   order  show  above  is  recommmended  as  standard  musical
          practice.

          M***          New bar
                        Note that HARMONY will display repeat dots if
                        two successive barlines are found.

          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.

          @             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  in
          HARMONY.

          The  ACCU  MUSIC SYSTEM also allows T, to indicate Tied.  This is
          not yet supported in 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, and even two notes played  in  the
          time of 3 - this last often occurs in Morris Dances, for 'Slows'

          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.

          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.

          All notes and letters have had to be composed from lines, circles
          and  arcs  -  what a pain!  That explains the peculiar font used,
          but at least it can be scaled.

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






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


          History
          =======

          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


          Previously:
                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

          Currently:

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

                Musician with Dwy Droed Chwith (Welsh Clog dancers)

                Member of "Five Bar Gait" Ceilidh Band

          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.

