let percussion = fun (detache:float) (enveloppe_percu:float) (niveau_percu:float) (echantillon:float array) ->
 if ( detache > 0.5 ) && ( niveau_percu > 0. ) then
  begin
   let d = 0.008 *. enveloppe_percu
   and ddd = ref 0. in
    for j = 0 to Data.pred_taille_d_echantillon do
     ddd := tanh ( d *. ( float j ) ) ;
     ddd := 30. *. !ddd *. ( 1. -. !ddd ) ;
     echantillon.(j) <- echantillon.(j) *. ( 1. +. !ddd *. niveau_percu ) ;
    done ;
  end