MIDI melody generator written in Python 3. Program creates chord progression then chooses one of the fundamental rhythms patterns to compose and generate a MIDI file.
$ git clone https://github.com/MieszkoMakuch/midi-melody-generator
$ cd midi-melody-generator
$ python3 main.py
To customize your melody you can specify the arguments listed below. When the argument is not specified it will be chosen randomly or by default.
-h, --help show this help message and exit
-d , --destination Choose MIDI file destination (default "melody.mid")
-m , --mood Choose mood of the melody
-s , --speed Choose speed of the melody
-l , --length Choose how many times the chord sequence will be
repeated
-in , --instrumentName
Choose name of the instrument
-iv , --instrumentValue
Choose value of the instrument (0, 1, 2, ..., 127)
$ python3 main.py --destination myMelody.mid --mood HAPPY -in AcousticGrandPiano
###############################################################
Melody has been successfully generated!
Melody properties:
Destination: myMelody.mid
Mood: HAPPY
Octave shift: 0
Length multiply: 3
Instrument: AcousticGrandPiano
Left hand rhythm: rhythm_constant_chord_left
Right hand rhythm: rhythm_4_40_right
Chord sequence: <ChordSeq: [I-octave_shift(0), vi-octave_shift(0),
iii-octave_shift(0), V-octave_shift(0)]>
###############################################################
-
Program chooses scale based on the mood:
- major scale for HAPPY mood
- minor scale for SAD mood
-
Program creates chord progression based on one of the formula I _ _ IV or V which means: first chord in chord progression is always I, last chord in chord progression is either IV or V (cadence chords), two chords between them are chosen randomly. More about chord progression: https://www.youtube.com/watch?v=lY_llceEGFI
-
Program chooses one of the fundamental rhythm patterns for left and right hand and applies generated chord progression to this rhythms. More about rhythm patterns: https://www.youtube.com/watch?v=X1coZlJRrx8
Slightly modified version of pyknon library (https://github.com/kroger/pyknon) is used to generate and save a MIDI file.
Python 3 is required.