Untitled

 avatar
unknown
plain_text
11 days ago
1.3 kB
2
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