from music21 import converter, instrument, note, stream from music21 import chord # ABC notation abc_notation = """ X: 1 T: from blues.mid M: 4/4 L: 1/8 Q:1/4=70 % Last note suggests Locrian mode tune K:G % 1 sharps V:1 %%MIDI channel 10 (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| \ (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| \ (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| \ (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| \ (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| \ (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| \ (3F,,F,,F,, (3F,,F,,F,, F,,/2F,,/2z/2F,,/2 z2| F,,/2zF,,/2 F,,/2zF,,/2 F,,/2zF,,/2 F,,/2zF,,/2| \ (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| \ F,,/2zF,,/2 F,,/2zF,,/2 F,,/2zF,,/2 F,,/2zF,,/2| \ (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| F,,/2zF,,/2 F,,/2zF,,/2 F,,/2zF,,/2 F,,/2zF,,/2| \ (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,, (3F,,F,,F,,| \ F,,/2zF,,/2 F,,/2zF,,/2 F,,/2zF,,/2 F,,/2zF,,/2| \ F,,/2z3/2 F,,/2z3/2 F,,/2z3/2 F,,/2 V:2 %%MIDI channel 10 z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| \ (3E,,E,,E,, (3E,,E,,E,, (3E,,E,,E,, E,,/2E,,/2z/2E,,/2| z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| \ z2 E,,/2z3z/2 E,,/2z3/2| \ z/2E,,E,,/2 V:3 %%MIDI channel 10 C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,>C,,C,,/2| \ C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,/2 z/2C,,/2z| \ C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,>C,,C,,/2| \ C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,/2 z/2C,,/2z| C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,>C,,C,,/2| \ C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,/2 z/2C,,/2z| \ C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,>C,,C,,/2| \ (3C,,C,,C,, (3C,,C,,C,, C,,/2C,,/2z/2C,,/2 z2| C,,/2zC,,/2 z/2C,,/2z C,,/2zC,,/2 z/2C,,/2z| \ C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,/2 z3/2C,,/2| \ C,,/2zC,,/2 z/2C,,/2z C,,/2zC,,/2 z/2C,,/2z| \ C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,/2 z3/2C,,/2| C,,/2zC,,/2 z/2C,,/2z C,,/2zC,,/2 z/2C,,/2z| \ C,,/2zC,,/2 z3/2C,,/2 C,,/2zC,,/2 z3/2C,,/2| \ C,,/2zC,,/2 z/2C,,/2z C,,/2zC,,/2 z/2C,,/2z| \ C,,/2z3/2 C,,/2z3/2 C,,/2z3/2 C,,/2 """ def abc_to_midi(abc_notation, output_filename): # Convert ABC notation to music21 stream object stream_obj = converter.parse(abc_notation) # Create MIDI file midi_stream = stream.Stream() # Set instrument to piano midi_stream.append(instrument.Piano()) # Iterate over each element in the music21 stream for element in stream_obj.flat: # Check if element is a note if isinstance(element, note.Note): # Add note to MIDI stream midi_stream.append(element) # Check if element is a chord elif isinstance(element, chord.Chord): # Add chord to MIDI stream midi_stream.append(element) # Write MIDI stream to file midi_stream.write('midi', fp=output_filename) # Usage example output_filename = 'tabla.mid' abc_to_midi(abc_notation, output_filename) print(f"MIDI file '{output_filename}' generated successfully!")