Spaces:
Sleeping
Sleeping
| import requests | |
| from music21 import converter | |
| def midi_to_musicxml(midi_file): | |
| """Convert MIDI to MusicXML using music21.""" | |
| score = converter.parse(midi_file) | |
| musicxml_path = "temp.musicxml" | |
| score.write('musicxml', fp=musicxml_path) | |
| return musicxml_path | |
| def convert_musicxml_to_svg_online(musicxml_path): | |
| """Send MusicXML file to Verovio API and get SVG output.""" | |
| url = "https://verovio.humdrum.org/cgi-bin/verovio.cgi" | |
| with open(musicxml_path, "rb") as file: | |
| files = { | |
| "file": ("score.musicxml", file, "application/xml"), | |
| "format": (None, "svg"), # Request SVG format | |
| } | |
| response = requests.post(url, files=files) | |
| if response.status_code == 200: | |
| return response.text # SVG content | |
| else: | |
| return f"Error: {response.status_code}, {response.text}" | |
| def midi_to_svg(midi_file): | |
| """Convert MIDI to SVG using Verovio Web API.""" | |
| # Step 1: Convert MIDI to MusicXML | |
| musicxml_path = midi_to_musicxml(midi_file) | |
| # Step 2: Convert MusicXML to SVG via Verovio API | |
| svg_content = convert_musicxml_to_svg_online(musicxml_path) | |
| # Save SVG | |
| output_svg = "output.svg" | |
| with open(output_svg, "w") as f: | |
| f.write(svg_content) | |
| return output_svg | |
| # Example Usage | |
| midi_file_path = "base_chords.mid" # Replace with actual MIDI file | |
| svg_output = midi_to_svg(midi_file_path) | |
| print(f"SVG file generated: {svg_output}") | |