Mercurial > hg > precise-onset-detection
view ofxPreciseOnsetDetectorOffline/PreciseOnsetVisualiser.cpp @ 3:50f62c48b421
Small change
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Fri, 03 Jan 2014 17:43:02 +0000 |
parents | 7ec1ed0b2eb0 |
children | 93b9a9471011 |
line wrap: on
line source
/* * PreciseOnsetVisualiser.cpp * ofxPreciseOnsetDetectionOffline * * Created by Andrew Robertson on 28/12/2013. * Copyright 2013 QMUL. All rights reserved. * */ #include "PreciseOnsetVisualiser.h" PreciseOnsetVisualiser::PreciseOnsetVisualiser(){ } PreciseOnsetVisualiser::~PreciseOnsetVisualiser(){ printf("deleting pointer in visualiser\n"); delete pod; pod = NULL; } void PreciseOnsetVisualiser::newFile(){ resetWindow(); windowPress = 0; soundPlay.loadSound(pod->loadedFilename, false); paused = true; soundPlay.play(); soundPlay.setPaused(true); } void PreciseOnsetVisualiser::update(){ } void PreciseOnsetVisualiser::draw(){ //if plotting use this, else comment out ofSetColor(ofColor::white); window.drawBackground(); ofSetColor(ofColor::black); window.drawOutline(); ofSetColor(ofColor::blue); plotter.drawBeatStripes(pod->onsetLocations, window, windowStart, windowEnd); ofSetColor(ofColor::red); plotter.drawStripe(positionSeconds(), window, windowStart, windowEnd); } double PreciseOnsetVisualiser::positionSeconds(){ return soundPlay.getPosition()*pod->samples/44100.; } //void PreciseOnsetVisualiser::drawOnsets(DoubleVector& onsetTimesSeconds, ofxWindowregion& window, double startTime, double endTime){ //} void PreciseOnsetVisualiser::resetWindow(){ windowStart = 0; windowEnd = 8; // while (windowEnd < pod->samples/44100.) // windowEnd *= 2; windowEnd = pod->samples/44100.; printf("reset: start %.1f end %.1f\n", windowStart, windowEnd); } void PreciseOnsetVisualiser::cropStart(){ if (soundPlay.getPositionMS()/1000. < windowEnd){ windowStart = soundPlay.getPositionMS()/1000.; printf("s: start %.1f end %.1f\n", windowStart, windowEnd); } } void PreciseOnsetVisualiser::cropStartSeconds(double& val){ if (val < windowEnd) windowStart = val; } void PreciseOnsetVisualiser::cropEnd(){//crops to play position if (soundPlay.getPositionMS()/1000. > windowStart){ windowEnd = soundPlay.getPositionMS()/1000.; printf("crop end: start %.1f end %.1f\n", windowStart, windowEnd); } } void PreciseOnsetVisualiser::cropEndSeconds(double& val){ if (val > windowStart) windowEnd = val; printf("crop end: start %.1f end %.1f\n", windowStart, windowEnd); } void PreciseOnsetVisualiser::mousePressed(int& x, int& y){ if (window.tapped(x, y)){ windowPress = windowStart + (windowEnd-windowStart)*(x - window.x)/window.width; double newPos = windowPress/(double)(pod->samples/44100.); printf("window position is %.1f new pos %f\n", windowPress, newPos); soundPlay.setPositionMS(windowPress*1000.0); } } void PreciseOnsetVisualiser::togglePlay(){ if (!paused ){ soundPlay.setPaused(true); paused = true; printf("was playing\n"); } else { soundPlay.setPaused(false);// paused = false; printf("was not playing\n"); } } void PreciseOnsetVisualiser::stop(){ soundPlay.stop(); //then get set to be played soundPlay.play(); soundPlay.setPaused(true); soundPlay.setPositionMS(windowStart*1000.0); paused = true; }