Music Generation analyzes the midi files of various pieces and generates a piece composed in a similar style. The project uses a Markov Decision Process (MDP) to determine how notes transitions from one to another.
In main.py
, a naive Markov chain is implemented, only utilizing information about the previous note to determine which note to play next.
In main2.py
, multiple previous notes are kept track of, resulting in a melody. In addition, major triads are artificially added.
- Python 3.5+
- numpy
- mido
Naive method: python3 main.py
Chord Heuristics and Hindsight: python3 main2.py
- TrialOne.mid
- TrialTwo.mid
- TrialThree.mid
- NewCode.mid
William Wang | Albert Zhang | Colton Nishida |
---|---|---|
github.com/williamwang0 |
github.com/albertczhang |
github.com/coltonnishida |