void MedianSeparator::convertToSpectrogram()
{
	// create STFT object to perform FFT
	ScopedPointer<STFT> stft = new STFT(WINDOW_SIZE);

	stft->initWindow(1);	// initialise hann window

	// 2d array to hold pointer to sample data
	float* bufferData[2];	

	// 2d array of complex floats to hold complex spectrogram data after fft
	std::complex<float>* spectrogramData[2];	

	for (int i = 0; i < 2; i++)
	{
		// initialise structures to hold audio data in different forms
		bufferData[i] = new float[WINDOW_SIZE];
		spectrogram[i] = MatrixXcf::Zero((WINDOW_SIZE / 2) + 1, numCols); // holds entire spectrogram
		spectrogramData[i] = new std::complex<float>[(WINDOW_SIZE/2) + 1];
	}

	// loop through each column of spectrogram
	for (int column = 0; column < numCols; column++)
	{
		// for each channel
		for (int i = 0; i < numChannels; i++)
		{
			// get pointer to sample data
			bufferData[i] = (float*)samples.getReadPointer(i, startSample);

			// perform FFT
			float* fftData = stft->performForwardTransform(bufferData[i]);

			// convert from real to complex spectum data
			spectrogramData[i] = stft->realToComplex(fftData, WINDOW_SIZE);

			// fill column in spectrogram with complex data from FFT
			for (int sample = 0; sample < 2049; sample++)
			{
				spectrogram[i](sample, column) = spectrogramData[i][sample];
			}
		}

		// increment beginning sample by HOP_SIZE (1024)
		startSample += HOP_SIZE;
	}

}