denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Scheme Interface (was Re: [Denemo-devel] Staff menu transpose)


From: Richard Shann
Subject: Re: Scheme Interface (was Re: [Denemo-devel] Staff menu transpose)
Date: Wed, 24 Sep 2008 12:52:07 +0100

On Tue, 2008-09-23 at 18:18 +0100, Richard Shann wrote:
> On Tue, 2008-09-23 at 12:11 -0500, Jeremiah Benham wrote:
> > When I write one that does a real transposition should the key
> > signature
> > be changed or remain the same?  
> Finding and transposing keysignatures is a separate operation - it
> needs
> to be done for a normal transpostion operation. 
I have put the infrastructure in place for setting a keysignature from
Scheme. This is checked in to git.
 It has made me think about keysignatures and transposition a bit - I
was quite right that transposing the notes and changing the keysignature
are separate operations.
Consider the transposition 

c des

This is a minor second transposition. If the key signature was already
some flat key then there is no key signature to transpose to, as
keysignatures with double flats do not exist. But it would still be ok
to transpose the notes of a piece, subject to (another) limitation,
namely only double flats are allowed, no more. The keysignature in this
case would most conveniently be set to 7 flats.
This doesn't raise any serious problems, just that we will need a
function to take a keysignature and return a transposed one, limiting
the result to 7-flats and 7-sharps at the extremes. (The notes will
always be correct transposed, regardless of keysignature).

Next I will work on the corresponging query functions, I propose the
syntax
(d-InitialKey?)
which will be syntactic sugar for (d-InitialKey "query")
This will require a standard initialization script for scheme, which we
don't have yet. The most important thing it could do is to stop guile
aborting when encountering an error, but I do not know how to do that
(HELP PLEASE).

Richard






reply via email to

[Prev in Thread] Current Thread [Next in Thread]