function out = synth_sawwave(freq, ms, fs)
%SYNTH_SAWWAVE Saw wave generator.
% synth_sawwave(freq, ms, fs) generates a saw wave of specified
% pitch and duration with unity amplitude.
%
% freq - frequency of the tone in Hertz
% ms - duration in milli-second
% fs - sampling frequency in Hertz
%
% 2003-08-13 by MARUI Atsushi
% 2004-01-28 added direct method
method = 'build-up';
%method = 'direct';
switch lower(method)
case {'build-up'}
out = zeros(ceil(fs*ms/1000), 1);
R = floor(fs/2 / freq); %number of sinewaves in a sawwave
c = 2 * pi * (freq / fs);
i = [1:size(out, 1)];
for k=1:R
out(i) = out(i) + (sin(c * (i-1) * k)/k)';
endfor
case {'direct'}
t = 0:1/fs:ms/1000;
out = sawtooth(2*pi*freq*t);
endswitch
out = normalize(out);