Fix bug in previous version - compositions were being shown unrotated, despite
the music for the best rotation being claimed.
Method libraries updated to latest as of 2015-12-19.
Undómiel-C
Now compatible with Google Chrome and IE8.
Recent browsers have tightened up their Javascript implementation, causing occasional problems
for Undómiel-B. In particular, it was impossible to add or change music definitions in IE8,
and the methods list and Elf version did not display on first load. Similar problems existed in Chrome.
All should now be fixed.
Some minor bug-fixes and performance improvements in the areas of rotation checking and
touch termination.
Undómiel-B
Added Plain and Alliance libraries, allowing easy access to these method types.
Using methods of different lead length means parts are no longer of fixed length; so if
such a composition type is detected, the correct range of lengths is displayed, and
new "min" and "max" length settings can be altered by the user to restrict this.
Some Undómiel-A Javascript bugs fixed in the music definition page.
Enlarging the "top N" list too much can harm pruning performance - put a warning to this effect
on the main composer page, and elaborated in Elf Help.
Workaround for a Safari bug - the "top N" list is now formatted as an HTML page for Safari only,
rather than text/plain.
Fixed and added to the "nice" 4-part part-end list.
Some further very minor graphics improvements
Undómiel has now been tested and verified on Firefox, Safari, IE6/7 and Netscape 7.1, and
on Windows XP and Vista, Linux and Apple Mac.
Undómiel-A
Support for Mozilla/Firefox and IE6/7, with the Sun Java plugin.
Users can now change the number of compositions to keep in the "top N" list.
Minor look-and-feel improvements
Tinúviel-B
The number of compositions kept in the "top ten" list can now be customised (but is not exposed to UI).
Fixed a minor bug affecting the initial minimum COM - it was being set too high
in some cases, for example preventing some very short touches of half-lead spliced
from being found.
Tinúviel build
Elf has been open-sourced under the GPL licence.
A "Java Problems" page has been added with information about the Microsoft VM
and Sun Java plug-in. The Elf page now checks to see whether Elf can run successfully
with the installed Java VM.
The Music dialog now allows the COM and method balance weighting values to
be configured, allowing full control over all aspects of composition score.
A bug fixed in the Music dialog which disallowed music scores of more than 9.
Two bugs fixed in the calculation of initial minimum COM: single-method searches
(1-spliced) now become possible, and it is also now possible to specify "Max COM" for
2-spliced searches with an odd number of leads in the part, because a single duplicate
lead pair is allowed for this search.
The method balance percentage now includes a measure of distribution of methods
between first and second half-leads (for half-lead spliced). A composition will
only score 100% if each method occurs the same number of times in both the first and
second halves. This value is now also used by the heuristic pruning algorithm,
which should result in faster and faster search speed as compositions with better
method distribution are found (unless of course the pruning has already been set to
the maximum value with the "optimum balance" composing option).
Indis build
It is now possible to fix the halflead COM - that is, produce leadhead-spliced-only
compositions - by ticking the "LH spliced only" option. Bobs are automatically
enabled in this mode.
An easier-to-use Method Library dialog split into two pages has been provided.
The first page is a simplified composition method chooser;
the second a "library management" page with the functions for changing abbreviations,
removing methods completely, and importing from the MicroSiril libraries.
On both pages methods are listed in alphabetical order of their abbreviation.
Fixed a bug in the Eärwen with-bobs search - not all compositions were being found.
"Nice" part-ends for 10-part searches added. For 7, 10 and 12-parts searches the
tenors-together option has also been made to work meaningfully: it ensures that there
is at least one coursing pair unaffected in each part, as for example in
Norman Smith's 23-spliced.
Most windows and layouts scale sensibly for Windows "large fonts".
An "Example Compositions" page has been added to Elf Help.
The rotationally-sorted search algorithm is now used for all searches. Other
performance enhancements include:
Use of composite methods to collapse the half-lead nodes into single leads.
Precalculation of all music tables.
Optimisation of the composition rotation checker.
Leadheads proof-checked during search, and results from full composition proof
fed back into the search pruner - effective for longer searches, especially
leadhead-only.
A five-fold improvement in table-building speed, but due to the composite
method table more data to be built; overall, build time approximately halved.
Whilst the rotational sort algorithm is not directly comparable with the previous
conventional search engine, and the actual leads/second rate is in fact slightly less,
the effective comparative rate for the 8-spliced ATW search is approximately
16.5 million.
Eärwen build
Music types and scoring can now be configured using the Elf Music
dialog.
Multiple methods can be selected in the Add and Remove lists.
The MicroSiril libraries are now available on the Add Method page.
"Nice" part-ends for 12-part searches added; those for 4-parts improved.
Searches can be paused and resumed.
The current top ten compositions can be viewed in a separate text window;
only the best composition now updated dynamically on the main composer page.
Many improvements to the content and layout of the web pages.
Fixed a bug where the final stats weren't updated with the end-of-search values.
Three times speed improvement over Elenwë build, from the following optimisations:
Almost all memory pre-allocated - zero garbage collection now required unless
compositions are being output.
Precalculated music tables used to speed up scoring - for every possible
leadhead and halflead, a music count for each method is stored to prevent
every row having to be calculated. These tables are however built up on the fly,
to avoid lengthening the initial table build phase. The music tables
are normally fully built within five minutes of the search start, after which
the search proceeds at full speed. Note that compositions are now pruned for
music before proving.
A separate composing loop spawned off for the bobs search. Call code then
removed from the primary loop, speeding up search and backtrack.
Checks for stats update and abort status performed less often.
Rearrangement and fine-grain code optimisation of inner composing loops.
Benchmark leads/second rate now 3.6 million.
Elenwë build
The first build of Elf, the applet version of the
original half-lead spliced composing engine. Allows the user to specify
number of leads, parts, methods, and five composing options.
Major optimisation work for delivery to 1.1 browser VM. Optimisations include:
Row-node tables - one node created per row on 8 bells (40320 total). These
contain pre-built permutation links for every possible place notation plus
the leadhead and half-lead permutations of the chosen methods. The composing
loop therefore no longer needs to permute rows.
Code optimisations including finalising (inlining) methods, reducing
garbage collection, and use of efficient data structures.
Benchmark leads/second rate approximately 1.4 million.