let forme = fun (poussoir_forme:int ref) (reglages:int array) (valeurs_forme:int array) ->
 poussoir_forme := ( succ !poussoir_forme ) mod ( succ ( Array.length valeurs_forme / 6 ) ) ;
 match !poussoir_forme with
 | 0 ->
  begin
   reglages.(Data.bouton_niveau_inflexion - 19) <- 0 ;
   reglages.(Data.bouton_niveau_triangle - 19) <- 0 ;
   reglages.(Data.bouton_niveau_creneaux - 19) <- 0 ;
   aux Data.adresse_etat_clavier ( 128 + Data.bouton_niveau_inflexion ) 0 ;
   aux Data.adresse_etat_clavier ( 128 + Data.bouton_niveau_triangle ) 0 ;
   aux Data.adresse_etat_clavier ( 128 + Data.bouton_niveau_creneaux ) 0 ;
   prerr_endline ( ( pourcent_cpu () ) ^ "forme sinus" ) ;
  end
 | x when x > 0 ->
  begin
   let i = ref ( 6 * ( pred x ) ) in
    reglages.(Data.bouton_niveau_inflexion - 19) <- valeurs_forme.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_niveau_inflexion ) valeurs_forme.(!i) ;
    incr i ;
    reglages.(Data.bouton_inflexion - 19) <- valeurs_forme.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_inflexion ) valeurs_forme.(!i) ;
    incr i ;
    reglages.(Data.bouton_dephasage_inflexion - 19) <- valeurs_forme.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_dephasage_inflexion ) valeurs_forme.(!i) ;
    incr i ;
    reglages.(Data.bouton_niveau_triangle - 19) <- valeurs_forme.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_niveau_triangle ) valeurs_forme.(!i) ;
    incr i ;
    reglages.(Data.bouton_niveau_creneaux - 19) <- valeurs_forme.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_niveau_creneaux ) valeurs_forme.(!i) ;
    incr i ;
    reglages.(Data.bouton_dephasage_creneaux - 19) <- valeurs_forme.(!i) ;
    aux Data.adresse_etat_clavier ( 128 + Data.bouton_dephasage_creneaux ) valeurs_forme.(!i) ;
    prerr_endline ( ( pourcent_cpu () ) ^ "forme " ^ ( string_of_int x ) ) ;
  end
 | _ -> ()