function [X]=gen_windows( signal, windowsize )
    
    % start with a blank slate
    
    X = zeros( windowsize, ceil( size( signal, 1 ) / floor( windowsize / 2 ) ) );

    % for each window
    
    for i = 1:ceil( size( signal, 1 ) / floor( windowsize / 2 ) ) 
    
        % grab the data
        
        if ((i-1)*floor(windowsize/2)+windowsize) < size( signal, 1 );
            X(1:windowsize, i) = signal((i-1)*floor(windowsize/2)+1:(i-1)*floor(windowsize/2)+windowsize,1);
        else            
            blarg = size( signal, 1 ) - (i-1)*floor(windowsize/2);
            X(1:blarg, i) = signal((i-1)*floor(windowsize/2)+1:size(signal, 1 ));
        end
        
        % apply a window and take the real part of the fourier transform
        
        %X(:,i) = fft( X(:,i).*tent(windowsize,1), windowsize ); 
        X(:,i) = real( fft( X(:,i).*tent(windowsize,1), windowsize ) ); 
        %X(:,i) = X(:,i).*tent(windowsize,1); 
    end
    
end
