view src/RecordedMultitrackAudio.cpp @ 23:bc113cd60a2f

tmp mistake
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Mon, 13 Feb 2012 14:58:53 +0000
parents 24c413f0f2c5
children 9df5449077bb
line wrap: on
line source
/*
 *  RecordedMultitrackAudio.cpp
 *  MultipleAudioMathcher
 *
 *  Created by Andrew on 31/01/2012.
 *  Copyright 2012 QMUL. All rights reserved.
 *
 */

#include "RecordedMultitrackAudio.h"


void RecordedMultitrackAudio::loadTestAudio(){
	

	
	//"../../../data/sound/basicClavScale.wav";	
	
	//LoadedAudioHolder lah;
	//	lah.loadAudioFile(infilename);
	//	loadedAudioFiles.push_back(lah);
	
	trackScreenHeight = 0.15;
	//Take care here - we need a pointer to create new instance
	//but not then delete the instance before the vector of all audio tracks has been used
	//the above code using lah has problem that it deletes objects once out of the scope of testApp.setup()
	//when lah is in theory no longer used - something like that possible? - at least pointers to onset detection seem deleted
/*
	loadedAudioPtr = new LoadedAudioHolder();
	loadedAudioPtr->loadAudioFile(kickfilename);
	loadedAudioFiles[0] = *loadedAudioPtr;
	loadedAudioFiles[0].fileLoader.onsetDetect.window.setToRelativeSize(0, 0.0, 1, trackScreenHeight);
	loadedAudioFiles[0].setTrackType(0);//	fileLoader.onsetDetect.trackType = 0;
*/	
	//	printf("Loaded audio %i\n", (int)numberOfAudioTracks);
	printf("loaded max val  is %f\n", loadedAudioFiles[0].fileLoader.onsetDetect.onsetDetector.maximumDetectionValue);
	
	printf("BEFORE LOADING 1\n");
	printInfo();
	
	setDifferentMultitracks(1);

	printf("AFTER LOADING 1\n");
	printInfo();
	
	numberOfAudioTracks = 3;
	
	
}

void RecordedMultitrackAudio::setDifferentMultitracks(const int& setToLoad){
	const char	*kickfilename ;//= "../../../data/sound/LiveDues/kick_liveDues.wav";	
	const char	*bassfilename ;//"../../../data/sound/LiveDues/bass_upsideLive.wav";	
	const char	*snarefilename ;
	
	switch (setToLoad) {
		case 0:
			
				kickfilename = "../../../data/sound/LiveDues/kick_liveDues.wav";	
				bassfilename = "../../../data/sound/LiveDues/bass_upsideLive.wav";	
				snarefilename = "../../../data/sound/LiveDues/snare_liveDues.wav";	
			 
				
			
			break;
		case 1:
			
				kickfilename = "../../../data/sound/DiamondMatch1/kick_bip.wav";	
				bassfilename = "../../../data/sound/DiamondMatch1/bass_bip.wav";	
				snarefilename = "../../../data/sound/DiamondMatch1/snare_bip.wav";	
			
		
		case 2:
				kickfilename = "../../../data/sound/LiveIdiot2/02kick_bip.wav";	
				bassfilename = "../../../data/sound/LiveIdiot2/01bass_bip.wav";	
				snarefilename = "../../../data/sound/LiveIdiot2/03snare_bip.wav";	
			 
			break;
		case 3:
			
			 	kickfilename = "../../../data/sound/UistLive1/02kick_bip.wav";	
			 	bassfilename = "../../../data/sound/UistLive1/01bass_bip.wav";	
			 	snarefilename = "../../../data/sound/UistLive1/03snare_bip.wav";	
		
		break;
	}
	loadAudioTrack(kickfilename, 0);
	loadAudioTrack(bassfilename, 1);
	loadAudioTrack(snarefilename, 2);


}

void RecordedMultitrackAudio::loadAudioTrack(std::string name, const int& channel){
	//kick - track type 0
	//bass - type 1
	//snare type 2
	if (channel >= 0 && channel <= 4){
	loadedAudioPtr = new LoadedAudioHolder;
	loadedAudioPtr->loadAudioFile(name);
	loadedAudioFiles[channel] = *loadedAudioPtr;
	loadedAudioFiles[channel].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight*channel, 1, trackScreenHeight);
	loadedAudioFiles[channel].setTrackType(channel);
	}
}



void RecordedMultitrackAudio::drawTracks(){
	
	for (int i = 0;i < numberOfAudioTracks;i++){		
		loadedAudioFiles[i].draw();
	}
}


void RecordedMultitrackAudio::updatePosition(){
	for (int i = 0;i < numberOfAudioTracks;i++)
		loadedAudioFiles[i].updateToPlayPosition();
}

void RecordedMultitrackAudio::updatePositionToMillis(const double& millis){
	for (int i = 0;i < numberOfAudioTracks;i++)
		loadedAudioFiles[i].updateToMillisPosition(millis);
}

void RecordedMultitrackAudio::switchScreens(){
	for (int i = 0;i < numberOfAudioTracks;i++)
		loadedAudioFiles[i].switchScreens();
}


void RecordedMultitrackAudio::togglePlay(){
	for (int i = 0;i < numberOfAudioTracks;i++)
		loadedAudioFiles[i].togglePlay();
}

void RecordedMultitrackAudio::stop(){
	for (int i = 0;i < numberOfAudioTracks;i++)
		loadedAudioFiles[i].stop();
}


void RecordedMultitrackAudio::printInfo(){
	loadedAudioFiles[0].fileLoader.onsetDetect.printChromaInfo();
	loadedAudioFiles[0].printEvents();
}

void RecordedMultitrackAudio::windowResized(const int& w, const int& h){
	for (int i = 0;i < numberOfAudioTracks;i++)
		loadedAudioFiles[i].windowResized(w, h);
}

void RecordedMultitrackAudio::zoomIn(){
	for (int i = 0;i < numberOfAudioTracks;i++)
		loadedAudioFiles[i].fileLoader.zoomIn();
}

void RecordedMultitrackAudio::zoomOut(){
	for (int i = 0;i < numberOfAudioTracks;i++)
		loadedAudioFiles[i].fileLoader.zoomOut();
}