Example #1
0
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
Example #2
0
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
Example #3
0
 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)