def MusicXML_tree_to_MusicXML_file(tree, filename=None): assert ElementTree.iselement(tree) output_encoding = config.get("xml_encoding") writer = FileWriter(filename, output_encoding) writer.write("<?xml version='1.0' encoding='%s'?>\n" % output_encoding) writer.write("<!-- %s -->\n" % created) writer.write('<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">\n') ElementTree.ElementTree(tree).write(writer) if config.get("dtd"): validate(filename)
def convert(self, tree): # TODO: deal with time-wise MusicXML scores (e.g. use Michael Good's XSLT transform first) assert ElementTree.iselement(tree) builder = GuidoTreeBuilder(self._tags) state = self.State() self.make_sequences(tree, builder, state) return builder.score
def convert(self, score): assert isinstance(score, core.Score) score.calc_time_spines() self.last_ending = None self.root = score_partwise = ElementTree.Element("score-partwise") SubElement(score_partwise, "work") SubElement(score_partwise, "identification") staff_layout, barlines = self.make_plan(score) self.make_part_list(score_partwise, staff_layout) self.make_parts(score_partwise, staff_layout, barlines) return score_partwise
def MusicXML_tree_to_Guido_tree(tree): assert ElementTree.iselement(tree) converter = MusicXMLToGuido((core, basic, advanced)) return converter.convert(tree)
def MusicXML_file_to_MusicXML_tree(file): if config.get("dtd") and type(file) in (StringType, UnicodeType): validate(file) tree = ElementTree.parse(file) return tree.getroot()
def MidiXML_tree_to_MIDI_file(tree, filename=None): assert ElementTree.iselement(tree) converter = MidiXMLToMidi() converter.convert(tree, open(filename, "wb"))
def MidiXML_tree_to_MIDI_stream(tree): assert ElementTree.iselement(tree) converter = MidiXMLToMidi() stream = StringIO() converter.convert(tree, stream) return stream.getvalue()
def MusicXML_tree_to_MidiXML_tree(tree): assert ElementTree.iselement(tree) converter = MusicXMLToMidiXML() return converter.convert(tree)