% pulse.m
% David Rowe August 2009
%
% Experiments with human pulse perception for sinusoidal codecs

function pulse(samname)

  A = 1000;
  K = 16000;
  N = 80;
  frames = K/N;
  s = zeros(1,K);

  for f=1:frames
    % lets try placing np random pulses in every frame

    P = 20 + (160-20)*rand(1,1);
    Wo = 2*pi/P;
    L = floor(pi/Wo);
    sf = zeros(1,N);
    for m=1:L/2:L
      pos = floor(rand(1,1)*N)+1;
      %pos = 50;
      for l=m:m+L/2-1
        sf = sf + A*cos(l*Wo*((f-1)*N+1:f*N) - pos*l*Wo);
      endfor
    endfor
    s((f-1)*N+1:f*N) = sf;
  endfor

  plot(s(1:250));

  fs=fopen(samname,"wb");
  fwrite(fs,s,"short");
  fclose(fs);
endfunction