Arvid Grøtting <[EMAIL PROTECTED]> writes:
> This seems to be a etf2ly issue. Is it a known bug? Is there an easy
> fix?
OK, I know it's rude of me to follow up to myself, but there's a fix
now. Ugly, but it seems to work for fis minor with at least one
piece; YMMV.
Oh, and I fixed one other thing while I was at it. ;-)
--
Arvid
Cut here, if you see a great need to cut at all: --->8--
--- scripts/etf2ly-orig.py Tue Sep 9 12:24:22 2003
+++ scripts/etf2ly.py Mon Oct 6 17:57:38 2003
@@ -97,17 +97,30 @@
while accidental_bits < 256:
p = transpose (p, (3,0))
accidental_bits = accidental_bits + 1
-
+
+ if bank_number == 1:
+ # minor scale
+ p = transpose (p, (5, 0))
p = (p[0] % 7, p[1])
- return p
+ return KeySignature (p, bank_number)
# should cache this.
-def find_scale (transposition):
+def find_scale (keysig):
cscale = map (lambda x: (x,0), range (0,7))
- trscale = map(lambda x, k=transposition: transpose(x, k), cscale)
-
+ print "cscale: ", cscale
+ ascale = map (lambda x: (x,0), range (-2,5))
+ print "ascale: ", ascale
+ transposition = keysig.pitch
+ if keysig.sig_type == 1:
+ transposition = transpose(transposition, (2, -1))
+ transposition = (transposition[0] % 7, transposition[1])
+ trscale = map(lambda x, k=transposition: transpose(x, k), ascale)
+ else:
+ trscale = map(lambda x, k=transposition: transpose(x, k), cscale)
+ print "trscale: ", trscale
return trscale
+
def EDU_to_duration (edu):
log = 1
d = 4096
@@ -384,7 +397,25 @@
str = """\nverse%s = \\lyrics {\n %s}\n""" % (encodeint (self.number
- 1) ,str)
return str
+class KeySignature:
+ def __init__(self, pitch, sig_type = 0):
+ self.pitch = pitch
+ self.sig_type = sig_type
+ def signature_type (self):
+ if self.sig_type == 1:
+ return "\\minor"
+ else:
+ # really only for 0, but we only know about 0 and 1
+ return "\\major"
+
+ def equal (self, other):
+ if other and other.pitch == self.pitch and other.sig_type ==
self.sig_type:
+ return 1
+ else:
+ return 0
+
+
class Measure:
def __init__(self, no):
self.number = no
@@ -502,9 +533,10 @@
e = ''
if g:
- if last_key <> g.key_signature:
- pitch= g.key_signature
- e = e + "\\key %s \\major " % (lily_notename
(pitch))
+ if g.key_signature and not
g.key_signature.equal(last_key):
+ pitch= g.key_signature.pitch
+ e = e + "\\key %s %s " % (lily_notename
(pitch),
+
g.key_signature.signature_type())
last_key = g.key_signature
if last_time <> g.timesig :
@@ -1093,7 +1125,7 @@
sys.stderr.write ("\nLyrics found; edit to use \\addlyrics to
couple to a staff\n")
if staffs:
- str = str + '\\score { < %s > } ' % string.join (staffs)
+ str = str + '\\score { << %s >> } ' % string.join (staffs)
return str
___
Lilypond-user mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/lilypond-user