let reverb = fun (delai:float) (niveau:float) (precedent_stockage_echantillon:float array) (stockage_echantillon:float array) (precedent_echantillon:float array) (echantillon:float array) ->

(** Avec un coefficient rr trop élevé une oscillation interviendrait. *)


 let rr = 0.7 *. niveau
 and decalage = ref 0
 and anti_decalage = ref 0 in
  decalage := int_of_float delai ;
  anti_decalage := min Data.pred_taille_d_echantillon ( max 0 ( Data.taille_d_echantillon - !decalage ) ) ;
  for j = 0 to pred !decalage do
   echantillon.(j) <- echantillon.(j) +. rr *. precedent_echantillon.( !anti_decalage + j ) ;
   stockage_echantillon.(j) <- echantillon.(j) ;
   precedent_stockage_echantillon.(j) <- precedent_echantillon.(j) ;
  done ;
  for j = !decalage to Data.pred_taille_d_echantillon do
   echantillon.(j) <- echantillon.(j) +. rr *. echantillon.( j - !decalage ) ;
   stockage_echantillon.(j) <- echantillon.(j) ;
   precedent_stockage_echantillon.(j) <- precedent_echantillon.(j) ;
  done