X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpretor/main.ml diff --git a/interpretor/main.ml b/interpretor/main.ml deleted file mode 100644 index 21c2a8e..0000000 --- a/interpretor/main.ml +++ /dev/null @@ -1,112 +0,0 @@ -(** - Module: Interpreter - Description: Input wave -> interpretation -> output wave - @author WANG Haisheng - Created: 15/05/2013 Modified: 14/08/2013 -*) - -open Aux;; -open Process;; -open Faustio;; - -exception Missing_Expression;; - -let version = "Faustine: 0.0.1";; - -let set_GC () = - let _ = Gc.set { (Gc.get()) - with Gc.minor_heap_size = 0xFFFFFF } in - let _ = Gc.set { (Gc.get()) - with Gc.major_heap_increment = 0xFFFFFF } in - let _ = Gc.set { (Gc.get()) - with Gc.space_overhead = 100 } in - let _ = Gc.set { (Gc.get()) - with Gc.max_overhead = 0xFFF } in - let _ = Gc.set { (Gc.get()) - with Gc.stack_limit = 0xFFFFF } in - let _ = Gc.set { (Gc.get()) - with Gc.allocation_policy = 1 } in - () ;; - -let path_dsp = ref "";; -let size_input = ref 0;; -let inputs = ref [];; -let time_max = ref 0xFFFF;; -let dir_output = ref "";; -let format_output = ref "wav";; -let basename_output = ref "output";; - -let option_usage = "usage: " ^ Sys.argv.(0) - ^ " [-d dsp_src] [-i input] [-t time] [--odir dir] [--oformat wav/csv] [--obasename name]";; - -let option_unknown = - fun x -> raise (Arg.Bad ("Bad argument : " ^ x)) - -let speclist = [ - ("-d", Arg.String (fun s -> path_dsp := s), ": set dsp source file"); - ("-i", Arg.String (fun s -> incr size_input; inputs := !inputs @ [s]), ": set input wave file"); - ("-t", Arg.Int (fun i -> time_max := i), ": set max output length"); - ("--odir", Arg.String (fun s -> dir_output := s), ": set output directory"); - ("--oformat", Arg.String (fun s -> format_output := s), ": set output format"); - ("--obasename", Arg.String (fun s -> basename_output := s), ": set output basename"); - ];; - - -let main () = - - let () = Arg.parse speclist option_unknown option_usage in - let _ = Sys.signal Sys.sigalrm Sys.Signal_ignore in - let _ = set_GC () in - let io = new iomanager in - let () = io#set !dir_output !format_output !basename_output in - - - let () = print_string(" Faustine -> Reading input ...") in - let tic0 = Sys.time () in - let input = io#read !inputs in - let toc0 = Sys.time () in - let () = print_endline(" Done. (duration: " ^ (string_of_float (toc0 -. tic0)) ^ "s.)") in - - - let () = print_string(" Faustine -> Preprocessing...") in - let tic1 = Sys.time () in - let faust_core = Preprocess.preprocess !path_dsp in - let toc1 = Sys.time () in - let () = print_endline(" Done. (duration: " ^ (string_of_float (toc1 -. tic1)) ^ "s.)") in - - - let () = print_string(" Faustine -> Constructing process...") in - let tic2 = Sys.time () in - let faust_exp = exp_of_string faust_core in - let proc = (new proc_factory)#make faust_exp in - let toc2 = Sys.time () in - let () = print_endline(" Done. (duration: " ^ (string_of_float (toc2 -. tic2)) ^ "s.)") in - - - let () = print_string(" Faustine -> Evaluating...") in - let tic3 = Sys.time () in - let output = proc#eval input in - let toc3 = Sys.time () in - let () = print_endline(" Done. (duration: " ^ (string_of_float (toc3 -. tic3)) ^ "s.)") in - - - let () = print_string(" Faustine -> Calculating...") in - let tic4 = Sys.time () in - let data = output#output !time_max in - let rates = output#frequency in - let toc4 = Sys.time () in - let () = print_endline(" Done. (duration: " ^ (string_of_float (toc4 -. tic4)) ^ "s.)") in - - - let () = print_string(" Faustine -> Writing output...") in - let tic5 = Sys.time () in - let output_paths = io#write rates data in - let toc5 = Sys.time () in - let () = print_endline(" Done. (duration: " ^ (string_of_float (toc5 -. tic5)) ^ "s.)") in - - let _ = Array.map print_endline - (Array.map decorate output_paths) in - ();; - -main();; -