Untitled
unknown
plain_text
8 months ago
1.3 kB
10
Indexable
# Fall back to generating a basic MIDI file using raw MIDI byte creation with mido (available in this environment)
from mido import Message, MidiFile, MidiTrack
# Create a new MIDI file and track
mid = MidiFile()
track = MidiTrack()
mid.tracks.append(track)
# Set tempo (optional, not all players interpret this without meta messages)
# 500000 microseconds per beat = 120 BPM, so for 80 BPM = 750000
track.append(Message('program_change', program=0, time=0))
# Define verse melody (G major scale, simple phrase)
verse_notes = [67, 69, 71, 72, 71, 69, 67, 69] # MIDI notes
chorus_notes = [72, 74, 76, 77, 76, 74, 72, 74]
# Add verse notes
for note_value in verse_notes:
track.append(Message('note_on', note=note_value, velocity=64, time=0))
track.append(Message('note_off', note=note_value, velocity=64, time=480)) # Quarter note at 480 ticks
# Add a pause between verse and chorus
track.append(Message('note_off', note=0, velocity=0, time=480))
# Add chorus notes
for note_value in chorus_notes:
track.append(Message('note_on', note=note_value, velocity=70, time=0))
track.append(Message('note_off', note=note_value, velocity=70, time=480))
# Save MIDI file
midi_file_path = "/mnt/data/almost_knew_your_name_demo.mid"
mid.save(midi_file_path)
midi_file_path
Editor is loading...
Leave a Comment