function env = envelop(t,a,Fe)
%        env = envelop(t,a,Fe)
% enveloppe parametree par t et a = env(t) 
% t contient une liste d'instants t_k
% a contient la liste des amplitudes a_k aux instants t_k
% env est le son echantillonne a la frequence Fe, 
% affine par morceaux, tel que env(t_k) = a_k
%--------------------------------------------------------

lt = length(t);
T = t(lt);
h = 1/Fe;
th = 0:h:T;

% test validite de t
 if t(1) >= T
     error('t incompatible dans envelop');
 end

% test compatibilite t et a
 if lt ~= length(a)
     error('t et a de longueur differente dans envelop');
 end

% au cas ou t ne serait pas strictement croissant :
for k = 2:lt-1
    if (t(k) <= t(k-1)) | (t(k) >= t(lt))
        t(k) = (t(k-1)+t(lt))/2;
    end
end

% (ct+b)(t) = a
% autre possibilite :
% env = interp1(t,a,th,'linear');
% mais 2 fois plus long

n = length(th);
env = zeros(1,n);
ni = lt-1;
c = zeros(1,ni+1); b = c;
h2 = 0;

for k = 1:ni    
    h1 = h2+1; h2 = 1+floor(t(k+1)/h);
    cb = [t(k) 1; t(k+1) 1]\[a(k) ; a(k+1)];
    c = cb(1);  b = cb(2);
    env(h1:h2) = c*th(h1:h2)+b;
end

env = .99*env/max(env);

% ajout de bruit
%br = rand(1,n);
%b = fir1(100,.01);
%br = filter(b,1,br);
%env = env+br;
