What is the problem?
We will attempt to write a haskell program that takes in a MIDI file as an input and then outputs a new MIDI file that was created through an implementation of a Markov Chain process. Our challenges will be to learn how to work with HCodecs (a midi I/O, analysis module), the next issue will be to model a Markov Chain process in haskell and then finally to create a new MIDI sound file that is a unique piece of music that follows in the style of the input file.
What is the something extra?
Our program will produce a MIDI file so that we will be able to hear the music we have algorithmically generated.
What will we learn?
- Midi File Specification (.mid)
- HCodecs Midi parsing/composition library
- Statistical analysis
- Music Composition
Link to Code