annotate yetilab/stream/test/audiofile_reference.yeti @ 254:5eb57c649de0 sparse

Using hashes is simpler, but turns out to be mostly no faster and sometimes much slower. Not one to merge back.
author Chris Cannam
date Tue, 21 May 2013 17:40:33 +0100
parents 8e04d298741b
children 2ebda6646c40
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@222 6 vec = load yetilab.vector.vector;
Chris@157 7
Chris@225 8 //!!! docs from turbot
Chris@225 9
Chris@184 10 pulseChannel rate =
Chris@184 11 (pulseFreq = 2;
Chris@184 12 pulseWidth = 0.01 * rate;
Chris@184 13 generator i =
Chris@184 14 (pulseNo = int ((i * pulseFreq) / rate);
Chris@184 15 index = (i * pulseFreq) - (rate * pulseNo);
Chris@184 16 if index < pulseWidth then
Chris@184 17 s = 1.0 - abs(pulseWidth/2 - index) / (pulseWidth/2);
Chris@184 18 if pulseNo % 2 != 0 then (-s) else s fi
Chris@184 19 else 0
Chris@184 20 fi);
Chris@184 21 syn.generated rate generator);
Chris@182 22
Chris@182 23 referenceChannels rate =
Chris@182 24 (leftovers rate n =
Chris@182 25 (syn.generated rate \(n / 20) :. \(leftovers rate (n+1)));
Chris@182 26 syn.sinusoid rate 600 :: pulseChannel rate :: leftovers rate 2);
Chris@182 27
Chris@182 28 afReference rate channels =
Chris@225 29 filt.withDuration (2 * rate)
Chris@225 30 (filt.multiplexed (take channels (referenceChannels rate)));
Chris@157 31
Chris@182 32 {
Chris@182 33 afReference
Chris@182 34 }
Chris@182 35
Chris@182 36