From da6591bef1cd9c684a9fb98f1563ea40c543ecdd Mon Sep 17 00:00:00 2001 From: John Gourlay Date: Tue, 1 Mar 2016 14:26:51 -0500 Subject: [PATCH] Add a new file utilities.py. --- python/utilities.py | 268 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 python/utilities.py diff --git a/python/utilities.py b/python/utilities.py new file mode 100644 index 0000000000..da2386bcde --- /dev/null +++ b/python/utilities.py @@ -0,0 +1,268 @@ +# -*- coding: utf-8 -*- +import re +import string + +def string_to_number(s): + try: + return int(s) + except ValueError: + return float(s) + +def string_to_integer(s): + num = string_to_number(s) + if isinstance(num, int): + return num + else: + return int(num) + +def escape_ly_output_string (input_string): + return_string = input_string + needs_quotes = not re.match (u"^[a-zA-ZäöüÜÄÖßñ]*$", return_string); + if needs_quotes: + return_string = "\"" + string.replace (return_string, "\"", "\\\"") + "\"" + return return_string + +def interpret_alter_element (alter_elm): + alter = 0 + if alter_elm: + val = eval(alter_elm.get_text ()) + if type (val) in (int, float): + alter = val + return alter + +def musicxml_duration_to_log (dur): + return {'256th': 8, + '128th': 7, + '64th': 6, + '32nd': 5, + '16th': 4, + 'eighth': 3, + 'quarter': 2, + 'half': 1, + 'whole': 0, + 'breve':-1, + 'longa':-2, + 'long':-2}.get (dur, 0) + +def hexcolorval_to_nr (hex_val): + try: + v = int (hex_val, 16) + if v == 255: + v = 256 + return v / 256. + except ValueError: + return 0. + +def hex_to_color(hex_val): + res = re.match ( + r'#([0-9a-f][0-9a-f]|)([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$', + hex_val, + re.IGNORECASE) + if res: + return map(lambda x: hexcolorval_to_nr (x), res.group (2, 3, 4)) + else: + return None + +def split_string_and_preserve_doublequoted_substrings(value): + import shlex + lex = shlex.shlex(value) + lex.quotes = '"' + lex.whitespace_split = True + lex.commenters = '' + return list(lex) + +def musicxml_sound_to_lilypond_midi_instrument(sound): + sounds = { + "brass.french-horn": 'french horn', + "brass.group": 'brass section', + "brass.group.synth": 'synthbrass 1', + "brass.trombone": 'trombone', + "brass.trombone.alto": 'trombone', + "brass.trombone.bass": 'trombone', + "brass.trombone.contrabass": 'trombone', + "brass.trombone.tenor": 'trombone', + "brass.trumpet": 'trumpet', + "brass.trumpet.baroque": 'trumpet', + "brass.trumpet.bass": 'trumpet', + "brass.trumpet.bflat": 'trumpet', + "brass.trumpet.c": 'trumpet', + "brass.trumpet.d": 'trumpet', + "brass.trumpet.piccolo": 'trumpet', + "brass.trumpet.pocket": 'trumpet', + "brass.trumpet.slide": 'trumpet', + "brass.trumpet.tenor": 'trumpet', + "brass.tuba": 'tuba', + "brass.tuba.bass": 'tuba', + "brass.tuba.subcontrabass": 'tuba', + "brass.wagner-tuba": 'french horn', + "drum.timpani": 'timpani', + "drum.tom-tom": 'melodic tom', + "drum.tom-tom.synth": 'synth drum', + "effect.applause": 'applause', + "effect.bass-string-slap": 'slap bass 1', + "effect.bird": 'bird tweet', + "effect.bird.tweet": 'bird tweet', + "effect.breath": 'breath noise', + "effect.guitar-fret": 'guitar fret noise', + "effect.gunshot": 'gunshot', + "effect.helicopter": 'helicopter', + "effect.metronome-click": 'woodblock', + "effect.rain": 'fx1 (rain)', + "effect.seashore": 'seashore', + "effect.telephone-ring": 'telephone ring', + "keyboard.accordion": 'accordion', + "keyboard.bandoneon": 'accordion', + "keyboard.celesta": 'celesta', + "keyboard.clavichord": 'clav', + "keyboard.concertina": 'concertina', + "keyboard.harpsichord": 'harpsichord', + "keyboard.ondes-martenot": 'ocarina', + "keyboard.organ": 'church organ', + "keyboard.organ.drawbar": 'drawbar organ', + "keyboard.organ.percussive": 'percussive organ', + "keyboard.organ.pipe": 'church organ', + "keyboard.organ.reed": 'reed organ', + "keyboard.piano": 'acoustic grand', + "keyboard.piano.electric": 'electric piano 1', + "keyboard.piano.grand": 'acoustic grand', + "keyboard.piano.honky-tonk": 'honky-tonk', + "metal.bells.agogo": 'agogo', + "metal.bells.tinklebell": 'tinkle bell', + "metal.cymbal.reverse": 'reverse cymbal', + "pitched-percussion.glockenspiel": 'glockenspiel', + "pitched-percussion.glockenspiel.alto": 'glockenspiel', + "pitched-percussion.glockenspiel.soprano": 'glockenspiel', + "pitched-percussion.hammer-dulcimer": 'dulcimer', + "pitched-percussion.kalimba": 'kalimba', + "pitched-percussion.marimba": 'marimba', + "pitched-percussion.marimba.bass": 'marimba', + "pitched-percussion.music-box": 'music box', + "pitched-percussion.tubular-bells": 'tubular bells', + "pitched-percussion.vibraphone": 'vibraphone', + "pitched-percussion.xylophone": 'xylophone', + "pitched-percussion.xylophone.alto": 'xylophone', + "pitched-percussion.xylophone.bass": 'xylophone', + "pitched-percussion.xylophone.soprano": 'xylophone', + "pitched-percussion.xylorimba": 'xylophone', + "pluck.banjo": 'banjo', + "pluck.banjo.tenor": 'banjo', + "pluck.bass": 'acoustic bass', + "pluck.bass.acoustic": 'acoustic bass', + "pluck.bass.electric": 'electric bass', + "pluck.bass.fretless": 'fretless bass', + "pluck.bass.synth": 'synth bass 1', + "pluck.dulcimer": 'dulcimer', + "pluck.guitar": 'acoustic guitar (nylon)', + "pluck.guitar.acoustic": 'acoustic guitar (nylon)', + "pluck.guitar.electric": 'electric guitar (jazz)', + "pluck.guitar.nylon-string": 'acoustic guitar (nylon)', + "pluck.guitar.steel-string": 'acoustic guitar (steel)', + "pluck.harp": 'orchestral harp', + "pluck.lute": 'acoustic guitar (nylon)', + "pluck.shamisen": 'shamisen', + "pluck.sitar": 'sitar', + "strings.cello": 'cello', + "strings.cello.piccolo": 'cello', + "strings.contrabass": 'contrabass', + "strings.fiddle": 'fiddle', + "strings.group.synth": 'synth strings 1', + "strings.viola": 'viola', + "strings.violin": 'violin', + "synth.effects.atmosphere": 'fx 4 (atmosphere)', + "synth.effects.brightness": 'fx 5 (brightness)', + "synth.effects.crystal": 'fx 3 (crystal)', + "synth.effects.echoes": 'fx 7 echoes', + "synth.effects.goblins": 'fx 6 goblins', + "synth.effects.rain": 'fx 1 rain', + "synth.effects.sci-fi": 'fx 8 sci-fi', + "synth.effects.soundtrack": 'fx 2 (soundtrack)', + "synth.pad.bowed": 'pad 5 bowed', + "synth.pad.choir": 'pad 4 choir', + "synth.pad.halo": 'pad 7 halo', + "synth.pad.metallic": 'pad 6 metallic', + "synth.pad.polysynth": 'pad 3 polysynth', + "synth.pad.sweep": 'pad 8 sweep', + "synth.pad.warm": 'pad 2 warm', + "synth.tone.sawtooth": 'lead 1 (square)', + "synth.tone.square": 'lead 2 (sawtooth)', + "voice.aa": 'choir aahs', + "voice.alto": 'choir aahs', + "voice.aw": 'choir aahs', + "voice.baritone": 'choir aahs', + "voice.bass": 'choir aahs', + "voice.child": 'choir aahs', + "voice.countertenor": 'choir aahs', + "voice.doo": 'choir aahs', + "voice.ee": 'choir aahs', + "voice.female": 'choir aahs', + "voice.kazoo": 'choir aahs', + "voice.male": 'choir aahs', + "voice.mezzo-soprano": 'choir aahs', + "voice.mm": 'choir aahs', + "voice.oo": 'voice oohs', + "voice.soprano": 'choir aahs', + "voice.synth": 'synth voice', + "wind.flutes.blown-bottle": 'blown bottle', + "wind.flutes.calliope": 'lead 3 (calliope)', + "wind.flutes.flute": 'flute', + "wind.flutes.flute.alto": 'flute', + "wind.flutes.flute.bass": 'flute', + "wind.flutes.flute.contra-alto": 'flute', + "wind.flutes.flute.contrabass": 'flute', + "wind.flutes.flute.double-contrabass": 'flute', + "wind.flutes.flute.piccolo": 'flute', + "wind.flutes.flute.subcontrabass": 'flute', + "wind.flutes.ocarina": 'ocarina', + "wind.flutes.recorder": 'recorder', + "wind.flutes.recorder.alto": 'recorder', + "wind.flutes.recorder.bass": 'recorder', + "wind.flutes.recorder.contrabass": 'recorder', + "wind.flutes.recorder.descant": 'recorder', + "wind.flutes.recorder.garklein": 'recorder', + "wind.flutes.recorder.great-bass": 'recorder', + "wind.flutes.recorder.sopranino": 'recorder', + "wind.flutes.recorder.soprano": 'recorder', + "wind.flutes.recorder.tenor": 'recorder', + "wind.flutes.shakuhachi": 'shakuhachi', + "wind.flutes.whistle": 'whistle', + "wind.flutes.whistle.alto": 'whistle', + "wind.pipes.bagpipes": 'bagpipe', + "wind.reed.basset-horn": 'clarinet', + "wind.reed.bassoon": 'bassoon', + "wind.reed.clarinet": 'clarinet', + "wind.reed.clarinet.a": 'clarinet', + "wind.reed.clarinet.alto": 'clarinet', + "wind.reed.clarinet.bass": 'clarinet', + "wind.reed.clarinet.basset": 'clarinet', + "wind.reed.clarinet.bflat": 'clarinet', + "wind.reed.clarinet.contra-alto": 'clarinet', + "wind.reed.clarinet.contrabass": 'clarinet', + "wind.reed.clarinet.eflat": 'clarinet', + "wind.reed.clarinet.piccolo.aflat": 'clarinet', + "wind.reed.contrabass": 'contrabass', + "wind.reed.contrabassoon": 'bassoon', + "wind.reed.english-horn": 'oboe', + "wind.reed.harmonica": 'harmonica', + "wind.reed.harmonica.bass": 'harmonica', + "wind.reed.oboe": 'oboe', + "wind.reed.oboe.bass": 'oboe', + "wind.reed.oboe.piccolo": 'oboe', + "wind.reed.oboe-da-caccia": 'oboe', + "wind.reed.oboe-damore": 'oboe', + "wind.reed.saxophone": 'alto sax', + "wind.reed.saxophone.alto": 'alto sax', + "wind.reed.saxophone.baritone": 'baritone sax', + "wind.reed.saxophone.bass": 'baritone sax', + "wind.reed.saxophone.contrabass": 'baritone sax', + "wind.reed.saxophone.melody": 'soprano sax', + "wind.reed.saxophone.mezzo-soprano": 'soprano sax', + "wind.reed.saxophone.sopranino": 'soprano sax', + "wind.reed.saxophone.sopranissimo": 'soprano sax', + "wind.reed.saxophone.soprano": 'soprano, sax', + "wind.reed.saxophone.subcontrabass": 'baritone sax', + "wind.reed.saxophone.tenor": 'tenor sax', + "wind.reed.shenai": 'shanai', + "wood.temple-block": 'wood block', + "wood.wood-block": 'wood block', + } + return sounds.get(sound, 'acoustic grand') -- 2.39.2