Mercurial > hg > may
annotate yetilab/stream/test/audiofile_reference.yeti @ 276:39b5f3fed12d
Make slice return partial slices when range extents overlap vector ends
| author | Chris Cannam |
|---|---|
| date | Sat, 25 May 2013 18:31:10 +0100 |
| parents | 2ebda6646c40 |
| children |
| rev | line source |
|---|---|
| Chris@157 | 1 |
| Chris@157 | 2 module yetilab.stream.test.audiofile_reference; |
| Chris@157 | 3 |
| Chris@157 | 4 syn = load yetilab.stream.syntheticstream; |
| Chris@182 | 5 filt = load yetilab.stream.filter; |
| Chris@157 | 6 |
| Chris@225 | 7 //!!! docs from turbot |
| Chris@225 | 8 |
| Chris@184 | 9 pulseChannel rate = |
| Chris@184 | 10 (pulseFreq = 2; |
| Chris@184 | 11 pulseWidth = 0.01 * rate; |
| Chris@184 | 12 generator i = |
| Chris@184 | 13 (pulseNo = int ((i * pulseFreq) / rate); |
| Chris@184 | 14 index = (i * pulseFreq) - (rate * pulseNo); |
| Chris@184 | 15 if index < pulseWidth then |
| Chris@184 | 16 s = 1.0 - abs(pulseWidth/2 - index) / (pulseWidth/2); |
| Chris@184 | 17 if pulseNo % 2 != 0 then (-s) else s fi |
| Chris@184 | 18 else 0 |
| Chris@184 | 19 fi); |
| Chris@184 | 20 syn.generated rate generator); |
| Chris@182 | 21 |
| Chris@182 | 22 referenceChannels rate = |
| Chris@182 | 23 (leftovers rate n = |
| Chris@182 | 24 (syn.generated rate \(n / 20) :. \(leftovers rate (n+1))); |
| Chris@182 | 25 syn.sinusoid rate 600 :: pulseChannel rate :: leftovers rate 2); |
| Chris@182 | 26 |
| Chris@182 | 27 afReference rate channels = |
| Chris@225 | 28 filt.withDuration (2 * rate) |
| Chris@225 | 29 (filt.multiplexed (take channels (referenceChannels rate))); |
| Chris@157 | 30 |
| Chris@182 | 31 { |
| Chris@182 | 32 afReference |
| Chris@182 | 33 } |
| Chris@182 | 34 |
| Chris@182 | 35 |
