-#!@PYTHON@
+#!@TARGET_PYTHON@
# -*- coding: utf-8 -*-
# once upon a rainy monday afternoon.
#
# %%LY now supported.
# \breve and \longa supported.
# M:none doesn't crash lily.
+# lilypond '--' supported.
# Enhancements (Guy Gascoigne-Piggford)
#
program_name = sys.argv[0]
-datadir = '@local_lilypond_datadir@'
-if not os.path.isdir (datadir):
- datadir = '@lilypond_datadir@'
-
-sys.path.insert (0, os.path.join (datadir, 'python'))
-
-if os.environ.has_key ('LILYPONDPREFIX'):
- datadir = os.environ['LILYPONDPREFIX']
- while datadir[-1] == os.sep:
- datadir= datadir[:-1]
-
- datadir = os.path.join (datadir, "share/lilypond/current/")
-sys.path.insert (0, os.path.join (datadir, 'python'))
+for d in ['@lilypond_datadir@',
+ '@lilypond_libdir@']:
+ sys.path.insert (0, os.path.join (d, 'python'))
# dynamic relocation, for GUB binaries.
-bindir = os.path.split (sys.argv[0])[0]
+bindir = os.path.abspath (os.path.split (sys.argv[0])[0])
for p in ['share', 'lib']:
datadir = os.path.abspath (bindir + '/../%s/lilypond/current/python/' % p)
- sys.path.insert (0, os.path.join (datadir))
+ sys.path.insert (0, datadir)
+
import lilylib as ly
global _;_=ly._
if string.count(a, '/') == 1:
array=string.split(a,'/')
numerator=array[0]
- if numerator != 1:
+ if int(numerator) != 1:
sys.stderr.write("abc2ly: Warning, unable to translate a Q specification with a numerator of %s: %s\n" % (numerator, a))
array2=string.split(array[1],'=')
denominator=array2[0]
perminute=array2[1]
duration=str(string.atoi(denominator)/string.atoi(numerator))
- midi_specs=string.join(["\\tempo", duration, "=", perminute])
+ midi_specs=string.join([" \n\t\t\context {\n\t\t \Score tempoWholesPerMinute = #(ly:make-moment ", perminute, " ", duration, ")\n\t\t }\n"])
else:
sys.stderr.write("abc2ly: Warning, unable to parse Q specification: %s\n" % a)
def slyrics_append(a):
a = re.sub ( '_', ' _ ', a) # _ to ' _ '
- a = re.sub ( '-', '- ', a) # split words with -
+ a = re.sub ( '([^-])-([^-])', '\\1- \\2', a) # split words with "-" unless was originally "--"
a = re.sub ( '\\\\- ', '-', a) # unless \-
a = re.sub ( '~', '_', a) # ~ to space('_')
a = re.sub ( '\*', '_ ', a) # * to to space
'~' : '^"~" ',
'J' : '', # ignore slide
'R' : '', # ignore roll
+ 'S' : '^\\segno',
+ 'O' : '^\\coda',
'v' : '^\\downbow'
}
#convention, such as most music written before 1700, or ethnic music in
#non-western scales, it is necessary to be able to tell a translator that
#the barlines should not affect its interpretation of the pitch.
- if (string.find(str,'nobarlines') > 0):
+ if 'nobarlines' in str:
nobarlines = 1
elif str[0:3] == '%LY':
p = string.find(str, 'voices')