view 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
line wrap: on
line source

module yetilab.stream.test.audiofile_reference;

syn = load yetilab.stream.syntheticstream;
filt = load yetilab.stream.filter;
vec = load yetilab.vector.vector;

//!!! docs from turbot

pulseChannel rate =
   (pulseFreq = 2;
    pulseWidth = 0.01 * rate;
    generator i =
       (pulseNo = int ((i * pulseFreq) / rate);
        index = (i * pulseFreq) - (rate * pulseNo);
        if index < pulseWidth then
	    s = 1.0 - abs(pulseWidth/2 - index) / (pulseWidth/2);
	    if pulseNo % 2 != 0 then (-s) else s fi
        else 0
        fi);
    syn.generated rate generator);

referenceChannels rate =
   (leftovers rate n =
       (syn.generated rate \(n / 20) :. \(leftovers rate (n+1)));
    syn.sinusoid rate 600 :: pulseChannel rate :: leftovers rate 2);

afReference rate channels =
    filt.withDuration (2 * rate)
       (filt.multiplexed (take channels (referenceChannels rate)));
    
{
    afReference
}