type step = {note : int option;accent : bool;slide : bool;locks : (string * float) list;
}val note : ?accent:bool -> ?slide:bool -> int -> stepval lock : step -> string -> float -> steptype event = | Note_on of {note : int;accent : bool;glide : bool;
}| Note_off
val create : ?bpm:float -> step array -> tval set_pattern : t -> step array -> unitval set_bpm : t -> float -> unitval samples_per_step : float -> floatval advance : t -> int -> (int -> event -> unit) -> unittype locks = | Per_step| Points of float
val lock_value : locks -> step array -> string -> float -> float optionval position : t -> int -> float optionval locked : t -> locks -> string -> int -> float option