#!@TARGET_PYTHON@
#
-# msdi2ly.py -- LilyPond midi import script
+# midi2ly.py -- LilyPond midi import script
#
# source file of the GNU LilyPond music typesetter
#
-# (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
+# (c) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
# Jan Nieuwenhuizen <janneke@gnu.org>
'''
import os
-import string
import sys
"""
## CONSTANTS
-output_name = ''
LINE_BELL = 60
-scale_steps = [0,2,4,5,7,9,11]
+scale_steps = [0, 2, 4, 5, 7, 9, 11]
global_options = None
-
clocks_per_1 = 1536
clocks_per_4 = 0
program_name = sys.argv[0]
program_version = '@TOPLEVEL_VERSION@'
+authors = ('Jan Nieuwenhuizen <janneke@gnu.org>',
+ 'Han-Wen Nienhuys <hanwen@xs4all.nl>')
+
errorport = sys.stderr
def identify ():
def warranty ():
identify ()
ly.encoded_write (sys.stdout, '''
-Copyright (c) %s by
+%s
- Han-Wen Nienhuys
- Jan Nieuwenhuizen
+ %s
%s
%s
-''' ( '2001--2006',
- _('Distributed under terms of the GNU General Public License.'),
- _('It comes with NO WARRANTY.')))
-
+''' % ( _ ('Copyright (c) %s by') % '2001--2009',
+ '\n '.join (authors),
+ _ ('Distributed under terms of the GNU General Public License.'),
+ _ ('It comes with NO WARRANTY.')))
def progress (s):
ly.encoded_write (errorport, s + '\n')
def error (s):
progress (_ ("error: ") + s)
- raise _ ("Exiting... ")
+ raise Exception (_ ("Exiting... "))
def system (cmd, ignore_error = 0):
return ly.system (cmd, ignore_error=ignore_error)
return p + e
-
class Duration:
allowed_durs = (1, 2, 4, 8, 16, 32, 64, 128)
def __init__ (self, clocks):
# all include ALL_NOTES_OFF
elif e[1][0] >= midi.ALL_SOUND_OFF \
and e[1][0] <= midi.POLY_MODE_ON:
- for i in pitches.keys ():
+ for i in pitches:
end_note (pitches, notes, t, i)
elif e[1][0] == midi.META_EVENT:
if e[1][1] == midi.END_OF_TRACK:
- for i in pitches.keys ():
+ for i in pitches:
end_note (pitches, notes, t, i)
break
for ch in chs:
t = ch[0]
- i = string.rfind (lines[-1], '\n') + 1
+ i = lines[-1].rfind ('\n') + 1
if len (lines[-1][i:]) > LINE_BELL:
lines.append ('')
-
+
if t - last_t > 0:
lines[-1] = lines[-1] + dump_skip (skip, t-last_t)
elif t - last_t < 0:
last_t, bar_count)
lines[-1] = lines[-1] + s
- return string.join (lines, '\n ') + '\n'
+ return '\n '.join (lines) + '\n'
def track_name (i):
return 'track%c' % (i + ord ('A'))
def get_option_parser ():
p = ly.get_option_parser (usage=_ ("%s [OPTION]... FILE") % 'midi2ly',
- version="midi2ly (LilyPond) @TOPLEVEL_VERSION@",
- description=_ ("Convert %s to LilyPond input.") % 'MIDI')
+ description=_ ("Convert %s to LilyPond input.\n") % 'MIDI',
+ add_help_option=False)
p.add_option ('-a', '--absolute-pitches',
action='store_true',
p.add_option ('-e', '--explicit-durations',
action='store_true',
help=_ ("print explicit durations"))
+ p.add_option("-h", "--help",
+ action="help",
+ help=_ ("show this help and exit"))
p.add_option('-k', '--key', help=_ ("set key: ALT=+sharps|-flats; MINOR=1"),
metavar=_ ("ALT[:MINOR]"),
default='0'),
p.add_option ('-V', '--verbose', help=_ ("be verbose"),
action='store_true'
),
+ p.version = "midi2ly (LilyPond) @TOPLEVEL_VERSION@"
+ p.add_option("--version",
+ action="version",
+ help=_ ("show version number and exit"))
p.add_option ('-w', '--warranty', help=_ ("show warranty and copyright"),
action='store_true',
),
p.add_option ('-x', '--text-lyrics', help=_ ("treat every text as a lyric"),
action='store_true')
-# urg, Python 2.5 optparse is broken, it doesn't accept Unicode strings
- p.add_option_group (_ ("Examples").encode (sys.stdout.encoding),
+ p.add_option_group (ly.display_encode (_ ("Examples")),
description = r'''
- midi2ly --key=-2:1 --duration-quant=32 \
- --allow-tuplet=4*2/3 --allow-tuplet=2*4/3 foo.midi
+ $ midi2ly --key=-2:1 --duration-quant=32 --allow-tuplet=4*2/3 --allow-tuplet=2*4/3 foo.midi
''')
- p.add_option_group (_ ('Bugs').encode (sys.stdout.encoding),
- description=(_ ('Report bugs via')
- + ''' http://post.gmane.org/post.php'''
- '''?group=gmane.comp.gnu.lilypond.bugs\n'''))
+ p.add_option_group ('',
+ description=(
+ _ ('Report bugs via %s')
+ % 'http://post.gmane.org/post.php'
+ '?group=gmane.comp.gnu.lilypond.bugs') + '\n')
return p
warranty ()
sys.exit (0)
if 1:
- (alterations, minor) = map (int, string.split (options.key + ':0', ':'))[0:2]
+ (alterations, minor) = map (int, (options.key + ':0').split (':'))[0:2]
sharps = 0
flats = 0
if alterations >= 0:
g = strip_extension (g, '.MID')
(outdir, outbase) = ('','')
- if not output_name:
+ if not global_options.output:
outdir = '.'
outbase = os.path.basename (g)
o = os.path.join (outdir, outbase + '-midi.ly')
- elif output_name[-1] == os.sep:
- outdir = output_name
+ elif global_options.output[-1] == os.sep:
+ outdir = global_options.output
outbase = os.path.basename (g)
os.path.join (outdir, outbase + '-gen.ly')
else:
- o = output_name
+ o = global_options.output
(outdir, outbase) = os.path.split (o)
if outdir != '.' and outdir != '':