let percu = fun (poussoir_percu:int ref) (reglages:int array) (valeurs_percu:int array) ->
 poussoir_percu := ( succ !poussoir_percu ) mod ( succ ( Array.length valeurs_percu / 4 ) ) ;
 match !poussoir_percu with
 | 0 ->
  begin
   reglages.(Data.bouton_remanence - Data.succ_nombre_de_curseurs) <- 0 ;
   aux Data.adresse_etat_clavier ( 128 + Data.bouton_remanence ) 0 ;
   reglages.(Data.bouton_pente_remanence - Data.succ_nombre_de_curseurs) <- 0 ;
   aux Data.adresse_etat_clavier ( 128 + Data.bouton_pente_remanence ) 0 ;
   reglages.(Data.bouton_nervosite - Data.succ_nombre_de_curseurs) <- 64 ;
   aux Data.adresse_etat_clavier ( 128 + Data.bouton_nervosite ) 64 ;
   reglages.(Data.bouton_traine - Data.succ_nombre_de_curseurs) <- 64 ;
   aux Data.adresse_etat_clavier ( 128 + Data.bouton_traine ) 64 ;
   prerr_endline ( ( pourcent_cpu () ) ^ "percussion standard" ) ;
  end
 | x when x > 0 ->
  begin
   let i = ref ( 4 * ( pred x ) ) in
    reglages.(Data.bouton_remanence - Data.succ_nombre_de_curseurs) <- valeurs_percu.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_remanence ) valeurs_percu.(!i) ;
    incr i ;
    reglages.(Data.bouton_pente_remanence - Data.succ_nombre_de_curseurs) <- valeurs_percu.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_pente_remanence ) valeurs_percu.(!i) ;
    incr i ;
    reglages.(Data.bouton_nervosite - Data.succ_nombre_de_curseurs) <- valeurs_percu.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_nervosite ) valeurs_percu.(!i) ;
    incr i ;
    reglages.(Data.bouton_traine - Data.succ_nombre_de_curseurs) <- valeurs_percu.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_traine ) valeurs_percu.(!i) ;
    prerr_endline ( ( pourcent_cpu () ) ^ "percussion " ^ ( string_of_int x ) ) ;
  end
 | _ -> ()