SkillAgentSearch skills...

Midigen

Python library for generating simple chord progression midi files

Install / Use

/learn @dbjohnson/Midigen
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

midigen

License PyPi GHA

Python library for generating simple chord progression midi files

demo

Installation

pip install midigen

Example usage

Command line

Play a ii-V-I-vi pattern in the key of G; loop it four times

midigen --key G --chords ii V I vi  --loop 4 --play

Python

from midigen.notes import Note
from midigen.keys import Key, Mode
from midigen.time import TimeSignature, Measure
from midigen.sequencer import Song, Track, open_output


port = open_output()

# play C minor scale
Key(Note.C, Mode.Minor).to_track().play(port)

# make a simple ii V I vi chord progression in the key of C
key = Key(Note.C, Mode.Major)
time_signature = TimeSignature(4, 4)
tempo = 90
progression = [2, 5, 1, 6]

chords = Track.from_measures([
    Measure.from_pattern(
        pattern=[
            key.relative_key(degree).chord(
                # default chords are the base triad - try adding extensions
                extensions=[7],
                # pick a voicing close to the root triad
                match_voicing=key.triad()
            )
        ] * time_signature.numerator,
        time_signature=time_signature,
        velocity=90
    )
    for degree in progression
])

# play to port
chords.play(port, tempo=tempo)

# write the song to a MIDI file
Song([chords]).to_midi('midigen.mid', tempo=tempo)
View on GitHub
GitHub Stars11
CategoryDevelopment
Updated9mo ago
Forks1

Languages

Python

Security Score

87/100

Audited on Jun 15, 2025

No findings