function out = synth_squarewave(freq, ms, fs) %SYNTH_SQUAREWAVE Square wave generator. % synth_squarewave(freq, ms, fs) generates a square 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 % % 2004-01-10 by MARUI Atsushi % 2004-10-30 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 squarewave c = 2 * pi * (freq / fs); i = [1:size(out, 1)]; for k=1:2:R out(i) = out(i) + (sin(c * (i-1) * k)/k)'; end case {'direct'} t = 0:1/fs:ms/1000; out = square(2*pi*freq*t); end out = normalize(out);