def create_mei(filename): # build new mei file meifile=MeiDocument.MeiDocument() mei=mod.mei_() # header meihead=mod.meihead_() filedesc=mod.filedesc_() titlestmt=mod.titlestmt_() title=mod.title_() pubstmt=mod.pubstmt_() meihead.add_child(filedesc) filedesc.add_children([titlestmt, pubstmt]) titlestmt.add_child(title) # music - facsimile, layout, body music=mod.music_() facsimile=mod.facsimile_() facsimile.id=generate_mei_id() surface=mod.surface_() surface.id=generate_mei_id() graphic=mod.graphic_() graphic.id=generate_mei_id() graphic.attributes={'xlink:href':'%s_original_image.tiff' % (filename,)} facsimile.add_child(surface) surface.add_child(graphic) layout=mod.layout_() layout.id=generate_mei_id() page=mod.page_() page.id=generate_mei_id() page.attributes={'n':filename} layout.add_child(page) body=mod.body_() mdiv=mod.mdiv_() mdiv.attributes={'type':'solesmes'} score=mod.score_() section=mod.section_() pb=mod.pb_() pb.id=generate_mei_id() pb.attributes={'pageref':page.id} body.add_child(mdiv) mdiv.add_child(score) score.add_child(section) section.add_child(pb) music.add_children([facsimile, layout, body]) mei.add_children([meihead, music]) meifile.addelement(mei) return meifile
def create(docname): doc = MeiDocument.MeiDocument(docname) # set up the header root_el = mod.mei_() mei_head = mod.meihead_() file_desc = mod.filedesc_() title_stmt = mod.titlestmt_() title = mod.title_() title_stmt.add_children([title]) encoding_desc = mod.encodingdesc_() proj_desc = mod.projectdesc_() dsc = mod.p_() dsc.value = u"This file was generated by PyMEI 1.0" proj_desc.addchildren([dsc]) file_desc.add_children([title_stmt]) encoding_desc.add_children([proj_desc]) mei_head.add_children([file_desc, encoding_desc]) # set up the body music = mod.music_() bd = mod.body_() md = mod.mdiv_() sc = mod.score_() md.add_children([sc]) bd.add_children([md]) music.add_children([bd]) root_el.addchildren([mei_head, music]) doc.addelement(root_el) return doc
def __init__(self, incoming_data, original_image, page_number=None): self._recognition_results = incoming_data self.mei = mod.mei_() self.staff = None self.staff_num = 1 self.glyph = None self._note_elements = None self._neume_pitches = [] # set up a basic MEI document structure # header self.meihead = mod.meihead_() self.filedesc = mod.filedesc_() self.titlestmt = mod.titlestmt_() self.title = mod.title_() self.pubstmt = mod.pubstmt_() self.titlestmt.add_child(self.title) self.filedesc.add_children([self.titlestmt, self.pubstmt]) self.meihead.add_child(self.filedesc) self.mei.add_child(self.meihead) # music self.music = mod.music_() self.facsimile = self._create_facsimile_element() self.surface = self._create_surface_element() self.graphic = self._create_graphic_element(original_image) self.surface.add_child(self.graphic) self.facsimile.add_child(self.surface) self.music.add_child(self.facsimile) self.layout = self._create_layout_element() self.pg = self._create_page_element() if page_number: self.pg.attributes = {"n": page_number} self.layout.add_child(self.pg) self.music.add_child(self.layout) self.body = mod.body_() self.music.add_child(self.body) self.mdiv = mod.mdiv_() self.mdiv.attributes = {"type": "solesmes"} self.body.add_child(self.mdiv) self.score = mod.score_() self.mdiv.add_child(self.score) self.scoredef = mod.scoredef_() self.score.add_child(self.scoredef) self.section = mod.section_() self.pagebreak = self._create_pb_element() self.pagebreak.attributes = {"pageref": self.pg.id} self.section.add_child(self.pagebreak) self.score.add_child(self.section) self.staffgrp = self._create_staffgrp_element() self.staffdef = self._create_staffdef_element() self.staffdef.attributes = {'n': self.staff_num} self.staffgrp.add_child(self.staffdef) self.scoredef.add_child(self.staffgrp) self.layer = self._create_layer_element() self.layer.attributes = {'n': 1} self.staffel = self._create_staff_element() self.staffel.attributes = {'n': self.staff_num} self.staffel.add_child(self.layer) self.section.add_child(self.staffel) for sysnum,syst in self._recognition_results.iteritems(): self.system = syst self.systembreak = self._parse_system(sysnum, syst) z = mod.zone_() z.id = self._idgen() z.attributes = {'ulx': self.system['coord'][0], 'uly': self.system['coord'][1], \ 'lrx': self.system['coord'][2], 'lry': self.system['coord'][3]} self.surface.add_child(z) # self.system.facs = z.id s = self._create_system_element() s.facs = z.id self.pg.add_child(s) self.systembreak.attributes = {"systemref": s.id} self.mei.add_child(self.music) if not self.staffel.descendants_by_name('neume'): self.staffgrp.remove_child(self.staffdef) self.section.remove_child(self.staffel) self.md = MeiDocument.MeiDocument() self.md.addelement(self.mei)