annotate yetilab/stream/test/audiofile_reference.yeti @ 225:8e04d298741b

More on audiofile reference tests
author Chris Cannam
date Sun, 12 May 2013 13:31:49 +0100
parents 77c6a81c577f
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