                        ETHYMONICS FREE MUSIC LICENSE

                           Version 1, August 2000

                   Copyright (C) 2000, Ethymonics Limited

   Everyone is permitted to copy and distribute verbatim copies of this
   license document, but changing it is not allowed.

                                  Preamble

   The licenses for most musical works are designed to take away your
   freedom to share the music. By contrast, this Free Music License is
   intended to guarantee your freedom to make copies of a piece of music,
   and charge for this service if you wish. Recipients of those copies
   have the same freedom. The word "Free" in "Free Music License" means
   the freedom to make copies. It does not mean that those copies cannot
   then be sold.

   This license is designed to protect and pass on the right to make
   copies to whoever receives a copy. This encourages wide distribution on
   the artist's behalf. You can apply this license to your own music too.

   To protect the right to copy the music, it is necessary to pass on
   certain requirements that must be followed when the music is copied or
   distributed. For example, if you distribute a piece of music subject to
   this license, even if this is done for a fee, you must give the
   recipients all the rights that you have. You must show them these terms
   so that they know their rights.

   The freedom to copy is protected by two things: (1) Copyright of the
   music, and (2) This license that provides legal permission to copy and
   distribute the music.

   The precise terms and conditions for copying, distribution and
   performance follow.

                             FREE MUSIC LICENSE

       TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND PERFORMANCE

   1. This License applies to any musical work or other type of work which
   has a notice placed by the copyright holder saying that it may be
   distributed under the terms of this Free Music License. The "Music",
   below, refers to any such music or work, whether in a recording,
   performance or other form of musical representation, or any derivative
   work under copyright law: that is to say, a work, in any medium,
   containing the Music or a portion of it, either unaltered, modified and
   or re-performed.

   You may play or perform the Music publicly, for example in a broadcast,
   provided that you make available to listeners the title of the work and
   the name of the Artist. A recording made as a result of the Music being
   played or performed is covered by this License when its contents
   constitute a work based on the Music. If a listener wishes to make
   copies of such a recording, the terms and conditions of this License
   must be made available to them, along with any other information
   required to make and distribute copies according to the terms and
   conditions of this License.

   2. You may copy and distribute copies of the Music as you receive it,
   in any medium, provided that you:

   (a) conspicuously and appropriately publish on each copy an appropriate
   copyright notice;

   (b) keep intact all the notices that refer to this License;

   (c) supply, with each copy of the Music, all significant information
   about the Music, including the title of the work, the name of the
   artist, and the names and roles of all credited personnel;

   (d) supply, to each recipient of the Music, along with the Music,
   either a copy of this License or a clearly visible URL that lets the
   recipient know where to find a copy of this License on the Internet.

   If the information required by (a) to (d) above is not available, for
   example when the Music has been received by making a recording of a
   performance, then this information must be obtained independently and
   no copies can be made or distributed without this information being
   included with each copy of the Music.

   You may, at your option, charge a fee for the act of supplying a copy
   of the Music.

   3. You may not copy, distribute, perform or sub-license the Music
   except as expressly provided under this License. Any attempt to
   otherwise do so is void, and will automatically terminate your rights
   under this License. However, parties who have received copies, or
   rights, from you under this License will not have their Licenses
   terminated as long as such parties remain in full compliance.

   4. You are not required to accept this License, since you have not
   signed it. However, nothing else grants you permission to copy,
   distribute, play or perform the Music or any of its derivative works.
   Therefore, by copying, distributing, playing or performing the Music,
   or any of its derivative works, you indicate your acceptance of this
   License to do so, and all of its terms and conditions.

   5. Each time you redistribute the Music the recipient automatically
   receives a license from the original licensor to copy, distribute, play
   and or perform the Music subject to the terms and conditions of this
   License. You may not impose any further restrictions on the recipient's
   exercise of the rights granted herein. You are not responsible for
   enforcing compliance by third parties to this License.

   6. If, as a consequence of a court judgment or allegation of copyright
   infringement or for any reason (not limited to copyright issues),
   conditions are imposed on you (whether by court order, agreement or
   otherwise) that contradict the conditions of this License, they do not
   excuse you from the conditions of this License. If you cannot satisfy
   simultaneously your obligations under this License and any other
   pertinent obligations, then your rights under this License are
   terminated. For example, if an existing agreement would not permit
   royalty-free redistribution of the Music by all those who receive
   copies directly or indirectly through you, then the only way to satisfy
   both it and this License would be to refrain entirely from
   redistributing the Music.

   If any portion of this section is held invalid or unenforceable under
   any particular circumstance, the balance of the section is intended to
   apply and the section as a whole is intended to apply in other
   circumstances.

   It is not the purpose of this section to induce you to infringe any
   copyright or other property right claims or to contest validity of any
   such claims; this section has the sole purpose of protecting the
   integrity of a music distribution system, which is implemented by
   copyright and license practices.

   7. If an activity permitted by this License is restricted in certain
   countries either for copyright or other reasons, the original copyright
   holder who places the Music under this License may add an explicit
   geographical distribution limitation excluding those countries, so that
   distribution is permitted only in or among countries not thus excluded.
   In such cases, this License incorporates the limitation as if written
   in the body of this License.

   8. Ethymonics may publish revised and or new versions of the Free Music
   License from time to time. Such new versions will be similar in spirit
   to the present version, but may differ in detail to address new
   problems as they arise.

   Each License is given a distinguishing version number. If the Music
   specifies a version number of this License which applies to it, and
   "any later version", you have the option of following the terms and
   conditions either of that version or any later version published by
   Ethymonics. If the Music does not specify a version number of this
   License, you may choose any version ever published by Ethymonics.

   9. If you wish to incorporate parts of the Music into another work
   whose distribution conditions are different, write to the composer to
   ask for permission.

                          END OF FREE MUSIC LICENSE
