function x=load_many_htk(list,dir,ext,number);
% x=load_many_htk(list,dir,ext,number);
%
% loads all the data from a list and a dir to a matrix - htk format
% big endian htk default. 
% number of wanted items from the list should be specified. 

% first pass - determine size
N=0; files=0;
ff=fopen(list,'r');
while (files < number)
  ss=fscanf(ff, '%s',[1 1]); if (isempty(ss)) break; end
  files=files+1;
%  name=[dir '/features/' ss '.fea']; %disp(name);
  name=[dir '/' ss '.' ext]; disp(name);
  [m,veccount]=readhtk (name); 
  N=N+veccount;
end
fclose(ff);
vecsize = size(m,1); 

% allocate
x = zeros(vecsize,N);
disp (['reading ',num2str(N),' vectors from ',num2str(files), ' files...']);
  
% 2nd pass - read 
fil=0;
cnt=0;
beg=1;
ff=fopen(list,'r');
while (fil < number)
  ss=fscanf(ff, '%s',[1 1]);
  if (isempty(ss)) break; end
  name=[dir '/' ss '.' ext]; %disp(name);
  htk=readhtk(name);
  vecs=size(htk,2);
  endd = beg+vecs-1;
  % put it where it belongs
  x(:,beg:endd) = htk;
  %disp (vecs);
  fil=fil+1;
  cnt=cnt+vecs;
  % update beg
  beg = endd+1;
end  
disp('ready');