+class type rate_type =
+ object
+ method to_int : int
+ method to_float : float
+ method to_string : string
+ method num : int
+ method denom : int
+ method equal : rate_type -> bool
+ method mul : int -> rate_type
+ method div : int -> rate_type
+ end
+
+class type signal_type =
+ object
+ method frequency : rate_type
+ method at : time -> value_type
+ method add_memory : int -> unit
+ method add : signal_type -> signal_type
+ method neg : signal_type
+ method sub : signal_type -> signal_type
+ method mul : signal_type -> signal_type
+ method div : signal_type -> signal_type
+ method power : signal_type -> signal_type
+ method _and : signal_type -> signal_type
+ method _or : signal_type -> signal_type
+ method _xor : signal_type -> signal_type
+ method delay : signal_type -> signal_type
+ method mem : signal_type
+ method vectorize : signal_type -> signal_type
+ method serialize : signal_type
+ method vconcat : signal_type -> signal_type
+ method vpick : signal_type -> signal_type
+ method floor : signal_type
+ method ceil : signal_type
+ method rint : signal_type
+ method int : signal_type
+ method float : signal_type
+ method sin : signal_type
+ method asin : signal_type
+ method cos : signal_type
+ method acos : signal_type
+ method tan : signal_type
+ method atan : signal_type
+ method atan2 : signal_type -> signal_type
+ method exp : signal_type
+ method sqrt : signal_type
+ method ln : signal_type
+ method lg : signal_type
+ method abs : signal_type
+ method fmod : signal_type -> signal_type
+ method _mod : signal_type -> signal_type
+ method remainder : signal_type -> signal_type
+ method gt : signal_type -> signal_type
+ method lt : signal_type -> signal_type
+ method geq : signal_type -> signal_type
+ method leq : signal_type -> signal_type
+ method eq : signal_type -> signal_type
+ method neq : signal_type -> signal_type
+ method shl : signal_type -> signal_type
+ method shr : signal_type -> signal_type
+ method max : signal_type -> signal_type
+ method min : signal_type -> signal_type
+ method rdtable : signal_type -> signal_type -> signal_type
+ method rwtable : signal_type -> signal_type ->
+ signal_type -> signal_type -> signal_type
+ method select2 : signal_type -> signal_type -> signal_type
+ method select3 : signal_type -> signal_type -> signal_type -> signal_type
+ method prefix : signal_type -> signal_type
+ end;;
+
+type matrix = float array array;;
+
+type data = float array array array;;
+
+class type beam_type =
+ object
+ method get : signal_type array
+ method width : int
+ method sub : int -> int -> beam_type
+ method cut : int -> beam_type * beam_type
+ method append : beam_type -> beam_type
+ method matching : int -> beam_type
+ method at : time -> value_type array
+ method output : int -> data
+ method frequency : rate_type array
+ end;;
+
+
+class type dimension_type =
+ object
+ method input : int
+ method output : int
+ method par : dimension_type -> dimension_type
+ method seq : dimension_type -> dimension_type
+ method split : dimension_type -> dimension_type
+ method merge : dimension_type -> dimension_type
+ method _rec : dimension_type -> dimension_type
+ end;;
+
+
+class type process_type =
+ object
+ method exp : faust_exp
+ method dim : dimension_type
+ method delay : int
+ method eval : beam_type -> beam_type
+ end;;
+
+
+class type io_type =
+ object
+ method set : string -> string -> unit
+ method read : string array -> beam_type
+ method write : rate_type array -> data -> string array
+ end;;