let filtre = fun (coupure:float) (precedent_echantillon:float array) (echantillon:float array) ->
 let grave = Array.make Data.taille_d_echantillon 0.
 and aigu = Array.make Data.taille_d_echantillon 0.
 and decalage = ref 0 in
  for i = 0 to Data.pred_taille_d_echantillon do
   grave.(i) <- echantillon.(i) ;
  done ;
  if coupure > 0.5 then
   begin
    let k = int_of_float coupure
    and kkk = coupure +. 1. in
     let kk = succ k
     and bb = 1. /. kkk in
      for i = Data.pred_taille_d_echantillon downto k do
       decalage := i - kk ;
       for j = 1 to k do
        grave.(i) <- grave.(i) +. echantillon.( !decalage + j ) ;
       done ;
       grave.(i) <- grave.(i) *. bb ;
       aigu.(i) <- echantillon.(i) -. grave.(i) ;
      done ;
      for i = pred k downto 0 do
       let limite = k - i in
        decalage := Data.taille_d_echantillon + i - kk ;
        for j = 0 to limite do
         grave.(i) <- grave.(i) +. precedent_echantillon.( !decalage + j ) ;
        done ;
        for j = 0 to pred i do
         grave.(i) <- grave.(i) +. echantillon.(j) ;
        done ;
        grave.(i) <- grave.(i) *. bb ;
        aigu.(i) <- echantillon.(i) -. grave.(i) ;
      done ;
   end ;
   ( grave , aigu ) ;