From 912dbfbf1eb4809f28e4e3a8bdfe76c47e018259 Mon Sep 17 00:00:00 2001 From: WANG Date: Mon, 23 Sep 2013 16:49:47 +0200 Subject: [PATCH] Replace Sys.time by Unix.time in main.ml. Modify the input/output type of functions in morpho.lib from vector to matrix. --- Makefile | 2 +- examples/2d_fft/Makefile | 2 +- examples/close/Makefile | 2 +- examples/close/close.dsp | 2 +- examples/dilation/Makefile | 2 +- examples/dilation/dilation.dsp | 2 +- examples/erosion/Makefile | 2 +- examples/erosion/erosion.dsp | 2 +- examples/fft/Makefile | 10 ++--- examples/fft/sinsum.dsp | 1 + examples/licenceplate/Makefile | 2 +- examples/open/Makefile | 2 +- examples/open/open.dsp | 2 +- examples/primitives/Makefile | 2 +- examples/sinwave/Makefile | 2 +- interpreter/main.ml | 39 +++++++++++-------- .../faust-0.9.47mr3/compiler/Makefile | 2 +- lib/morpho.lib | 39 +++++++++---------- 18 files changed, 60 insertions(+), 57 deletions(-) create mode 100644 examples/fft/sinsum.dsp diff --git a/Makefile b/Makefile index 748378e..5f8cbba 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ test: @echo "open $(SINWAVE_DIR)/output1.wav" @echo "octave -q --eval 'plot(wavread(\"$(SINWAVE_DIR)/output1.wav\")); pause'" -example: +examples:: @($(MAKE) -C $(EXAMPLES_DIR)) install : diff --git a/examples/2d_fft/Makefile b/examples/2d_fft/Makefile index 1c58826..553124f 100644 --- a/examples/2d_fft/Makefile +++ b/examples/2d_fft/Makefile @@ -14,7 +14,7 @@ $(IMGOUT): $(CSVOUT) octave -qf img_write.m $(CSVOUT): $(SRC) $(CSVIN) - faustine -d $(SRC) -i $(CSVIN) -t $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) + faustine -f $(SRC) -i $(CSVIN) -l $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) $(CSVIN): $(IMGIN) octave -qf img_read.m diff --git a/examples/close/Makefile b/examples/close/Makefile index 3e51a51..22c4885 100644 --- a/examples/close/Makefile +++ b/examples/close/Makefile @@ -14,7 +14,7 @@ $(IMGOUT): $(CSVOUT) octave -qf img_write.m $(CSVOUT): $(SRC) $(CSVIN) - faustine -d $(SRC) -i $(CSVIN) -t $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) + faustine -f $(SRC) -i $(CSVIN) -l $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) $(CSVIN): $(IMGIN) octave -qf img_read.m diff --git a/examples/close/close.dsp b/examples/close/close.dsp index e68d28c..9331bf9 100644 --- a/examples/close/close.dsp +++ b/examples/close/close.dsp @@ -1,3 +1,3 @@ import ("morpho.lib"); -process = closing_square(119, 123, 2); +process = vectorize(123) : closing_square(119, 123, 2) : serialize; diff --git a/examples/dilation/Makefile b/examples/dilation/Makefile index 1958879..3d2c6dd 100644 --- a/examples/dilation/Makefile +++ b/examples/dilation/Makefile @@ -14,7 +14,7 @@ $(IMGOUT): $(CSVOUT) octave -qf img_write.m $(CSVOUT): $(SRC) $(CSVIN) - faustine -d $(SRC) -i $(CSVIN) -t $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) + faustine -f $(SRC) -i $(CSVIN) -l $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) $(CSVIN): $(IMGIN) octave -qf img_read.m diff --git a/examples/dilation/dilation.dsp b/examples/dilation/dilation.dsp index 2ea985e..d69d8d4 100644 --- a/examples/dilation/dilation.dsp +++ b/examples/dilation/dilation.dsp @@ -1,3 +1,3 @@ import ("morpho.lib"); -process = dilations_square(112, 150, 2); +process = vectorize(150) : dilations_square(112, 150, 2) : serialize; diff --git a/examples/erosion/Makefile b/examples/erosion/Makefile index 420030f..d70affe 100644 --- a/examples/erosion/Makefile +++ b/examples/erosion/Makefile @@ -14,7 +14,7 @@ $(IMGOUT): $(CSVOUT) octave -qf img_write.m $(CSVOUT): $(SRC) $(CSVIN) - faustine -d $(SRC) -i $(CSVIN) -t $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) + faustine -f $(SRC) -i $(CSVIN) -l $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) $(CSVIN): $(IMGIN) octave -qf img_read.m diff --git a/examples/erosion/erosion.dsp b/examples/erosion/erosion.dsp index 79389dd..4634fea 100644 --- a/examples/erosion/erosion.dsp +++ b/examples/erosion/erosion.dsp @@ -1,3 +1,3 @@ import ("morpho.lib"); -process = erosions_square(112, 150, 2); +process = vectorize(150) : erosions_square(112, 150, 2) : serialize; diff --git a/examples/fft/Makefile b/examples/fft/Makefile index 8194124..cbe38a6 100644 --- a/examples/fft/Makefile +++ b/examples/fft/Makefile @@ -4,8 +4,8 @@ FORMAT = csv CSVOUT = $(BASENAME)1.$(FORMAT) IMGOUT = $(SRC:.dsp=.png) -SINS = four_sins.dsp -WAV_BASENAME = $(SINS:.dsp=) +SINSUM = sinsum.dsp +WAV_BASENAME = $(SINSUM:.dsp=) WAV_FORMAT = wav WAVIN = $(WAV_BASENAME)1.$(WAV_FORMAT) @@ -21,13 +21,13 @@ $(IMGOUT): $(CSVOUT) octave -qf img_write.m $(CSVOUT): $(SRC) $(WAVIN) - faustine -d $(SRC) -i $(WAVIN) --oformat $(FORMAT) --obasename $(BASENAME) + faustine -f $(SRC) -i $(WAVIN) --oformat $(FORMAT) --obasename $(BASENAME) $(WAVIN): $(SINS) $(INPUT1) $(INPUT2) $(INPUT3) $(INPUT4) - faustine -d $(SINS) -i $(INPUT1) -i $(INPUT2) -i $(INPUT3) -i $(INPUT4) --oformat $(WAV_FORMAT) --obasename $(WAV_BASENAME) + faustine -f $(SINSUM) -i $(INPUT1) -i $(INPUT2) -i $(INPUT3) -i $(INPUT4) --oformat $(WAV_FORMAT) --obasename $(WAV_BASENAME) clean:: - rm -f gmon.out output* + rm -f gmon.out $(CSVOUT) $(IMGOUT) $(WAVIN) *~ diff --git a/examples/fft/sinsum.dsp b/examples/fft/sinsum.dsp new file mode 100644 index 0000000..0ee1d5b --- /dev/null +++ b/examples/fft/sinsum.dsp @@ -0,0 +1 @@ +process = +, + : +; diff --git a/examples/licenceplate/Makefile b/examples/licenceplate/Makefile index c059791..a30591b 100644 --- a/examples/licenceplate/Makefile +++ b/examples/licenceplate/Makefile @@ -14,7 +14,7 @@ $(IMGOUT): $(CSVOUT) octave -qf img_write.m $(CSVOUT): $(SRC) $(CSVIN) - faustine -d $(SRC) -i $(CSVIN) -t $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) + faustine -f $(SRC) -i $(CSVIN) -l $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) $(CSVIN): $(IMGIN) octave -qf img_read.m diff --git a/examples/open/Makefile b/examples/open/Makefile index 54199ba..cdd7930 100644 --- a/examples/open/Makefile +++ b/examples/open/Makefile @@ -14,7 +14,7 @@ $(IMGOUT): $(CSVOUT) octave -qf img_write.m $(CSVOUT): $(SRC) $(CSVIN) - faustine -d $(SRC) -i $(CSVIN) -t $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) + faustine -f $(SRC) -i $(CSVIN) -l $(LINES) --oformat $(FORMAT) --obasename $(BASENAME) $(CSVIN): $(IMGIN) octave -qf img_read.m diff --git a/examples/open/open.dsp b/examples/open/open.dsp index 00e155d..77a360e 100644 --- a/examples/open/open.dsp +++ b/examples/open/open.dsp @@ -1,3 +1,3 @@ import ("morpho.lib"); -process = opening_square(119, 123, 2); +process = vectorize(123) : opening_square(119, 123, 2) : serialize; diff --git a/examples/primitives/Makefile b/examples/primitives/Makefile index b392c2b..fb73fc3 100644 --- a/examples/primitives/Makefile +++ b/examples/primitives/Makefile @@ -9,7 +9,7 @@ CSVOUT = $(BASENAME)1.$(FORMAT) all: $(CSVOUT) $(CSVOUT): $(SRC) - faustine -d $(SRC) -t $(SAMPLES) --oformat $(FORMAT) --obasename $(BASENAME) + faustine -f $(SRC) -l $(SAMPLES) --oformat $(FORMAT) --obasename $(BASENAME) clean:: rm -f gmon.out output* diff --git a/examples/sinwave/Makefile b/examples/sinwave/Makefile index c6d2ec9..064b7c8 100644 --- a/examples/sinwave/Makefile +++ b/examples/sinwave/Makefile @@ -7,7 +7,7 @@ WAVOUT = $(BASENAME)1.$(FORMAT) all: $(WAVOUT) $(WAVOUT): $(SRC) - faustine -d $< --obasename $(BASENAME) --oformat $(FORMAT) + faustine -f $< --obasename $(BASENAME) --oformat $(FORMAT) clean:: rm -f gmon.out $(BASENAME)* diff --git a/interpreter/main.ml b/interpreter/main.ml index ff94e29..54c7f1a 100644 --- a/interpreter/main.ml +++ b/interpreter/main.ml @@ -13,7 +13,7 @@ exception Missing_Expression;; let version = "Faustine: 0.0.1";; -let set_GC () = + let set_GC () = let _ = Gc.set { (Gc.get()) with Gc.minor_heap_size = 0xFFFFFF } in let _ = Gc.set { (Gc.get()) @@ -37,15 +37,15 @@ 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]";; + ^ " [-f dsp_src] [-i input] [-l length] [--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"); + ("-f", Arg.String (fun s -> path_dsp := s), ": faust .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"); + ("-l", Arg.Int (fun i -> time_max := i), ": maximun number of output samples"); ("--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"); @@ -53,7 +53,12 @@ let speclist = [ let main () = - +(* + let () = print_endline (Scanf.Scanning.name_of_input (Scanf.Scanning.stdin)) in + let () = print_endline (Unix.readlink "/proc/self/fd/0") in + let () = print_endline (Unix.readlink "/proc/self/fd/1") in + let () = print_endline (Unix.readlink "/proc/self/fd/2") in +*) let () = Arg.parse speclist option_unknown option_usage in let _ = Sys.signal Sys.sigalrm Sys.Signal_ignore in let _ = set_GC () in @@ -62,46 +67,46 @@ let main () = let () = print_string(" Faustine -> Reading input ...") in - let tic0 = Sys.time () in + let tic0 = Unix.time () in let input = io#read !inputs in - let toc0 = Sys.time () in + let toc0 = Unix.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 tic1 = Unix.time () in let faust_core = Preprocess.preprocess !path_dsp in - let toc1 = Sys.time () in + let toc1 = Unix.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 tic2 = Unix.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 toc2 = Unix.time () in let () = print_endline(" Done. (duration: " ^ (string_of_float (toc2 -. tic2)) ^ "s.)") in let () = print_string(" Faustine -> Constructing signals...") in - let tic3 = Sys.time () in + let tic3 = Unix.time () in let output = proc#eval input in - let toc3 = Sys.time () in + let toc3 = Unix.time () in let () = print_endline(" Done. (duration: " ^ (string_of_float (toc3 -. tic3)) ^ "s.)") in let () = print_string(" Faustine -> Evaluating...") in - let tic4 = Sys.time () in + let tic4 = Unix.time () in let data = output#output !time_max in let rates = output#frequency in - let toc4 = Sys.time () in + let toc4 = Unix.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 tic5 = Unix.time () in let output_paths = io#write rates data in - let toc5 = Sys.time () in + let toc5 = Unix.time () in let () = print_endline(" Done. (duration: " ^ (string_of_float (toc5 -. tic5)) ^ "s.)") in let _ = Array.map print_endline diff --git a/interpreter/preprocessor/faust-0.9.47mr3/compiler/Makefile b/interpreter/preprocessor/faust-0.9.47mr3/compiler/Makefile index 36665bf..5bfb3f9 100755 --- a/interpreter/preprocessor/faust-0.9.47mr3/compiler/Makefile +++ b/interpreter/preprocessor/faust-0.9.47mr3/compiler/Makefile @@ -23,7 +23,7 @@ endif CXXFLAGS ?= -O3 -Wall -Wuninitialized $(ARCHFLAGS) CXXFLAGS += -Wno-parentheses $(addprefix -I, $(subprojects)) -DINSTALL_PREFIX='"$(prefix)"' -all : faust preprocess.a # Haisheng WANG adds preprocess.a for multirate faust interpreter +all : faust # preprocess.a # Haisheng WANG adds preprocess.a for multirate faust interpreter faust : $(objects) $(CXX) $(CXXFLAGS) $(objects) -o faust diff --git a/lib/morpho.lib b/lib/morpho.lib index 5c42861..4b7e21b 100644 --- a/lib/morpho.lib +++ b/lib/morpho.lib @@ -14,31 +14,31 @@ tri_maxs(n) = par(i, n, tri_max); tri_min = min, _ : min; tri_mins(n) = par(i, n, tri_min); -dilating(n) = strel_shift_dilation, _, strel_shift_dilation : #, _ : # : spray_by_three(n) : tri_maxs(n) : nconcat(n); -eroding(n) = strel_shift_erosion, _, strel_shift_erosion : #, _ : # : spray_by_three(n) : tri_mins(n) : nconcat(n); +dilating(n) = strel_shift_dilation, _, strel_shift_dilation : #, _ : # : spray_by_three(n) : tri_maxs(n) : nconcat(n); // vector io +eroding(n) = strel_shift_erosion, _, strel_shift_erosion : #, _ : # : spray_by_three(n) : tri_mins(n) : nconcat(n); // vector io -dilation_line(x, y) = serialize : dilating(x) : vectorize(y); -erosion_line(x, y) = serialize : eroding(x) : vectorize(y); +dilation_line(x, y) = serialize : dilating(x) : vectorize(y); // matrix io +erosion_line(x, y) = serialize : eroding(x) : vectorize(y); // matrix io -dilation_column(x, y) = matrix_transpose(y, x) : serialize : dilating(y) : vectorize(x) : matrix_transpose(x, y); -erosion_column(x, y) = matrix_transpose(y, x) : serialize : eroding(y) : vectorize(x) : matrix_transpose(x, y); +dilation_column(x, y) = matrix_transpose(y, x) : serialize : dilating(y) : vectorize(x) : matrix_transpose(x, y); +erosion_column(x, y) = matrix_transpose(y, x) : serialize : eroding(y) : vectorize(x) : matrix_transpose(x, y); -dilation_square(x, y) = dilation_line(x, y) : dilation_column(x, y); -erosion_square(x, y) = erosion_line(x, y) : erosion_column(x, y); +dilation_square(x, y) = dilation_line(x, y) : dilation_column(x, y); +erosion_square(x, y) = erosion_line(x, y) : erosion_column(x, y); cross = _, _ <: !, _, _, !; -dilations_line(x, y, iter) = _ : vectorize(y) : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : dilation_line(x, y))~_), (iter - 1)) : rdtable : serialize; +dilations_line(x, y, iter) = _ : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : dilation_line(x, y))~_), (iter - 1)) : rdtable; -erosions_line(x, y, iter) = _ : vectorize(y) : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : erosion_line(x, y))~_), (iter - 1)) : rdtable : serialize; +erosions_line(x, y, iter) = _ : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : erosion_line(x, y))~_), (iter - 1)) : rdtable; -dilations_column(x, y, iter) = _ : vectorize(y) : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : dilation_column(x, y))~_), (iter - 1)) : rdtable : serialize; +dilations_column(x, y, iter) = _ : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : dilation_column(x, y))~_), (iter - 1)) : rdtable; -erosions_column(x, y, iter) = _ : vectorize(y) : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : erosion_column(x, y))~_), (iter - 1)) : rdtable : serialize; +erosions_column(x, y, iter) = _ : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : erosion_column(x, y))~_), (iter - 1)) : rdtable; -dilations_square(x, y, iter) = _ : vectorize(y) : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : dilation_square(x, y))~_), (iter - 1)) : rdtable : serialize; +dilations_square(x, y, iter) = _ : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : dilation_square(x, y))~_), (iter - 1)) : rdtable; -erosions_square(x, y, iter) = _ : vectorize(y) : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : erosion_square(x, y))~_), (iter - 1)) : rdtable : serialize; +erosions_square(x, y, iter) = _ : (iter, ((cross : ((0, 1 : prefix), _, _ : select2) : erosion_square(x, y))~_), (iter - 1)) : rdtable; opening_line(x, y, iter) = erosions_line(x, y, iter) : dilations_line(x, y, iter); closing_line(x, y, iter) = dilations_line(x, y, iter) : erosions_line(x, y, iter); @@ -49,19 +49,16 @@ closing_column(x, y, iter) = dilations_column(x, y, iter) : erosions_column(x, y opening_square(x, y, iter) = erosions_square(x, y, iter) : dilations_square(x, y, iter); closing_square(x, y, iter) = dilations_square(x, y, iter) : erosions_square(x, y, iter); -and = *; -threshold(x, low, high) = _ <: (_, (low : vectorize(x)) : >), (_, (high : vectorize(x)) : <) : and; +threshold(x, y, low, high) = _ <: (_, (low : vectorize(x) : vectorize(y)) : >), (_, (high : vectorize(x) : vectorize(y)) : <) : &; -//licenceplate(x, y) = _ <: (opening_line(x, y, 15), closing_line(x, y, 8) : threshold(x, 1, 50), threshold(x, 150, 255) : and : opening_column(x, y, 4) : opening_line(x, y, 4) : dilations_square(x, y, 2)), _ : and; +mask_adjusting(x, y, o7, o8, d9, d10) = opening_column(x, y, o7) : opening_line(x, y, o8) : dilations_square(x, y, d9) : dilations_line(x, y, d10); -licenceplate(x, y, o1, c2, t3, t4, t5, t6, o7, o8, d9, d10) = _ <: (opening_line(x, y, o1), closing_line(x, y, c2) : threshold(x, t3, t4), threshold(x, t5, t6) : and : opening_column(x, y, o7) : opening_line(x, y, o8) : dilations_square(x, y, d9) : dilations_line(x, y, d10)), _ : and; - -//licenceplate(x, y) = _ <: (opening_line(x, y, 4), closing_line(x, y, 2) : threshold(x, 1, 50), threshold(x, 150, 255) : and : opening_column(x, y, 4) : opening_line(x, y, 4) : dilations_square(x, y, 4)), _ : and; +licenceplate(x, y, o1, c2, t3, t4, t5, t6, o7, o8, d9, d10) = vectorize(y) <: (opening_line(x, y, o1), closing_line(x, y, c2) : threshold(x, y, t3, t4), threshold(x, y, t5, t6) : & : mask_adjusting(x, y, o7, o8, d9, d10)), _ : * : serialize; //process = dilations_line(8, 8, 3); //process = erosions(8, 8, 3); //process = open(8, 8, 2); //process = close(8, 8, 5); -//process = licenceplate(4, 4, 15, 8, 1, 50, 150, 255, 4, 4, 2, 20); +//process = licenceplate(4, 4, 1, 4, 1, 50, 150, 255, 1, 1, 5, 20); -- 2.20.1