Mercurial > hg > may
annotate yetilab/stream/test/audiofile_reference.yeti @ 293:f481ac8052c4
Add entrywise product
author | Chris Cannam |
---|---|
date | Fri, 31 May 2013 17:34:04 +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 |