% phase2.m % David Rowe Sep 2009 % experiments with phase for sinusoidal codecs, looking at phase % of excitation with real Am samples from hts1 function phase2(samname, png) N = 16000; f=43; model = load("../src/hts1a_phase_model.txt"); phase = load("../src/hts1a_phase_phase.txt"); Wo = model(f,1); P=2*pi/Wo; L = model(f,2); A = model(f,3:(L+2)); phi = phase(f,1:L); phi = zeros(1,L); phi(3) = -pi/2; phi(4) = -pi/4; phi(5) = pi/2; s = zeros(1,N); for m=3:5 s_m = A(m)*cos(m*Wo*(0:(N-1)) + phi(m)); s = s + s_m; endfor figure(1); clf; plot(s(1:250)); figure(2); clf; subplot(211) plot((1:L)*Wo*4000/pi, 20*log10(A),'+'); subplot(212) plot((1:L)*Wo*4000/pi, phi,'+'); fs=fopen(samname,"wb"); fwrite(fs,s,"short"); fclose(fs); if (nargin == 2) % small image to fit blog __gnuplot_set__ terminal png size 450,300 ss = sprintf("__gnuplot_set__ output \"%s.png\"", samname); eval(ss) replot; % for some reason I need this to stop large plot getting wiped __gnuplot_set__ output "/dev/null" endif endfunction