view src/RecordedMultitrackAudio.cpp @ 17:c96b18dd0f48

adjusting sync parameters
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Mon, 06 Feb 2012 13:38:19 +0000
parents 680ba08e9925
children 4ded82fe318d
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(){
	
	
//	const char	*kickfilename = "../../../data/sound/LiveDues/kick_liveDues.wav";	
//	const char	*bassfilename = "../../../data/sound/LiveDues/bass_upsideLive.wav";	
//	const char	*snarefilename = "../../../data/sound/LiveDues/snare_liveDues.wav";	
	
//	const char	*kickfilename = "../../../data/sound/DiamondMatch1/kick_bip.wav";	
//	const char	*bassfilename = "../../../data/sound/DiamondMatch1/bass_bip.wav";	
//	const char	*snarefilename = "../../../data/sound/DiamondMatch1/snare_bip.wav";	
	
	const char	*kickfilename = "../../../data/sound/LiveIdiot2/02kick_bip.wav";	
	const char	*bassfilename = "../../../data/sound/LiveIdiot2/01bass_bip.wav";	
	const char	*snarefilename = "../../../data/sound/LiveIdiot2/03snare_bip.wav";	
	
/*	const char	*kickfilename = "../../../data/sound/UistLive1/02kick_bip.wav";	
	const char	*bassfilename = "../../../data/sound/UistLive1/01bass_bip.wav";	
	const char	*snarefilename = "../../../data/sound/UistLive1/03snare_bip.wav";		
*/	
	//"../../../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.push_back(*loadedAudioPtr);
	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();
	
	loadedAudioPtr = new LoadedAudioHolder;
	loadedAudioPtr->loadAudioFile(bassfilename);
	//	loadedAudioFiles.push_back(*loadedAudioPtr);
	loadedAudioFiles[1] = *loadedAudioPtr;
	loadedAudioFiles[1].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight, 1, trackScreenHeight);
	loadedAudioFiles[1].setTrackType(1);

	
	
	loadedAudioPtr = new LoadedAudioHolder;
	loadedAudioPtr->loadAudioFile(snarefilename);
	//	loadedAudioFiles.push_back(*loadedAudioPtr);
	loadedAudioFiles[2] = *loadedAudioPtr;
	loadedAudioFiles[2].fileLoader.onsetDetect.window.setToRelativeSize(0, trackScreenHeight*2, 1, trackScreenHeight);
	loadedAudioFiles[2].setTrackType(2);
	
	
	printf("AFTER LOADING 1\n");
	printInfo();
	
	numberOfAudioTracks = 3;
	
	
}



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();
}