%
%
% Gera uma onda aproximadamente quadrada, a partir dos
% primeiros 8 harmônicos ímpares de uma fundamental dada.
%
% f=frequencia(Hz), d=duracao(s), R=taxa de amostragem(Hz)
%

function s=quadrada(f,d,R);

  % cria um trecho com d segundos de áudio com taxa de amostragem R
  s=zeros(d*R,1);

  % uma onda quadrada é formada por harmônicos ímpares,
  % tendo o i-ésimo harmônico amplitude 1/i.
  for i=[1 3 5 7 9 11 13 15]
    s=s+sinetone(f*i,R,d,1/i);
  end;

  % normaliza o volume final
  s=s*(100/max(s));

  gplot [1:d*(R/f)] [-100:100] s;

  FILE=sprintf("quadrada_%d_%d",f,R);
  saveaudio(FILE,s,"raw");
  play(strcat(FILE,".raw"),R);

end;
