X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fmidi2ly.py;h=d8d51d667bb9eb520b9fb1f66f5b77443bca6202;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=256063d6795fdb60a0d6fabd1982c58bcc6686db;hpb=9f3572d98bb948c9689cd1f75401a029451fa001;p=lilypond.git diff --git a/scripts/midi2ly.py b/scripts/midi2ly.py index 256063d679..d8d51d667b 100644 --- a/scripts/midi2ly.py +++ b/scripts/midi2ly.py @@ -1,10 +1,10 @@ #!@TARGET_PYTHON@ # -# msdi2ly.py -- LilyPond midi import script +# midi2ly.py -- LilyPond midi import script # # source file of the GNU LilyPond music typesetter # -# (c) 1998--2006 Han-Wen Nienhuys +# (c) 1998--2008 Han-Wen Nienhuys # Jan Nieuwenhuizen @@ -22,52 +22,24 @@ TODO: ''' import os -import string import sys -################################################################ -# Users of python modules should include this snippet. -# -libdir = '@local_lilypond_libdir@' -if not os.path.isdir (libdir): - libdir = '@lilypond_libdir@' - -# ugh -datadir = '@local_lilypond_datadir@' -if os.environ.has_key ('LILYPONDPREFIX'): - datadir = os.environ['LILYPONDPREFIX'] - while datadir[-1] == os.sep: - datadir= datadir[:-1] - libdir = datadir.replace ('/share/', '/lib/') - -if os.path.exists (os.path.join (datadir, 'lib/lilypond/@TOPLEVEL_VERSION@/')): - libdir = os.path.join (libdir, 'lib/lilypond/@TOPLEVEL_VERSION@/') - -if os.path.exists (os.path.join (datadir, 'lib/lilypond/current/')): - libdir = os.path.join (libdir, 'lib/lilypond/current/') - -sys.path.insert (0, os.path.join (libdir, 'python')) - -# dynamic relocation, for GUB binaries. -bindir = os.path.split (sys.argv[0])[0] - -for prefix_component in ['share', 'lib']: - datadir = os.path.abspath (bindir + '/../%s/lilypond/current/python/' % prefix_component) - sys.path.insert (0, datadir) +""" +@relocate-preamble@ +""" import midi import lilylib as ly +global _;_=ly._ ################################################################ -################ CONSTANTS +## 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 @@ -81,15 +53,6 @@ allowed_tuplet_clocks = [] ################################################################ -localedir = '@localedir@' -try: - import gettext - gettext.bindtextdomain ('lilypond', localedir) - gettext.textdomain ('lilypond') - _ = gettext.gettext -except: - def _ (s): - return s program_name = sys.argv[0] program_version = '@TOPLEVEL_VERSION@' @@ -101,7 +64,7 @@ def identify (): def warranty (): identify () - sys.stdout.write (''' + ly.encoded_write (sys.stdout, ''' Copyright (c) %s by Han-Wen Nienhuys @@ -115,14 +78,14 @@ Copyright (c) %s by def progress (s): - errorport.write (s + '\n') + ly.encoded_write (errorport, s + '\n') def warning (s): progress (_ ("warning: ") + s) 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) @@ -133,8 +96,6 @@ def strip_extension (f, ext): e = '' return p + e - - class Duration: allowed_durs = (1, 2, 4, 8, 16, 32, 64, 128) @@ -519,12 +480,12 @@ def events_on_channel (channel): # 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 @@ -708,10 +669,10 @@ def dump_channel (thread, skip): 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: @@ -734,7 +695,7 @@ def dump_channel (thread, skip): 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')) @@ -881,23 +842,26 @@ def convert_midi (in_file, out_file): def get_option_parser (): - p = ly.get_option_parser (usage='midi2ly [OPTIONS] FILE', - version="midi2ly (LilyPond) @TOPLEVEL_VERSION@", - description=_('''Convert MIDI to LilyPond source.''')) + p = ly.get_option_parser (usage=_ ("%s [OPTION]... FILE") % 'midi2ly', + description=_ ("Convert %s to LilyPond input.\n") % 'MIDI', + add_help_option=False) p.add_option ('-a', '--absolute-pitches', action='store_true', help=_ ("print absolute pitches")) p.add_option ('-d', '--duration-quant', metavar= _("DUR"), - help=_("quantise note durations on DUR")) + help=_ ("quantise note durations on DUR")) 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 ('-o', '--output', help=_("write output to FILE"), + p.add_option ('-o', '--output', help=_ ("write output to FILE"), metavar=_("FILE"), action='store') p.add_option ('-s', '--start-quant',help= _ ("quantise note starts on DUR"), @@ -908,25 +872,27 @@ def get_option_parser (): dest="allowed_tuplets", help=_ ("allow tuplet durations DUR*NUM/DEN"), default=[]) - p.add_option ('-V', '--verbose', help=_("be verbose"), + p.add_option ('-V', '--verbose', help=_ ("be verbose"), action='store_true' ), - p.add_option ('-w', '--warranty', help=_("show warranty"), + 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"), + p.add_option ('-x', '--text-lyrics', help=_ ("treat every text as a lyric"), action='store_true') - p.add_option_group (_ ("example"), + 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', - 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') + + ''' http://post.gmane.org/post.php''' + '''?group=gmane.comp.gnu.lilypond.bugs\n''')) return p @@ -937,8 +903,8 @@ def do_options (): if not args or args[0] == '-': opt_parser.print_help () - sys.stderr.write ('\n%s: %s %s\n' % (program_name, _ ("error: "), - _ ("no files specified on command line."))) + ly.stderr_write ('\n%s: %s %s\n' % (program_name, _ ("error: "), + _ ("no files specified on command line."))) sys.exit (2) if options.duration_quant: @@ -948,7 +914,7 @@ def do_options (): 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: @@ -980,16 +946,16 @@ def main(): 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 != '':