Blind signal separation or source separation refers to the separation of each of the individual sources from a mixture of sources given little or no prior information about the source components. This has been a topic of great study and several techniques relying on matrix methods exist for this task. Non-negative matrix factorization is one such technique popularly used for its representational power and ease of implementation. In this work, NMF is introduced, the central algorithm based on multiplicative update rules is discussed and a comparison is drawn between local implementations of the algorithm and the implementation in scikit-learn. Following this, variants of the original algorithm utilising priors of sparseness and temporal continuity are used to perform source separation on mixtures of musical notes. The variation of the signal to noise ratio (SNR) is studied for different variants of NMF, different windows and window lengths and different weights of the sparseness and temporal continuity cost functions.