I have used Markov chain to represent relationships between words in a song and then generating new interpretative text from the graph so generated. python compose.py is the command. The length of the composition can be changed as the length set is at a default number and the base file can be changed as per requirement
More songs can be added via writing some songs in a txt folder and then attaching them to the songs folder.