Elf Open Source

As the world's first online composing engine, the primary goal of Elf is to introduce computer composition to a larger audience, and to foster greater understanding of composition generally. A related aim is to share the technical ideas and algorithms of machine composing engines with the ringing community, in the hope that this will encourage faster development of better composition algorithms in the future. To further these goals Elf has been made open source.

What does this mean in practice? Well, anyone can download the Elf source code, examine it, reuse it, improve on it, and redistribute it. There is complete freedom of use of the source code. However, I also want this freedom to be protected in the future. For that reason, the code is subject to the GNU General Public Licence (GPL). This is a form of copyright which in essence says that, whatever use is made of the source code, it must not be built into any proprietary software from which the same freedoms have been removed. If you've benefitted from my work, the world must also benefit from yours.

For more information about Free Software, see:

For the terms of the GNU General Public Licence, see:

The source code for Elf is written in the Java programming language and is currently compatible with Sun's version 1.1 JDK, in order to run within common web browser JVMs. You can browse the generated javadoc (program documentation) from this link:
To download a zip file containing the entire source code (60K) click this link:
The Elf White Paper gives an overview of the algorithms and optimisation strategies used by Elf. It's a good idea to read this before looking at the source code documentation:
Elf White Paper

As explained above, you are welcome to study, modify and redistribute the source code in any way you see fit, subject to the restrictions of the GPL. However if you do have any queries or suggestions, find bugs, or want to talk about new features or new directions in computer composition, I'd love to hear from you. At the moment it's best to email me on elf@bronze-age.org; if there is sufficient interest I will set up a technical mailing list for the project.

Mark B. Davies
May 2002.