[r-t] Distances in composition space

Mark Davies mark at snowtiger.net
Sun Nov 18 13:20:48 UTC 2007

Part of the job of Pealsec for my association is recording compositions, and
I, like previous secs before me, try not to re-record compositions that have
been rung before. We also like to spot comps that are close variations of
ones previously-rung, and add a note to this effect in the records. There
are one or two composer/conductors who will happily re-compose something
they have come up with years before, without realising, so matches are more
common than you'd think.

Anyway, this is one of the more interesting parts of the job, but
nevertheless can get mundane and is highly time consuming. I'd like to
automate it, or at least have a tool that could make the job quicker and
more accurate.

Here's what I currently do, by hand:

1. Examine the new composition. Is it relatively simple and so likely to
have appeared in the literature before? If so I'll check standard sources
like Comp500 etc in addition to the G&B collection, otherwise I will just
check our collection. Does it look applicable to only one leadhead group, or
will I need to search comps for other groups?

2. Next I will identify certain key features of the composition. Does it use
split-tenors courses, and if so is this an integral part of the arrangement,
or perhaps just a shortening of a tenors-together version, e.g. MIVWH for H
in Royal? Is it in parts, or "nearly" so (a one-part with repeated blocks)?
Is the length important, or could variations of it have different lengths?
Finally, I look for features of the composition which serve as a signature
for it: for instance, a distinctive group of calls - maybe it has 5B
somewhere; or it could be an absence, perhaps no calls at Home. I like to
look for features which are invariant by reversal, as occasionally "new"
compositions appear which are simply reversals of the old.

3. Then I scroll through the composition collection looking for anything
that matches my signature. Once I've got my eye in and the pattern-matching
part of my brain is fired up, this is pretty quick and accurate, but
nevertheless requires a great deal of concentration and, for popular areas
like a, f or mx-type compositions in Major, or for Grandsire and Stedman on
any number, can take a while as we have hundreds of such comps.

So, how to add some machine assistance to this process? Ideally we'd be able
to assign a signature value to a composition, and then be able to calculate
distances between two signature values in order to tell us how
closely-related two compositions are. In effect this would create a
composition space, with a distance metric equivalent to some concept of

In practice it seems very hard to imagine how such a signature-generated
composition space could be created. What in fact is it that makes two
compositions similar? It is not necessarily the music they generate - start
a composition at the second course-end and you don't have a new composition,
but you do have totally different music. It is something to do with the
pattern of calls, however this seems difficult to pin down.

The best idea I have come up with so far is to look at units of permutation
within the composition. Start with fine-grained units of two calls: take
every pair of calls within the composition, and calculate what permutation
they create. Then move to groups of three calls, four calls, and so on up to
say half the size of the composition. If there are n calls in the
composition, you will have (for round blocks) n setsof call pair 
permutations, n sets of call triplet permutations, and so on up to n sets of 
n/2-call permutations.

Now you can compare one composition to another, using these sets of
permutations. Simply count up the number of permutations that exist in both
compositions. Does it matter whether the match is at fine-grained or
course-grained level? I don't know - maybe not. Certainly finding two pairs
of calls in each composition which give the same permutation wouldn't be a
surprise even in two totally different arrangements, but also finding two
sets of 100 calls which give you the same permutation wouldn't tell us very
much either - because the calling within the two blocks might be totally
different. But if you got enough matches at any level, well that would start
to say something. I think.

Anyone got any comments on this, or got any better ideas?


More information about the ringing-theory mailing list