let pulsation = fun (diapason:float) (octave:float) (parametre_rose:float) (destination:string) ->
 let oc = open_out destination
 and excursion = parametre_rose -. 64.
 and sof = string_of_float
 and demi_ton = octave ** un_douzieme in
  let anti_demi_ton = 1. /. demi_ton
  and frequences = Array.make 128 0. in
   let coefficient_rose = anti_demi_ton ** ( 0.5 +. 0.0025 *. excursion )
   and k = ref 69
   and rose = ref ( rose_zero *. demi_ton ** ( 0.16 *. excursion  ) ) in
    frequences.(!k) <- diapason ;
    for i = 70 to 127 do
     frequences.(i) <- frequences.(!k) *. demi_ton ;
     k := i ;
    done ;
    k := 69 ;
    for i = 68 downto 0 do
     frequences.(i) <- frequences.(!k) *. anti_demi_ton ;
     k := i ;
    done ;
    for i = 0 to 127 do
     let pouls = facteur_pulsation *. frequences.(i) in
      let c0 =  cos ( pouls *. taille_d_echantillon_reelle )
      and s0 = sin ( pouls *. taille_d_echantillon_reelle )
      and c = cos ( pouls )
      and s = sin ( pouls ) in
       rose := !rose *. coefficient_rose ;
       output_string oc ( ( sof c0 ) ^ "\n" ^ ( sof s0 ) ^ "\n" ^ ( sof c ) ^ "\n" ^ ( sof s ) ^ "\n" ^ ( sof !rose ) ^ "\n" ^ ( sof pouls ) ^ "\n" ) ;
    done ;
    close_out_noerr oc