Mercurial > hg > wabletios
comparison scanpath.mm @ 4:79c7cf39a0a0
Fixed new mesh crash - static array bounds.
Made home made mutex for wavetable access. Less clicks?
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Mon, 10 Dec 2012 13:00:03 +0000 |
parents | d346ddc50f70 |
children | 085d80989ba7 |
comparison
equal
deleted
inserted
replaced
3:d346ddc50f70 | 4:79c7cf39a0a0 |
---|---|
27 restLength = 1.0; // ? | 27 restLength = 1.0; // ? |
28 | 28 |
29 scanMode = DISPLACEMENT; | 29 scanMode = DISPLACEMENT; |
30 initWavetables(); | 30 initWavetables(); |
31 framesPerSample = 60.0/SAMPLE_RATE; | 31 framesPerSample = 60.0/SAMPLE_RATE; |
32 | 32 updateAccessing = false; |
33 audioAccessing = false; | |
34 | |
33 } | 35 } |
34 void ScanPath::init(){ | 36 void ScanPath::init(){ |
35 framesPerSample = ofGetFrameRate()/SAMPLE_RATE; | 37 framesPerSample = ofGetFrameRate()/SAMPLE_RATE; |
36 | 38 |
37 } | 39 } |
38 //---------------------------------------------------------------- | 40 //---------------------------------------------------------------- |
39 ScanPath::~ScanPath(){ | 41 ScanPath::~ScanPath(){ |
40 | 42 |
41 //VECTORISE | |
42 | 43 |
43 delete [] wavetableNew; | 44 delete [] wavetableNew; |
44 delete [] wavetableOld; | 45 delete [] wavetableOld; |
45 delete [] wavetableUpdate; | 46 delete [] wavetableUpdate; |
46 cout << "destructed scanpath\n"; | 47 cout << "destructed scanpath\n"; |
47 } | 48 } |
48 | 49 |
49 void ScanPath::clear(){ | 50 void ScanPath::clear(){ |
50 //VECTORISE | 51 |
51 for(vector<Element>::iterator elitr = pathElements.begin(); elitr < pathElements.end(); elitr++){ | 52 for(vector<Element>::iterator elitr = pathElements.begin(); elitr < pathElements.end(); elitr++){ |
52 (*elitr).eLump->removeFromScanPath(); | 53 (*elitr).eLump->removeFromScanPath(); |
53 (*elitr).eSpring->removeFromScanPath(); | 54 (*elitr).eSpring->removeFromScanPath(); |
54 } | 55 } |
55 pathElements.clear(); | 56 pathElements.clear(); |
160 double * temp; | 161 double * temp; |
161 | 162 |
162 // TODO THRED MUTEX HERE!?? | 163 // TODO THRED MUTEX HERE!?? |
163 // this is called from graphics thread | 164 // this is called from graphics thread |
164 // reset the interp between frames | 165 // reset the interp between frames |
165 | 166 |
166 /* | |
167 int i = 0; | 167 int i = 0; |
168 while(audioAccessing){ | 168 while(audioAccessing){ |
169 i++; | 169 i++; |
170 } | 170 } |
171 cout << "buffers swapped while update!" << i << "times\n"; | 171 if(i > 0){ |
172 cout << "Update wavetables had to wait for audio access " << i << " times\n"; | |
173 // hardly ever happens | |
174 } | |
172 updateAccessing = true; | 175 updateAccessing = true; |
173 | 176 |
174 */ | 177 |
175 switch(scanMode){ | 178 switch(scanMode){ |
176 case DISPLACEMENT: | 179 case DISPLACEMENT: |
177 // now fill with new values | 180 // now fill with new values |
178 for(int i = 0; i < numElements; i++){ | 181 for(int i = 0; i < numElements; i++){ |
179 // double check | 182 // double check |
204 } | 207 } |
205 } | 208 } |
206 break; | 209 break; |
207 default: | 210 default: |
208 break; | 211 break; |
209 | 212 |
210 | 213 } |
211 } | 214 |
212 | |
213 | |
214 | |
215 | |
216 temp = wavetableOld; | 215 temp = wavetableOld; |
217 wavetableOld = wavetableNew; | 216 wavetableOld = wavetableNew; |
218 wavetableNew = wavetableUpdate; | 217 wavetableNew = wavetableUpdate; |
219 wavetableUpdate = temp; | 218 wavetableUpdate = temp; |
220 | 219 |
245 | 244 |
246 double frac = alongPath - double(n0); | 245 double frac = alongPath - double(n0); |
247 | 246 |
248 // TODO THRED MUTEX HERE!?? | 247 // TODO THRED MUTEX HERE!?? |
249 // this is called from audio thread | 248 // this is called from audio thread |
250 /* | 249 |
251 int i = 0; | 250 int i = 0; |
252 while(updateAccessing){ | 251 while(updateAccessing){ |
253 i++; | 252 i++; |
254 } | 253 } |
255 audioAccessing = true; | 254 audioAccessing = true; |
256 cout << "update is accessing while audio is" << i << "times\n"; | 255 if(i>0) cout << "Audio thread had to wait for wavetable update " << i << " times\n"; |
257 | 256 |
258 */ | |
259 | 257 |
260 double oldsample = (1 - frac) * wavetableOld[n0] + frac * wavetableOld[n1]; | 258 double oldsample = (1 - frac) * wavetableOld[n0] + frac * wavetableOld[n1]; |
261 | 259 |
262 double newsample = (1 - frac) * wavetableNew[n0] + frac * wavetableNew[n1]; | 260 double newsample = (1 - frac) * wavetableNew[n0] + frac * wavetableNew[n1]; |
263 | 261 |