annotate src/AudioFile.cpp @ 2:fa2af670b5c5 tip

SoundFileLoader might have moved
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Fri, 06 Jan 2012 00:23:26 +0000
parents ba2a17cf81bf
children
rev   line source
andrew@0 1 /*
andrew@0 2 * audioFile.cpp
andrew@0 3 * audioFileLoader3
andrew@0 4 *
andrew@0 5 * Created by Andrew on 31/07/2011.
andrew@0 6 * Copyright 2011 QMUL. All rights reserved.
andrew@0 7 *
andrew@0 8 */
andrew@0 9
andrew@0 10 #include "AudioFile.h"
andrew@0 11
andrew@0 12 const double samplingFrequency = 44100.0;
andrew@0 13
andrew@0 14 AudioFile::AudioFile(){
andrew@0 15 audioScaleSamples = 44100.;
andrew@0 16 playPosition = 0;
andrew@0 17 }
andrew@0 18
andrew@0 19 void AudioFile::drawAudioVectorMillis(double startTimeMillis, double endTimeMillis){
andrew@0 20
andrew@0 21 double startTimeSamples = startTimeMillis * samplingFrequency / 1000.0;
andrew@0 22 double endTimeSamples = endTimeMillis * samplingFrequency / 1000.0;
andrew@0 23 double screenHeight = ofGetHeight() ;
andrew@0 24 double screenWidth = ofGetWidth();
andrew@0 25
andrew@0 26 ofSetColor(255,0,0);
andrew@0 27 double numberOfSamples = endTimeSamples - startTimeSamples;
andrew@0 28 double samplesPerPixel = numberOfSamples / screenWidth;
andrew@0 29 string samplesString = "millis : sps ";
andrew@0 30 samplesString += ofToString(samplesPerPixel, 2);
andrew@0 31 samplesString += " , \n";
andrew@0 32
andrew@0 33 int lastSampleIndex = (int) startTimeSamples;
andrew@0 34
andrew@0 35 for (int i = 1;i < screenWidth;i++){// && startTimeSamples + samplesPerPixel * i < endTimeSamples;i += 1){
andrew@0 36 int sampleIndex = (int) min((startTimeSamples + samplesPerPixel * i), (double) length-1);
andrew@0 37 //if (sampleIndex < 0)
andrew@0 38 // sampleIndex = 0;
andrew@0 39 ofLine(i-1, screenHeight - (1-audioVector[sampleIndex])*screenHeight/2.0 , i, screenHeight - (1-audioVector[lastSampleIndex])*screenHeight/2.0);
andrew@0 40 samplesString += ofToString(audioVector[i])+" , \n";
andrew@0 41 lastSampleIndex = sampleIndex;
andrew@0 42
andrew@0 43 }
andrew@0 44 ofDrawBitmapString(samplesString, 20,20);
andrew@0 45
andrew@0 46 }
andrew@0 47
andrew@0 48
andrew@0 49
andrew@0 50 void AudioFile::drawAudioVectorSamples(double startTimeSample, double endTimeSample){
andrew@0 51
andrew@0 52 screenHeight = ofGetHeight() ;
andrew@0 53 double screenWidth = ofGetWidth();
andrew@0 54
andrew@0 55 ofSetColor(255,0,0);
andrew@0 56 double numberOfSamples = endTimeSample - startTimeSample;
andrew@0 57 double samplesPerPixel = numberOfSamples / screenWidth;
andrew@0 58
andrew@0 59 double halfHeight = screenHeight/2;
andrew@0 60
andrew@0 61 int lastSampleIndex = (int) startTimeSample;
andrew@0 62 /*
andrew@0 63 for (int i = 1;i < screenWidth;i++){// && startTimeSamples + samplesPerPixel * i < endTimeSamples;i += 1){
andrew@0 64 int sampleIndex = (int) (startTimeSample + samplesPerPixel * i);
andrew@0 65 ofLine(i-1, screenHeight - (1-audioVector[sampleIndex])*screenHeight/2.0 , i, screenHeight - (1-audioVector[lastSampleIndex])*screenHeight/2.0);
andrew@0 66 lastSampleIndex = sampleIndex;
andrew@0 67
andrew@0 68 }
andrew@0 69 */
andrew@1 70 double firstXpos = halfHeight;
andrew@0 71 double firstYpos = getPosition(startTimeSample);//screenHeight - ((1-audioVector[startTimeSample])*screenHeight/2.0);
andrew@0 72
andrew@0 73 int stepSize = 1;//(int) samplesPerPixel); optimize !! XXX
andrew@0 74 for (int sampleIndex = startTimeSample+1;sampleIndex < min(endTimeSample, (double) length);sampleIndex+= stepSize){
andrew@0 75
andrew@0 76 double secondXpos = (sampleIndex - startTimeSample) * screenWidth/numberOfSamples;
andrew@0 77 double secondYpos = getPosition(sampleIndex);//screenHeight - ((1-audioVector[sampleIndex])*screenHeight/2.0);
andrew@0 78 ofLine(firstXpos, firstYpos, secondXpos, secondYpos);
andrew@0 79
andrew@0 80 if (numberOfSamples < 100)
andrew@0 81 ofCircle(secondXpos, secondYpos, 2);
andrew@0 82
andrew@0 83 firstXpos = secondXpos;
andrew@0 84 firstYpos = secondYpos;
andrew@0 85
andrew@0 86
andrew@0 87 }
andrew@0 88
andrew@0 89 string samplesString = "samples: sps " + ofToString(samplesPerPixel, 2);
andrew@0 90 samplesString += ", number of smaplers " + ofToString(numberOfSamples, 2);
andrew@0 91 samplesString += " , \n";
andrew@0 92
andrew@0 93
andrew@0 94 //info string
andrew@0 95 string textString;
andrew@0 96 textString = ofToString(playPosition, 1);
andrew@0 97 ofDrawBitmapString(textString, 20, 20);
andrew@0 98 ofDrawBitmapString(samplesString, 20, 60);
andrew@0 99
andrew@0 100
andrew@0 101
andrew@0 102 ofSetColor(0,0,255);
andrew@0 103 ofLine(0, halfHeight, screenWidth, halfHeight);
andrew@0 104
andrew@0 105 }
andrew@0 106 /*
andrew@0 107 double testApp::getXposition(int index, int startTimeSampleIndex){
andrew@0 108 if (index >= 0 && index < audioVector.size())
andrew@0 109 return (index - startTimeSampleIndex) * screenWidth/numberOfSamples;
andrew@0 110 }
andrew@0 111 */
andrew@0 112 double AudioFile::getPosition(int index){
andrew@0 113 if (index >= 0 && index < audioVector.size())
andrew@0 114 return screenHeight - ((1-audioVector[index])*screenHeight/2.0);
andrew@0 115 else
andrew@0 116 return 0;
andrew@0 117 }
andrew@0 118
andrew@0 119
andrew@0 120 /*
andrew@0 121 void AudioFile::drawAudioVectorSamples(double startTimeSample, double endTimeSample){
andrew@0 122
andrew@0 123 double screenHeight = ofGetHeight() ;
andrew@0 124 double screenWidth = ofGetWidth();
andrew@0 125
andrew@0 126 ofSetColor(255,0,0);
andrew@0 127 double numberOfSamples = endTimeSample - startTimeSample;
andrew@0 128 double samplesPerPixel = numberOfSamples / screenWidth;
andrew@0 129
andrew@0 130 double halfHeight = screenHeight/2;
andrew@0 131
andrew@0 132 string samplesString = "samples: sps " + ofToString(samplesPerPixel, 2);
andrew@0 133 samplesString += ", number of smaplers " + ofToString(numberOfSamples, 2);
andrew@0 134 samplesString += " , \n";
andrew@0 135
andrew@0 136 int lastSampleIndex = (int) startTimeSample;
andrew@0 137
andrew@0 138 for (int i = 1;i < screenWidth;i++){// && startTimeSamples + samplesPerPixel * i < endTimeSamples;i += 1){
andrew@0 139 int sampleIndex = (int) (startTimeSample + samplesPerPixel * i);
andrew@0 140 ofLine(i-1, screenHeight - (1-audioVector[sampleIndex])*screenHeight/2.0 , i, screenHeight - (1-audioVector[lastSampleIndex])*screenHeight/2.0);
andrew@0 141 lastSampleIndex = sampleIndex;
andrew@0 142
andrew@0 143 }
andrew@0 144 //info string
andrew@0 145 string textString;
andrew@0 146 textString = ofToString(playPosition, 1);
andrew@0 147 ofDrawBitmapString(textString, 20, 20);
andrew@0 148 ofDrawBitmapString(samplesString, 20, 60);
andrew@0 149
andrew@0 150
andrew@0 151
andrew@0 152 ofSetColor(0,0,255);
andrew@0 153 ofLine(0, halfHeight, screenWidth, halfHeight);
andrew@0 154
andrew@0 155 }
andrew@0 156 */
andrew@0 157