let interpreter exp_faust input =
let () = print_endline("Interpretation...") in
(* make input beam *)
let input_beam = make_beam input in
(* estimate process dimension *)
let dimension_tree = dim exp_faust in
(* interprete output beam *)
let output_beam = eval exp_faust dimension_tree input_beam in
(* get rate list from output beam *)
let rate_list = extract_rate output_beam in
(* get channel list and data list from output beam *)
let (channel_list, float_array_list) = compute (List.map snd output_beam) in
(channel_list, rate_list, float_array_list)