[time-nuts] Generation of pulse train with 1/4 noise

Brooke Clarke brooke at pacific.net
Fri Feb 15 14:42:37 EST 2013


Hi Jim:

Music synthesizers now use sounds recorded from real instruments and play them back.  Why not record a real heart beat, 
maybe different ones from children, men, women, etc.?

Have Fun,

Brooke Clarke
http://www.PRC68.com
http://www.end2partygovernment.com/2012Issues.html

Jim Lux wrote:
> I need to generate a sequence of pulses at around 1 Hz with a 1/f characteristic  (human heartbeat, as it happens). 
> I'd like to do this using software and a timer, so I'm looking for a clever algorithm using a random number generator 
> to do it.
>
>  I could take the phase noise spectrum and turn that into some form of cumulative probability distribution for the 
> period, then generate a random number from 0-1 and use the inverse of the CPD to determine the period.
>
> But I was wondering if there's some clever way that just happens to generate what I'm looking for.  Sort of like how 
> you sum up 12 random numbers to generate a Gaussian with variance 1.  and then, the Box-Muller algorithm as an 
> alternate way.
>
> A generalized approach for the exponent between 0.5 and 1.5 would be useful.
>
> I found some techniques such as building a filter with the required power spectral density and then running white 
> noise through it.  There's a matlab (& C) package out there called cnoise, as well. cnoise builds an array of samples 
> and uses a FFT to do the filtering efficiently.
>
> I'd rather have some sort of difference/recursion equation that I can just call each time I need the next interval. I 
> did find some code based on a paper by Higham that does what's called the Ornstein-Uhlenbeck stochastic difference 
> equation.
>     dt = tmax / n;
>     x(1) = x0;
>     for j=1:n
>         dw = sqrt ( dt ) * randn;
>         x(j+1) = x(j) + dt*theta*(mu-x(j)) + sigma * dw
>
> But I don't trust it, because the matlab and c versions do not agree.
>
>
> 1/f^2 (brownian) is easy by taking the random number sequence and integrating.
>
> x(j+1) = x(j) + randn(1);
> _______________________________________________
> time-nuts mailing list -- time-nuts at febo.com
> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
> and follow the instructions there.
>
>



More information about the time-nuts mailing list