Here we explore the various methods of algorithmic composition and the theoretical models on which they are founded.