Add abstrat type matrix and data.
[Faustine.git] / interpretor / process.ml
index 31cc6c9..f094b7b 100644 (file)
@@ -89,7 +89,8 @@ class proc_const : faust_exp -> process_type =
       method eval : beam_type -> beam_type = 
        fun (input : beam_type) ->
          if input#get = [||] then
       method eval : beam_type -> beam_type = 
        fun (input : beam_type) ->
          if input#get = [||] then
-           new beam [| new signal 0 (fun t -> new value self#const)|]
+           new beam [| new signal (new rate 0 1) 
+                        (fun t -> new value self#const)|]
          else
            raise (Process_error "proc_const accepts no input.")
       end;;
          else
            raise (Process_error "proc_const accepts no input.")
       end;;
@@ -164,6 +165,10 @@ class proc_ident : faust_exp -> process_type =
                ((input#get.(0))#larger input#get.(1))
          | Smaller -> self#beam_of_ident n 
                ((input#get.(0))#smaller input#get.(1))
                ((input#get.(0))#larger input#get.(1))
          | Smaller -> self#beam_of_ident n 
                ((input#get.(0))#smaller input#get.(1))
+         | Max -> self#beam_of_ident n 
+               ((input#get.(0))#max input#get.(1))
+         | Min -> self#beam_of_ident n 
+               ((input#get.(0))#min input#get.(1))
          | Prefix -> self#beam_of_ident n 
                ((input#get.(1))#prefix input#get.(0))
          | Select2 -> self#beam_of_ident n 
          | Prefix -> self#beam_of_ident n 
                ((input#get.(1))#prefix input#get.(0))
          | Select2 -> self#beam_of_ident n 
@@ -261,7 +266,7 @@ and proc_rec : faust_exp -> process_type =
       method eval : beam_type -> beam_type = 
        fun (input : beam_type) ->
          let memory = Hashtbl.create self#delay in
       method eval : beam_type -> beam_type = 
        fun (input : beam_type) ->
          let memory = Hashtbl.create self#delay in
-         let rates = ref (Array.make self#dim#output 0) in
+         let rates = ref (Array.make self#dim#output (new rate 0 1)) in
 
          let split : (time -> value_type array) -> (time -> value_type) array = 
            fun beam_at ->
 
          let split : (time -> value_type array) -> (time -> value_type) array = 
            fun beam_at ->