diff --git a/README b/README
--- a/README
+++ b/README
@@ -1,32 +1,37 @@
 hsc3-dot - haskell supercollider dot
 ------------------------------------
 
-[hsc3-dot][hsc3-dot] provides [dot][dot] graph drawing for
-[SuperCollider][sc3] unit generator graphs generated by the
-[hsc3][hsc3] [haskell][hs] library.
+[hsc3-dot](http://rd.slavepianos.org/t/hsc3-dot)
+provides
+[dot](http://www.graphviz.org/doc/info/lang.html)
+graph drawing for
+[SuperCollider](http://audiosynth.com/)
+unit generator graphs generated by the
+[hsc3](http://rd.slavepianos.org/t/hsc3)
+[haskell]*http://haskell.org/)
+library.
 
-The graph rendering is delegated to [graphviz][graphviz], which must
-be installed.
+Graph rendering is by
+[graphviz](http://graphviz.org/),
+which must be installed.
 
-There is an
+There is a
+[tutorial](?t=hsc3-dot&e=md/dot.md)
+and also an
 [entry](?t=hsc3-texts&e=lhs/hsc3-tutorial.lhs#ugen-graph-drawings)
-at the [hsc3-texts](?t=hsc3-texts)
+at the
+[hsc3-texts](?t=hsc3-texts)
 [tutorial](?t=hsc3-texts&e=lhs/hsc3-tutorial.lhs).
 
-The default [SVG][svg] viewer is [rsvg-view-3][rsvg], which is in the
-debian package `librsvg2-bin`.
+The default
+[SVG](http://www.w3.org/Graphics/SVG/)
+viewer is
+[rsvg-view-3]( http://wiki.gnome.org/LibRsvg),
+which is in the debian package `librsvg2-bin`.
 
-[hs]: http://haskell.org/
-[sc3]: http://audiosynth.com/
-[graphviz]: http://graphviz.org/
-[dot]: http://www.graphviz.org/doc/info/lang.html
-[hsc3-dot]: http://rd.slavepianos.org/?t=hsc3-dot
-[hsc3-texts]: http://rd.slavepianos.org/?t=hsc3-texts
-[hsc3]: http://rd.slavepianos.org/?t=hsc3
-[svg]: http://www.w3.org/Graphics/SVG/
-[rsvg]: http://wiki.gnome.org/LibRsvg
+## cli
 
-© [rohan drape][rd], 2006-2014, [gpl]
+[plot-sf](?t=hsc3-plot&e=md/plot-sf.md)
 
-[rd]: http://rd.slavepianos.org/
-[gpl]: http://gnu.org/copyleft/
+© [rohan drape](http://rd.slavepianos.org/), 2006-2017,
+  [gpl](http://gnu.org/copyleft/)
diff --git a/Sound/SC3/UGen/Dot.hs b/Sound/SC3/UGen/Dot.hs
--- a/Sound/SC3/UGen/Dot.hs
+++ b/Sound/SC3/UGen/Dot.hs
@@ -1,145 +1,6 @@
-{- | Module to provide graph drawing of unit generator graphs.  The
-output is in the form of a dot graph, which can be layed out using the
-@graphviz@ tools, see <http://graphviz.org>.
-
-> import Sound.SC3.ID
-> import Sound.SC3.UGen.Dot
-
-Simple a-rate only graph.
-
-> draw (out 0 (sinOsc AR 440 0 * 0.1))
-
-<<dot/01.svg>>
-
-As above, but using the /record/ interface.
-
-> import Sound.SC3.UGen.Dot.Type
-
-> let o = dot_options {use_tables = False}
-> in draw_with_opt o (out 0 (sinOsc AR 440 0 * 0.1))
-
-<<dot/02.svg>>
-
-With k-rate subgraph.
-
-> let f = lfSaw KR 1 0 * 220 + 440
-> in draw (out 0 (sinOsc AR f 0 * 0.1))
-
-<<dot/03.svg>>
-
-With k-rate & i-rate subgraphs
-
-> let {l = rand 'a' 200 400
->     ;m = rand 'b' l 600
->     ;a = rand 'c' 500 900
->     ;f = lfSaw KR 1 0 * m + a}
-> in draw (out 0 (sinOsc AR f 0 * 0.1))
-
-<<dot/04.svg>>
-
-With control input
-
-> let f = control KR "freq" 440
-> in draw (out 0 (sinOsc AR f 0 * 0.1))
-
-<<dot/05.svg>>
-
-As above but with inlined controls.
-
-> let {f = control KR "freq" 440
->     ;o = dot_options {inline_controls = True}}
-> in draw_with_opt o (out 0 (sinOsc AR f 0 * 0.1))
-
-<<dot/06.svg>>
-
-As above but without control name label.
-
-> let {o = dot_options {inline_controls = True
->                      ,display_control_names = False}
->     ;f = control KR "freq" 440}
-> in draw_with_opt o (out 0 (sinOsc AR f 0 * 0.1))
-
-<<dot/07.svg>>
-
-With multiple channel expansion.
-
-> let f = mce2 440 220
-> in draw (out 0 (sinOsc AR f 0 * 0.1))
-
-<<dot/08.svg>>
-
-With multiple root graph.
-
-> let {f = mce2 440 220 + in' 2 KR 0
->     ;o1 = sinOsc AR f 0 * 0.1
->     ;o2 = sinOsc KR (mce2 0.25 0.35) 0 * mce2 10 15 }
-> in draw (mrg [out 0 o1,out 0 o2])
-
-<<dot/09.svg>>
-
-With multiple channel UGen.
-
-> draw (out 0 (pan2 (sinOsc AR 440 0 * 0.1) 0 1))
-
-<<dot/10.svg>>
-
-With reserved labels (ie. <,>,&), and fixed size graph (size in inches).
-
-> let o = svg_options {graph_size = Just (1,4)}
-> in draw_with_opt o (out 0 (sinOsc AR 440 0 >* 0))
-
-<<dot/11.svg>>
-
--}
-module Sound.SC3.UGen.Dot where
-
-import Sound.SC3.UGen.Dot.Class
-import Sound.SC3.UGen.Dot.Internal
-import Sound.SC3.UGen.Dot.Type
-
--- | 'dot_with_opt' of 'dot_options'.
-dot :: Drawable a => a -> String
-dot = dot_with_opt dot_options
-
--- | 'dot_with_opt' of 'svg_options'.
-dot_svg :: Drawable a => a -> String
-dot_svg = dot_with_opt svg_options
-
--- | 'view_with' of 'dot_with_opt'.
-draw_with_opt :: Drawable a => Dot_Options -> a -> IO ()
-draw_with_opt o x = view_with o (dot_with_opt o x)
-
--- | 'draw_with_opt' of 'dot_options'.
-draw :: Drawable a => a -> IO ()
-draw = draw_with_opt dot_options
-
--- | 'draw_with_opt' of 'svg_options'.
-draw_svg :: Drawable a => a -> IO ()
-draw_svg = draw_with_opt svg_options
-
--- | Default @dot@ format 'Dot_Options'.
---
--- > std_style dot_options
-dot_options :: Dot_Options
-dot_options = Dot_Options
-    {use_tables = True
-    ,use_splines = False
-    ,output_format = DOT
-    ,output_directory = "/tmp"
-    ,output_file_name = "hsc3"
-    ,fix_edge_location = False
-    ,numeric_precision = 3
-    ,indicate_precision = False
-    ,inline_controls = False
-    ,display_control_names = True
-    ,dot_viewer = "dotty"
-    ,svg_viewer = "rsvg-view-3"
-    ,font_name = "Courier"
-    ,font_size = 12
-    ,graph_size = Nothing
-    }
+-- | Re-export of three main modules.
+module Sound.SC3.UGen.Dot (module D) where
 
--- | Default @svg@ format 'Dot_Options'.
-svg_options :: Dot_Options
-svg_options = dot_options {output_format = SVG
-                          ,fix_edge_location = True}
+import Sound.SC3.UGen.Dot.Class as D
+import Sound.SC3.UGen.Dot.HL as D
+import Sound.SC3.UGen.Dot.Type as D
diff --git a/Sound/SC3/UGen/Dot/Common.hs b/Sound/SC3/UGen/Dot/Common.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Dot/Common.hs
@@ -0,0 +1,70 @@
+module Sound.SC3.UGen.Dot.Common where
+
+import Text.Printf {- base -}
+
+-- | Bracket with elements.
+bracket1 :: (a,a) -> [a] -> [a]
+bracket1 (l,r) x = [l] ++ x ++ [r]
+
+-- | Bracket with lists.
+bracket :: ([a],[a]) -> [a] -> [a]
+bracket (l,r) x = l ++ x ++ r
+
+-- | 'bracket' with double quotes.
+string_pp :: String -> String
+string_pp = bracket1 ('"','"')
+
+-- | 'bracket' with double quotes and braces.
+label_pp :: String -> String
+label_pp = bracket ("\"{","}\"")
+
+-- | Type specialised 'show'.
+int_pp :: Int -> String
+int_pp = show
+
+-- | 'reverse' of /f/ of 'reverse'.
+--
+-- > let drop_while_right f = right_variant (dropWhile f)
+-- > in drop_while_right isUpper "abcDEF" == "abc"
+right_variant :: ([a] -> [b]) -> [a] -> [b]
+right_variant f = reverse . f . reverse
+
+-- | Limited precision PP for 'n', no scientific notation.
+--
+-- > map (limit_precision_p True 2) [1,1.25,1.12345,0,0.05,pi*1e8,1e9]
+limit_precision_p :: (PrintfArg n) => Bool -> Int -> n -> String
+limit_precision_p r n c =
+    let i = printf "%.*f" n c
+    in if r
+       then i
+       else right_variant (dropWhile (== '.') . dropWhile (== '0')) i
+
+-- | Limited precision PP for 'n', with scientific notation.
+--
+-- > map (limit_precision_e 3) [1,1.25,0.05,pi*1e8,1e9,read "Infinity"]
+limit_precision_e :: (Read n,Show n) => Int -> n -> String
+limit_precision_e n c =
+    case show c of
+      "Infinity" -> "Infinity"
+      c' ->
+          let (i,j') = break (== '.') c'
+              j = if null j' then error ("limit_precision_e: no dot: " ++ c') else tail j'
+              (k,l) = break (== 'e') j
+              f :: String -> Int
+              f m = round ((read (take (n + 1) m) :: Read n => n) / (10::Double))
+              k' = if length k > n
+                   then show (f k)
+                   else k
+          in i ++ if k == "0"
+                  then l
+                  else "." ++ k' ++ l
+
+-- | Variant selecting scientific notation more cautiously than haskells default PP.
+--
+-- > map (limit_precision True 3) [1,1.25,0.05,0,pi*1e8,1e9]
+limit_precision :: (Floating n,Ord n,Read n,Show n,PrintfArg n) => Bool -> Int -> n -> String
+limit_precision r n c =
+    if c /= 0 && (c < (10 ** fromIntegral (- n)) || c > 1e6)
+    then limit_precision_e n c
+    else limit_precision_p r n c
+
diff --git a/Sound/SC3/UGen/Dot/HL.hs b/Sound/SC3/UGen/Dot/HL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Dot/HL.hs
@@ -0,0 +1,60 @@
+-- | High-level dot.
+module Sound.SC3.UGen.Dot.HL where
+
+import Sound.SC3.UGen.Dot.Class
+import Sound.SC3.UGen.Dot.Internal
+import Sound.SC3.UGen.Dot.Type
+
+-- | 'dot_with_opt' of 'dot_options'.
+dot :: Drawable a => a -> String
+dot = dot_with_opt dot_options
+
+-- | 'dot_with_opt' of 'svg_options'.
+dot_svg :: Drawable a => a -> String
+dot_svg = dot_with_opt svg_options
+
+-- | 'view_with' of 'dot_with_opt'.
+draw_with_opt :: Drawable a => Dot_Options -> a -> IO ()
+draw_with_opt o x = view_with o (dot_with_opt o x)
+
+-- | 'draw_with_opt' with 'run_viewer' set to 'False'.
+write_with_opt :: Drawable a => Dot_Options -> a -> IO ()
+write_with_opt o = draw_with_opt (o {run_viewer = False})
+
+-- | 'draw_with_opt' of 'dot_options'.
+draw :: Drawable a => a -> IO ()
+draw = draw_with_opt dot_options
+
+-- | 'draw_with_opt' of 'svg_options'.
+draw_svg :: Drawable a => a -> IO ()
+draw_svg = draw_with_opt svg_options
+
+-- | Default @dot@ format 'Dot_Options'.
+--
+-- > std_style dot_options
+dot_options :: Dot_Options
+dot_options = Dot_Options
+    {use_tables = True
+    ,use_attr_id = False
+    ,use_splines = False
+    ,output_format = DOT
+    ,output_directory = "/tmp"
+    ,output_file_name = "hsc3"
+    ,fix_edge_location = False
+    ,numeric_precision = 3
+    ,indicate_precision = False
+    ,inline_controls = False
+    ,display_control_names = True
+    ,dot_viewer = "dotty"
+    ,svg_viewer = "rsvg-view-3"
+    ,font_name = "Courier"
+    ,font_size = 12
+    ,graph_size = Nothing
+    ,colour_edges = True
+    ,run_viewer = True
+    }
+
+-- | Default @svg@ format 'Dot_Options'.
+svg_options :: Dot_Options
+svg_options = dot_options {output_format = SVG
+                          ,fix_edge_location = True}
diff --git a/Sound/SC3/UGen/Dot/Internal.hs b/Sound/SC3/UGen/Dot/Internal.hs
--- a/Sound/SC3/UGen/Dot/Internal.hs
+++ b/Sound/SC3/UGen/Dot/Internal.hs
@@ -12,23 +12,9 @@
 
 import qualified Sound.SC3 as S {- hsc3 -}
 import qualified Sound.SC3.UGen.Graph as S {- hsc3 -}
-import Sound.SC3.UGen.Dot.Type {- hsc3-dot -}
 
--- | Bracket with elements.
-bracket1 :: (a,a) -> [a] -> [a]
-bracket1 (l,r) x = [l] ++ x ++ [r]
-
--- | Bracket with lists.
-bracket :: ([a],[a]) -> [a] -> [a]
-bracket (l,r) x = l ++ x ++ r
-
--- | 'bracket' with double quotes.
-string_pp :: String -> String
-string_pp = bracket1 ('"','"')
-
--- | 'bracket' with double quotes and braces.
-label_pp :: String -> String
-label_pp = bracket ("\"{","}\"")
+import qualified Sound.SC3.UGen.Dot.Common as C {- hsc3-dot -}
+import qualified Sound.SC3.UGen.Dot.Type as D {- hsc3-dot -}
 
 -- | Key value pair.
 type Attr = (String,String)
@@ -43,16 +29,12 @@
 
 -- | Attribute lists are in square brackets and comma seperated.
 attr_list_pp :: [Attr] -> String
-attr_list_pp = bracket1 ('[',']') . intercalate "," . mapMaybe attr_pp_maybe
+attr_list_pp = C.bracket1 ('[',']') . intercalate "," . mapMaybe attr_pp_maybe
 
 -- | Attribute sets are named and semi-colon terminated.
 attr_set_pp :: String -> [Attr] -> String
 attr_set_pp nm attr = concat [nm," ",attr_list_pp attr,";"]
 
--- | Type specialised 'show'.
-int_pp :: Int -> String
-int_pp = show
-
 -- | Size is given as @(width,height)@.
 size_pp :: (Double,Double) -> String
 size_pp (x,y) = printf "\"%f,%f\"" x y
@@ -62,22 +44,22 @@
 bool_pp = map toLower . show
 
 -- | Basic attribute sets given 'Dot_Options'.
-std_style :: Dot_Options -> [String]
+std_style :: D.Dot_Options -> [String]
 std_style o =
-    [attr_set_pp "graph" [("splines",bool_pp (use_splines o))
-                         ,("size",maybe "" size_pp (graph_size o))]
-    ,attr_set_pp "node" [("fontsize",int_pp (font_size o))
-                        ,("fontname",string_pp (font_name o))]
+    [attr_set_pp "graph" [("splines",bool_pp (D.use_splines o))
+                         ,("size",maybe "" size_pp (D.graph_size o))]
+    ,attr_set_pp "node" [("fontsize",C.int_pp (D.font_size o))
+                        ,("fontname",C.string_pp (D.font_name o))]
     ,attr_set_pp "edge" [("arrowhead","box")
                         ,("arrowsize","0.25")]]
 
 -- | Generate dot representation of the provided unit generator graph.
-dotGraph :: Dot_Options -> S.Graph -> String
+dotGraph :: D.Dot_Options -> S.Graph -> String
 dotGraph o g =
     let (S.Graph _ _ ks us) = g
         ls = concat [["digraph Anonymous {"]
                     ,std_style o
-                    ,if inline_controls o
+                    ,if D.inline_controls o
                      then []
                      else map (dot_node_k o) ks
                     ,map (dot_node_u o g) us
@@ -86,79 +68,36 @@
     in unlines (filter (not.null) ls)
 
 -- | View @dot@ graph according to 'Dot_Options'.
-view_with :: Dot_Options -> String -> IO ()
+view_with :: D.Dot_Options -> String -> IO ()
 view_with o x = do
   v <- get_viewer o
-  let d = output_directory o
-      f = d </> output_file_name o
+  let d = D.output_directory o
+      f = d </> D.output_file_name o
       f_dot = f <.> "dot"
       f_svg = f <.> "svg"
       f_svg_gz = f_svg <.> "gz"
-      f_view = case output_format o of
-                 DOT -> f_dot
-                 SVG -> f_svg
-                 SVG_GZ -> f_svg_gz
+      f_view = case D.output_format o of
+                 D.DOT -> f_dot
+                 D.SVG -> f_svg
+                 D.SVG_GZ -> f_svg_gz
       gen_svg = rawSystem "dot" ["-T","svg",f_dot,"-o",f_svg]
   writeFile f_dot x
-  when (output_format o `elem` [SVG,SVG_GZ]) (void gen_svg)
-  when (output_format o == SVG_GZ) (void (rawSystem "gzip" ["-f",f_svg]))
-  when (False && output_format o /= DOT) (removeFile f_dot)
-  _ <- rawSystem v [f_view]
-  return ()
+  when (D.output_format o `elem` [D.SVG,D.SVG_GZ]) (void gen_svg)
+  when (D.output_format o == D.SVG_GZ) (void (rawSystem "gzip" ["-f",f_svg]))
+  when (False && D.output_format o /= D.DOT) (removeFile f_dot)
+  void (rawSystem v [f_view])
 
 -- | Input port.
 data IP = IP_Label String
         | IP_Port String Char Int
         | IP_Const (Maybe String,String,Int) S.Sample
 
--- | 'reverse' of /f/ of 'reverse'.
---
--- > let drop_while_right f = right_variant (dropWhile f)
--- > in drop_while_right isUpper "abcDEF" == "abc"
-right_variant :: ([a] -> [b]) -> [a] -> [b]
-right_variant f = reverse . f . reverse
-
--- | Limited precision PP for 'S.Sample', no scientific notation.
---
--- > map (limit_precision_p True 2) [1,1.25,1.12345,0,0.05,pi*1e8,1e9]
-limit_precision_p :: Bool -> Int -> S.Sample -> String
-limit_precision_p r n c =
-    let i = printf "%.*f" n c
-    in if r
-       then i
-       else right_variant (dropWhile (== '.') . dropWhile (== '0')) i
-
--- | Limited precision PP for 'S.Sample', with scientific notation.
---
--- > map (limit_precision_e 3) [1,1.25,0.05,pi*1e8,1e9]
-limit_precision_e :: Int -> S.Sample -> String
-limit_precision_e n c =
-    let (i,_:j) = break (== '.') (show c)
-        (k,l) = break (== 'e') j
-        f :: String -> Int
-        f m = round ((read (take (n + 1) m) :: S.Sample) / 10)
-        k' = if length k > n
-             then show (f k)
-             else k
-    in i ++ if k == "0"
-            then l
-            else "." ++ k' ++ l
-
--- | Variant selecting scientific notation more cautiously than haskells default PP.
---
--- > map (limit_precision True 3) [1,1.25,0.05,0,pi*1e8,1e9]
-limit_precision :: Bool -> Int -> S.Sample -> String
-limit_precision r n c =
-    if c /= 0 && (c < (10 ** fromIntegral (- n)) || c > 1e6)
-    then limit_precision_e n c
-    else limit_precision_p r n c
-
 -- | Variant of 'limit_precision' reading parameters from 'Dot_Options'.
-limit_precision_o :: Dot_Options -> S.Sample -> String
-limit_precision_o o = limit_precision (indicate_precision o) (numeric_precision o)
+limit_precision_o :: D.Dot_Options -> S.Sample -> String
+limit_precision_o o = C.limit_precision (D.indicate_precision o) (D.numeric_precision o)
 
 -- | IP in record form.
-ip_record :: Dot_Options -> IP -> String
+ip_record :: D.Dot_Options -> IP -> String
 ip_record o i =
     case i of
       IP_Label l -> l
@@ -173,29 +112,31 @@
     in concatMap f
 
 -- | 'IP' as @HTML@ string.
-ip_html :: Dot_Options -> IP -> String
+ip_html :: D.Dot_Options -> IP -> String
 ip_html o i =
     case i of
       IP_Label l -> printf "<TD>%s</TD>" (escape_html l)
       IP_Port u c n ->
           let p = c : '_' : show n
-          in printf "<TD PORT=\"%s\" ID=\"%s:%s\"></TD>" p u p
+              a = if D.use_attr_id o then printf " ID=\"%s:%s\"" u p else ""
+          in printf "<TD PORT=\"%s\"%s></TD>" p a
       IP_Const (k,u,p) n ->
           let p' = "K_" ++ show p
               n' = limit_precision_o o n
               l = maybe "" (++":") k ++ n'
-          in printf "<TD ID=\"%s:%s\">%s</TD>" u p' l
+              a = if D.use_attr_id o then printf " ID=\"%s:%s\"" u p' else ""
+          in printf "<TD%s>%s</TD>" a l
 
-record :: Dot_Options -> String -> String -> ([IP],[IP]) -> String
+record :: D.Dot_Options -> String -> String -> ([IP],[IP]) -> String
 record o nm clr (upr,lwr) =
     let f l = concat ["{",g (map (ip_record o) l),"}"]
         g = intercalate "|"
         lbl = g [f upr,f lwr]
-    in attr_set_pp nm [("shape",string_pp "record")
-                      ,("color",string_pp clr)
-                      ,("label",label_pp lbl)]
+    in attr_set_pp nm [("shape",C.string_pp "record")
+                      ,("color",C.string_pp clr)
+                      ,("label",C.label_pp lbl)]
 
-table :: Dot_Options -> String -> String -> ([IP],[IP]) -> String
+table :: D.Dot_Options -> String -> String -> ([IP],[IP]) -> String
 table o lbl clr (upr,lwr) =
     let k = length upr - length lwr
         e = concat (replicate k "<TD BORDER=\"0\"></TD>")
@@ -204,17 +145,18 @@
                 else concat ["<TR>",p ++ concatMap (ip_html o) l,"</TR>"]
     in attr_set_pp
        lbl
-       [("shape",string_pp "plaintext")
-       ,("color",string_pp clr)
+       [("shape",C.string_pp "plaintext")
+       ,("color",C.string_pp clr)
        ,("label",concat ["<<TABLE BORDER=\"0\" CELLBORDER=\"1\">"
                         ,f [] upr ++ f e lwr
                         ,"</TABLE>>"])]
 
-dot_edge :: Dot_Options -> S.Graph -> S.Edge -> String
+dot_edge :: D.Dot_Options -> S.Graph -> S.Edge -> String
 dot_edge o g (l,S.ToPort ri rn) =
     let Just ln = S.find_node g (S.port_nid l)
-        s = if fix_edge_location o then ":s" else ""
-    in if S.is_node_c ln || S.is_node_k ln && inline_controls o
+        s = if D.fix_edge_location o then ":s" else ""
+        clr = if D.colour_edges o then S.rate_color (S.node_rate ln) else "black"
+    in if S.is_node_c ln || S.is_node_k ln && D.inline_controls o
        then ""
        else concat [S.node_label ln
                    ,if S.is_node_u ln
@@ -226,28 +168,29 @@
                    ,let Just ri_n = S.find_node g ri in S.node_label ri_n
                    ,":i_"
                    ,show rn
+                   ," [color=",clr,"]"
                    ,";"]
 
-input :: Dot_Options -> S.Graph -> S.Node -> S.FromPort -> Int -> IP
+input :: D.Dot_Options -> S.Graph -> S.Node -> S.FromPort -> Int -> IP
 input o g u fp k =
     case fp of
       S.FromPort_C i ->
           let Just n = S.find_node g i
           in IP_Const (Nothing,S.node_label u,k) (S.node_c_value n)
       S.FromPort_K i _ ->
-          if inline_controls o
+          if D.inline_controls o
           then let Just n = S.find_node g i
-                   l = if display_control_names o
+                   l = if D.display_control_names o
                        then Just (S.node_k_name n)
                        else Nothing
                in IP_Const (l,S.node_label u,k) (S.node_k_default n)
           else IP_Port (S.node_label u) 'i' k
       _ -> IP_Port (S.node_label u) 'i' k
 
-dot_node_u :: Dot_Options -> S.Graph -> S.Node -> String
+dot_node_u :: D.Dot_Options -> S.Graph -> S.Node -> String
 dot_node_u o g u =
     let lbl = S.node_label u
-        clr = S.rate_color (S.node_u_rate u)
+        clr = S.rate_color (S.node_rate u)
         i = S.node_u_inputs u
         i' = length i - 1
         s = S.node_u_special u
@@ -255,7 +198,7 @@
               zipWith (input o g u) i [0..i']
         lwr = let n = length (S.node_u_outputs u) - 1
               in map (IP_Port (S.node_label u) 'o') [0 .. n]
-        f = if use_tables o then table o else record o
+        f = if D.use_tables o then table o else record o
     in if S.is_implicit_control u
        then ""
        else f lbl clr (upr,lwr)
@@ -265,21 +208,21 @@
     let c = if S.node_k_type k == S.K_TR
             then "cyan"
             else S.rate_color (S.node_k_rate k)
-    in ("color",string_pp c)
+    in ("color",C.string_pp c)
 
-dot_node_k_rec :: Dot_Options -> S.Node -> String
+dot_node_k_rec :: D.Dot_Options -> S.Node -> String
 dot_node_k_rec o u =
     attr_set_pp
     (S.node_label u)
-    [("shape",string_pp "rect")
+    [("shape",C.string_pp "rect")
     ,dot_node_k_color u
-    ,("label",string_pp (S.node_k_name u ++ ":" ++ limit_precision_o o (S.node_k_default u)))]
+    ,("label",C.string_pp (S.node_k_name u ++ ":" ++ limit_precision_o o (S.node_k_default u)))]
 
-dot_node_k_html :: Dot_Options -> S.Node -> String
+dot_node_k_html :: D.Dot_Options -> S.Node -> String
 dot_node_k_html o u =
     attr_set_pp
     (S.node_label u)
-    [("shape",string_pp "plaintext")
+    [("shape",C.string_pp "plaintext")
     ,dot_node_k_color u
     ,("label",concat ["<<TABLE BORDER=\"0\" CELLBORDER=\"1\">"
                      ,"<TR><TD PORT=\"o_0\">"
@@ -287,17 +230,17 @@
                      ,"</TD></TR>"
                      ,"</TABLE>>"])]
 
-dot_node_k :: Dot_Options -> S.Node -> String
+dot_node_k :: D.Dot_Options -> S.Node -> String
 dot_node_k o =
-    if use_tables o
+    if D.use_tables o
     then dot_node_k_html o
     else dot_node_k_rec o
 
 -- | Considering 'output_format' read either the environment variable
 -- @DOTVIEWER@ or @SVGVIEWER@, the default values are 'dot_viewer' and
 -- 'svg_viewer'.
-get_viewer :: Dot_Options -> IO String
+get_viewer :: D.Dot_Options -> IO String
 get_viewer o =
-    if output_format o == DOT
-    then S.get_env_default "DOTVIEWER" (dot_viewer o)
-    else S.get_env_default "SVGVIEWER" (svg_viewer o)
+    if D.output_format o == D.DOT
+    then S.get_env_default "DOTVIEWER" (D.dot_viewer o)
+    else S.get_env_default "SVGVIEWER" (D.svg_viewer o)
diff --git a/Sound/SC3/UGen/Dot/Type.hs b/Sound/SC3/UGen/Dot/Type.hs
--- a/Sound/SC3/UGen/Dot/Type.hs
+++ b/Sound/SC3/UGen/Dot/Type.hs
@@ -7,6 +7,7 @@
 -- | Dot options record.
 data Dot_Options = Dot_Options
     {use_tables :: Bool -- ^ Select @record@ or @html/table@ rendering.
+    ,use_attr_id :: Bool -- ^ Write @ID@ attributes
     ,use_splines :: Bool -- ^ Select edge rendering
     ,output_format :: Dot_Format -- ^ Select viewer format.
     ,fix_edge_location :: Bool -- ^ Select output port edge location.
@@ -14,11 +15,13 @@
     ,indicate_precision :: Bool -- ^ Print to precision even if not required
     ,inline_controls :: Bool -- ^ Draw controls within UGen input port slots.
     ,display_control_names :: Bool -- ^ Elide control names if 'False'.
-    ,output_directory :: FilePath -- ^ File name (without suffix).
+    ,output_directory :: FilePath -- ^ Directory to write files to.
     ,output_file_name :: String -- ^ File name (without suffix).
     ,dot_viewer :: String -- ^ @dot@ file viewer (ie. "dotty")
     ,svg_viewer :: String -- ^ @svg@ file viewer (ie. "rsvg-view","inkview")
     ,font_name :: String -- ^ Name of font to use
     ,font_size :: Int -- ^ Font size
     ,graph_size :: Maybe (Double,Double) -- ^ Graph box size (inches)
+    ,colour_edges :: Bool -- ^ Colour edges according to source?
+    ,run_viewer :: Bool -- ^ Run viewer process?
     }
diff --git a/dot/01.dot b/dot/01.dot
new file mode 100644
--- /dev/null
+++ b/dot/01.dot
@@ -0,0 +1,10 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_2:K_0">440</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_4:i_0"></TD><TD ID="u_4:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_4:o_0"></TD></TR></TABLE>>];
+u_5[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_5:K_0">0</TD><TD PORT="i_1" ID="u_5:i_1"></TD></TR></TABLE>>];
+u_2:o_0 -> u_4:i_0;
+u_4:o_0 -> u_5:i_1;
+}
diff --git a/dot/01.svg b/dot/01.svg
deleted file mode 100644
--- a/dot/01.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="125pt" height="188pt"
- viewBox="0.00 0.00 125.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-184 122,-184 122,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
-<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
-<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
-<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
-<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
-</g>
-<!-- u_4 -->
-<g id="node2" class="node"><title>u_4</title>
-<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
-<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
-<polygon fill="none" stroke="black" points="86,-86 86,-102 108,-102 108,-86 86,-86"/>
-<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="86,-78 86,-84 108,-84 108,-78 86,-78"/>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
-<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
-<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
-</g>
-<!-- u_5 -->
-<g id="node3" class="node"><title>u_5</title>
-<polygon fill="none" stroke="black" points="55,-10 55,-26 78,-26 78,-10 55,-10"/>
-<text text-anchor="start" x="58.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="80,-10 80,-26 92,-26 92,-10 80,-10"/>
-<text text-anchor="start" x="83" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="94,-10 94,-26 100,-26 100,-10 94,-10"/>
-</g>
-<!-- u_4&#45;&gt;u_5 -->
-<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
-<path fill="none" stroke="black" d="M97,-78C97,-78 97,-38.8953 97,-28.5081"/>
-<polygon fill="black" stroke="black" points="96,-26 98,-26 98.0001,-28 96.0001,-28 96,-26"/>
-<polyline fill="none" stroke="black" points="97.0001,-28 97.0001,-28.5 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/02.dot b/dot/02.dot
new file mode 100644
--- /dev/null
+++ b/dot/02.dot
@@ -0,0 +1,10 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2 [shape="record",color="black",label="{{SinOsc|440|0}|{<o_0>}}"];
+u_4 [shape="record",color="black",label="{{*|<i_0>|0.1}|{<o_0>}}"];
+u_5 [shape="record",color="black",label="{{Out|0|<i_1>}|{}}"];
+u_2:o_0 -> u_4:i_0;
+u_4:o_0 -> u_5:i_1;
+}
diff --git a/dot/02.svg b/dot/02.svg
deleted file mode 100644
--- a/dot/02.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="119pt" height="200pt"
- viewBox="0.00 0.00 119.00 200.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 196)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-196 116,-196 116,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="black" points="9,-153 9,-191 111,-191 111,-153 9,-153"/>
-<text text-anchor="middle" x="33" y="-178.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polyline fill="none" stroke="black" points="57,-172 57,-191 "/>
-<text text-anchor="middle" x="73" y="-178.9" font-family="Courier,monospace" font-size="9.00">440</text>
-<polyline fill="none" stroke="black" points="89,-172 89,-191 "/>
-<text text-anchor="middle" x="100" y="-178.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polyline fill="none" stroke="black" points="9,-172 111,-172 "/>
-<text text-anchor="middle" x="60" y="-159.9" font-family="Courier,monospace" font-size="9.00"> </text>
-</g>
-<!-- u_4 -->
-<g id="node2" class="node"><title>u_4</title>
-<polygon fill="none" stroke="black" points="27,-77 27,-115 103,-115 103,-77 27,-77"/>
-<text text-anchor="middle" x="38" y="-102.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polyline fill="none" stroke="black" points="49,-96 49,-115 "/>
-<text text-anchor="middle" x="60" y="-102.9" font-family="Courier,monospace" font-size="9.00"> </text>
-<polyline fill="none" stroke="black" points="71,-96 71,-115 "/>
-<text text-anchor="middle" x="87" y="-102.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polyline fill="none" stroke="black" points="27,-96 103,-96 "/>
-<text text-anchor="middle" x="65" y="-83.9" font-family="Courier,monospace" font-size="9.00"> </text>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M60,-153C60,-153 60,-126.94 60,-117.982"/>
-<polygon fill="black" stroke="black" points="59,-115 61,-115 61.0001,-117 59.0001,-117 59,-115"/>
-<polyline fill="none" stroke="black" points="60.0001,-117 60.0001,-117.5 "/>
-</g>
-<!-- u_5 -->
-<g id="node3" class="node"><title>u_5</title>
-<polygon fill="none" stroke="black" points="0,-1 0,-39 76,-39 76,-1 0,-1"/>
-<text text-anchor="middle" x="16" y="-26.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polyline fill="none" stroke="black" points="32,-20 32,-39 "/>
-<text text-anchor="middle" x="43" y="-26.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polyline fill="none" stroke="black" points="54,-20 54,-39 "/>
-<text text-anchor="middle" x="65" y="-26.9" font-family="Courier,monospace" font-size="9.00"> </text>
-<polyline fill="none" stroke="black" points="0,-20 76,-20 "/>
-<text text-anchor="middle" x="38" y="-7.9" font-family="Courier,monospace" font-size="9.00"> </text>
-</g>
-<!-- u_4&#45;&gt;u_5 -->
-<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
-<path fill="none" stroke="black" d="M65,-77C65,-77 65,-50.9399 65,-41.9818"/>
-<polygon fill="black" stroke="black" points="64,-39 66,-39 66.0001,-41 64.0001,-41 64,-39"/>
-<polyline fill="none" stroke="black" points="65.0001,-41 65.0001,-41.5 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/03.dot b/dot/03.dot
new file mode 100644
--- /dev/null
+++ b/dot/03.dot
@@ -0,0 +1,16 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>LFSaw</TD><TD ID="u_2:K_0">1</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_4:i_0"></TD><TD ID="u_4:K_1">220</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_4:o_0"></TD></TR></TABLE>>];
+u_6[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>+</TD><TD PORT="i_0" ID="u_6:i_0"></TD><TD ID="u_6:K_1">440</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_6:o_0"></TD></TR></TABLE>>];
+u_7[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD PORT="i_0" ID="u_7:i_0"></TD><TD ID="u_7:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_7:o_0"></TD></TR></TABLE>>];
+u_9[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_9:i_0"></TD><TD ID="u_9:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_9:o_0"></TD></TR></TABLE>>];
+u_10[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_10:K_0">0</TD><TD PORT="i_1" ID="u_10:i_1"></TD></TR></TABLE>>];
+u_2:o_0 -> u_4:i_0;
+u_4:o_0 -> u_6:i_0;
+u_6:o_0 -> u_7:i_0;
+u_7:o_0 -> u_9:i_0;
+u_9:o_0 -> u_10:i_1;
+}
diff --git a/dot/03.svg b/dot/03.svg
deleted file mode 100644
--- a/dot/03.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="153pt" height="404pt"
- viewBox="0.00 0.00 153.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-400 150,-400 150,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="blue" points="10,-374 10,-390 44,-390 44,-374 10,-374"/>
-<text text-anchor="start" x="13.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">LFSaw</text>
-<polygon fill="none" stroke="blue" points="46,-374 46,-390 58,-390 58,-374 46,-374"/>
-<text text-anchor="start" x="49" y="-379.9" font-family="Courier,monospace" font-size="9.00">1</text>
-<polygon fill="none" stroke="blue" points="60,-374 60,-390 72,-390 72,-374 60,-374"/>
-<text text-anchor="start" x="63" y="-379.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="blue" points="60,-366 60,-372 72,-372 72,-366 60,-366"/>
-</g>
-<!-- u_4 -->
-<g id="node2" class="node"><title>u_4</title>
-<polygon fill="none" stroke="blue" points="48,-302 48,-318 61,-318 61,-302 48,-302"/>
-<text text-anchor="start" x="51.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="blue" points="63,-302 63,-318 69,-318 69,-302 63,-302"/>
-<polygon fill="none" stroke="blue" points="71,-302 71,-318 93,-318 93,-302 71,-302"/>
-<text text-anchor="start" x="74" y="-307.9" font-family="Courier,monospace" font-size="9.00">220</text>
-<polygon fill="none" stroke="blue" points="71,-294 71,-300 93,-300 93,-294 71,-294"/>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M66,-366C66,-366 66,-330.551 66,-320.581"/>
-<polygon fill="black" stroke="black" points="65,-318 67,-318 67.0001,-320 65.0001,-320 65,-318"/>
-<polyline fill="none" stroke="black" points="66.0001,-320 66.0001,-320.5 "/>
-</g>
-<!-- u_6 -->
-<g id="node3" class="node"><title>u_6</title>
-<polygon fill="none" stroke="blue" points="64,-230 64,-246 77,-246 77,-230 64,-230"/>
-<text text-anchor="start" x="67.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
-<polygon fill="none" stroke="blue" points="79,-230 79,-246 85,-246 85,-230 79,-230"/>
-<polygon fill="none" stroke="blue" points="87,-230 87,-246 109,-246 109,-230 87,-230"/>
-<text text-anchor="start" x="90" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
-<polygon fill="none" stroke="blue" points="87,-222 87,-228 109,-228 109,-222 87,-222"/>
-</g>
-<!-- u_4&#45;&gt;u_6 -->
-<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_6:i_0</title>
-<path fill="none" stroke="black" d="M82,-294C82,-294 82,-258.551 82,-248.581"/>
-<polygon fill="black" stroke="black" points="81,-246 83,-246 83.0001,-248 81.0001,-248 81,-246"/>
-<polyline fill="none" stroke="black" points="82.0001,-248 82.0001,-248.5 "/>
-</g>
-<!-- u_7 -->
-<g id="node4" class="node"><title>u_7</title>
-<polygon fill="none" stroke="black" points="54,-158 54,-174 93,-174 93,-158 54,-158"/>
-<text text-anchor="start" x="57.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="95,-158 95,-174 101,-174 101,-158 95,-158"/>
-<polygon fill="none" stroke="black" points="103,-158 103,-174 115,-174 115,-158 103,-158"/>
-<text text-anchor="start" x="106" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="103,-150 103,-156 115,-156 115,-150 103,-150"/>
-</g>
-<!-- u_6&#45;&gt;u_7 -->
-<g id="edge6" class="edge"><title>u_6:o_0&#45;&gt;u_7:i_0</title>
-<path fill="none" stroke="black" d="M98,-222C98,-222 98,-186.551 98,-176.581"/>
-<polygon fill="black" stroke="black" points="97,-174 99,-174 99.0001,-176 97.0001,-176 97,-174"/>
-<polyline fill="none" stroke="black" points="98.0001,-176 98.0001,-176.5 "/>
-</g>
-<!-- u_9 -->
-<g id="node5" class="node"><title>u_9</title>
-<polygon fill="none" stroke="black" points="91,-86 91,-102 104,-102 104,-86 91,-86"/>
-<text text-anchor="start" x="94.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="106,-86 106,-102 112,-102 112,-86 106,-86"/>
-<polygon fill="none" stroke="black" points="114,-86 114,-102 136,-102 136,-86 114,-86"/>
-<text text-anchor="start" x="117" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="114,-78 114,-84 136,-84 136,-78 114,-78"/>
-</g>
-<!-- u_7&#45;&gt;u_9 -->
-<g id="edge8" class="edge"><title>u_7:o_0&#45;&gt;u_9:i_0</title>
-<path fill="none" stroke="black" d="M109,-150C109,-150 109,-114.551 109,-104.581"/>
-<polygon fill="black" stroke="black" points="108,-102 110,-102 110,-104 108,-104 108,-102"/>
-<polyline fill="none" stroke="black" points="109,-104 109,-104.5 "/>
-</g>
-<!-- u_10 -->
-<g id="node6" class="node"><title>u_10</title>
-<polygon fill="none" stroke="black" points="83,-10 83,-26 106,-26 106,-10 83,-10"/>
-<text text-anchor="start" x="86.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="108,-10 108,-26 120,-26 120,-10 108,-10"/>
-<text text-anchor="start" x="111" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="122,-10 122,-26 128,-26 128,-10 122,-10"/>
-</g>
-<!-- u_9&#45;&gt;u_10 -->
-<g id="edge10" class="edge"><title>u_9:o_0&#45;&gt;u_10:i_1</title>
-<path fill="none" stroke="black" d="M125,-78C125,-78 125,-38.8953 125,-28.5081"/>
-<polygon fill="black" stroke="black" points="124,-26 126,-26 126,-28 124,-28 124,-26"/>
-<polyline fill="none" stroke="black" points="125,-28 125,-28.5 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/04.dot b/dot/04.dot
new file mode 100644
--- /dev/null
+++ b/dot/04.dot
@@ -0,0 +1,22 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>LFSaw</TD><TD ID="u_2:K_0">1</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_5[shape="plaintext",color="yellow",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Rand</TD><TD ID="u_5:K_0">200</TD><TD ID="u_5:K_1">400</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_5:o_0"></TD></TR></TABLE>>];
+u_7[shape="plaintext",color="yellow",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Rand</TD><TD PORT="i_0" ID="u_7:i_0"></TD><TD ID="u_7:K_1">600</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_7:o_0"></TD></TR></TABLE>>];
+u_8[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_8:i_0"></TD><TD PORT="i_1" ID="u_8:i_1"></TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_8:o_0"></TD></TR></TABLE>>];
+u_11[shape="plaintext",color="yellow",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Rand</TD><TD ID="u_11:K_0">500</TD><TD ID="u_11:K_1">900</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_11:o_0"></TD></TR></TABLE>>];
+u_12[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>+</TD><TD PORT="i_0" ID="u_12:i_0"></TD><TD PORT="i_1" ID="u_12:i_1"></TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_12:o_0"></TD></TR></TABLE>>];
+u_13[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD PORT="i_0" ID="u_13:i_0"></TD><TD ID="u_13:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_13:o_0"></TD></TR></TABLE>>];
+u_15[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_15:i_0"></TD><TD ID="u_15:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_15:o_0"></TD></TR></TABLE>>];
+u_16[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_16:K_0">0</TD><TD PORT="i_1" ID="u_16:i_1"></TD></TR></TABLE>>];
+u_5:o_0 -> u_7:i_0;
+u_2:o_0 -> u_8:i_0;
+u_7:o_0 -> u_8:i_1;
+u_8:o_0 -> u_12:i_0;
+u_11:o_0 -> u_12:i_1;
+u_12:o_0 -> u_13:i_0;
+u_13:o_0 -> u_15:i_0;
+u_15:o_0 -> u_16:i_1;
+}
diff --git a/dot/04.svg b/dot/04.svg
deleted file mode 100644
--- a/dot/04.svg
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="254pt" height="476pt"
- viewBox="0.00 0.00 254.00 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-472 251,-472 251,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="blue" points="10,-374 10,-390 44,-390 44,-374 10,-374"/>
-<text text-anchor="start" x="13.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">LFSaw</text>
-<polygon fill="none" stroke="blue" points="46,-374 46,-390 58,-390 58,-374 46,-374"/>
-<text text-anchor="start" x="49" y="-379.9" font-family="Courier,monospace" font-size="9.00">1</text>
-<polygon fill="none" stroke="blue" points="60,-374 60,-390 72,-390 72,-374 60,-374"/>
-<text text-anchor="start" x="63" y="-379.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="blue" points="60,-366 60,-372 72,-372 72,-366 60,-366"/>
-</g>
-<!-- u_8 -->
-<g id="node4" class="node"><title>u_8</title>
-<polygon fill="none" stroke="blue" points="91,-302 91,-318 104,-318 104,-302 91,-302"/>
-<text text-anchor="start" x="94.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="blue" points="106,-302 106,-318 112,-318 112,-302 106,-302"/>
-<polygon fill="none" stroke="blue" points="114,-302 114,-318 120,-318 120,-302 114,-302"/>
-<polygon fill="none" stroke="blue" points="114,-294 114,-300 120,-300 120,-294 114,-294"/>
-</g>
-<!-- u_2&#45;&gt;u_8 -->
-<g id="edge4" class="edge"><title>u_2:o_0&#45;&gt;u_8:i_0</title>
-<path fill="none" stroke="black" d="M73,-369C73,-369 100.562,-329.953 107.453,-320.191"/>
-<polygon fill="black" stroke="black" points="108.183,-317.423 109.817,-318.577 108.664,-320.211 107.03,-319.057 108.183,-317.423"/>
-<polyline fill="none" stroke="black" points="107.847,-319.634 107.558,-320.042 "/>
-</g>
-<!-- u_5 -->
-<g id="node2" class="node"><title>u_5</title>
-<polygon fill="none" stroke="yellow" points="78,-446 78,-462 107,-462 107,-446 78,-446"/>
-<text text-anchor="start" x="81.5" y="-451.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
-<polygon fill="none" stroke="yellow" points="109,-446 109,-462 131,-462 131,-446 109,-446"/>
-<text text-anchor="start" x="112" y="-451.9" font-family="Courier,monospace" font-size="9.00">200</text>
-<polygon fill="none" stroke="yellow" points="133,-446 133,-462 155,-462 155,-446 133,-446"/>
-<text text-anchor="start" x="136" y="-451.9" font-family="Courier,monospace" font-size="9.00">400</text>
-<polygon fill="none" stroke="yellow" points="133,-438 133,-444 155,-444 155,-438 133,-438"/>
-</g>
-<!-- u_7 -->
-<g id="node3" class="node"><title>u_7</title>
-<polygon fill="none" stroke="yellow" points="110,-374 110,-390 139,-390 139,-374 110,-374"/>
-<text text-anchor="start" x="113.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
-<polygon fill="none" stroke="yellow" points="141,-374 141,-390 147,-390 147,-374 141,-374"/>
-<polygon fill="none" stroke="yellow" points="149,-374 149,-390 171,-390 171,-374 149,-374"/>
-<text text-anchor="start" x="152" y="-379.9" font-family="Courier,monospace" font-size="9.00">600</text>
-<polygon fill="none" stroke="yellow" points="149,-366 149,-372 171,-372 171,-366 149,-366"/>
-</g>
-<!-- u_5&#45;&gt;u_7 -->
-<g id="edge2" class="edge"><title>u_5:o_0&#45;&gt;u_7:i_0</title>
-<path fill="none" stroke="black" d="M144,-438C144,-438 144,-402.551 144,-392.581"/>
-<polygon fill="black" stroke="black" points="143,-390 145,-390 145,-392 143,-392 143,-390"/>
-<polyline fill="none" stroke="black" points="144,-392 144,-392.5 "/>
-</g>
-<!-- u_7&#45;&gt;u_8 -->
-<g id="edge6" class="edge"><title>u_7:o_0&#45;&gt;u_8:i_1</title>
-<path fill="none" stroke="black" d="M160,-366C160,-366 127.078,-329.25 118.848,-320.062"/>
-<polygon fill="black" stroke="black" points="116.255,-318.667 117.745,-317.333 119.079,-318.822 117.59,-320.157 116.255,-318.667"/>
-<polyline fill="none" stroke="black" points="118.335,-319.49 118.668,-319.862 "/>
-</g>
-<!-- u_12 -->
-<g id="node6" class="node"><title>u_12</title>
-<polygon fill="none" stroke="blue" points="149,-230 149,-246 162,-246 162,-230 149,-230"/>
-<text text-anchor="start" x="152.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
-<polygon fill="none" stroke="blue" points="164,-230 164,-246 170,-246 170,-230 164,-230"/>
-<polygon fill="none" stroke="blue" points="172,-230 172,-246 178,-246 178,-230 172,-230"/>
-<polygon fill="none" stroke="blue" points="172,-222 172,-228 178,-228 178,-222 172,-222"/>
-</g>
-<!-- u_8&#45;&gt;u_12 -->
-<g id="edge8" class="edge"><title>u_8:o_0&#45;&gt;u_12:i_0</title>
-<path fill="none" stroke="black" d="M117,-294C117,-294 155.281,-257.25 164.852,-248.062"/>
-<polygon fill="black" stroke="black" points="166.307,-245.279 167.693,-246.721 166.25,-248.106 164.865,-246.664 166.307,-245.279"/>
-<polyline fill="none" stroke="black" points="165.557,-247.385 165.197,-247.731 "/>
-</g>
-<!-- u_11 -->
-<g id="node5" class="node"><title>u_11</title>
-<polygon fill="none" stroke="yellow" points="160,-302 160,-318 189,-318 189,-302 160,-302"/>
-<text text-anchor="start" x="163.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
-<polygon fill="none" stroke="yellow" points="191,-302 191,-318 213,-318 213,-302 191,-302"/>
-<text text-anchor="start" x="194" y="-307.9" font-family="Courier,monospace" font-size="9.00">500</text>
-<polygon fill="none" stroke="yellow" points="215,-302 215,-318 237,-318 237,-302 215,-302"/>
-<text text-anchor="start" x="218" y="-307.9" font-family="Courier,monospace" font-size="9.00">900</text>
-<polygon fill="none" stroke="yellow" points="215,-294 215,-300 237,-300 237,-294 215,-294"/>
-</g>
-<!-- u_11&#45;&gt;u_12 -->
-<g id="edge10" class="edge"><title>u_11:o_0&#45;&gt;u_12:i_1</title>
-<path fill="none" stroke="black" d="M226,-294C226,-294 186.953,-257.25 177.191,-248.062"/>
-<polygon fill="black" stroke="black" points="174.315,-246.728 175.685,-245.272 177.142,-246.643 175.771,-248.099 174.315,-246.728"/>
-<polyline fill="none" stroke="black" points="176.456,-247.371 176.821,-247.713 "/>
-</g>
-<!-- u_13 -->
-<g id="node7" class="node"><title>u_13</title>
-<polygon fill="none" stroke="black" points="131,-158 131,-174 170,-174 170,-158 131,-158"/>
-<text text-anchor="start" x="134.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="172,-158 172,-174 178,-174 178,-158 172,-158"/>
-<polygon fill="none" stroke="black" points="180,-158 180,-174 192,-174 192,-158 180,-158"/>
-<text text-anchor="start" x="183" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="180,-150 180,-156 192,-156 192,-150 180,-150"/>
-</g>
-<!-- u_12&#45;&gt;u_13 -->
-<g id="edge12" class="edge"><title>u_12:o_0&#45;&gt;u_13:i_0</title>
-<path fill="none" stroke="black" d="M175,-222C175,-222 175,-186.551 175,-176.581"/>
-<polygon fill="black" stroke="black" points="174,-174 176,-174 176,-176 174,-176 174,-174"/>
-<polyline fill="none" stroke="black" points="175,-176 175,-176.5 "/>
-</g>
-<!-- u_15 -->
-<g id="node8" class="node"><title>u_15</title>
-<polygon fill="none" stroke="black" points="168,-86 168,-102 181,-102 181,-86 168,-86"/>
-<text text-anchor="start" x="171.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="183,-86 183,-102 189,-102 189,-86 183,-86"/>
-<polygon fill="none" stroke="black" points="191,-86 191,-102 213,-102 213,-86 191,-86"/>
-<text text-anchor="start" x="194" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="191,-78 191,-84 213,-84 213,-78 191,-78"/>
-</g>
-<!-- u_13&#45;&gt;u_15 -->
-<g id="edge14" class="edge"><title>u_13:o_0&#45;&gt;u_15:i_0</title>
-<path fill="none" stroke="black" d="M186,-150C186,-150 186,-114.551 186,-104.581"/>
-<polygon fill="black" stroke="black" points="185,-102 187,-102 187,-104 185,-104 185,-102"/>
-<polyline fill="none" stroke="black" points="186,-104 186,-104.5 "/>
-</g>
-<!-- u_16 -->
-<g id="node9" class="node"><title>u_16</title>
-<polygon fill="none" stroke="black" points="160,-10 160,-26 183,-26 183,-10 160,-10"/>
-<text text-anchor="start" x="163.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="185,-10 185,-26 197,-26 197,-10 185,-10"/>
-<text text-anchor="start" x="188" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="199,-10 199,-26 205,-26 205,-10 199,-10"/>
-</g>
-<!-- u_15&#45;&gt;u_16 -->
-<g id="edge16" class="edge"><title>u_15:o_0&#45;&gt;u_16:i_1</title>
-<path fill="none" stroke="black" d="M202,-78C202,-78 202,-38.8953 202,-28.5081"/>
-<polygon fill="black" stroke="black" points="201,-26 203,-26 203,-28 201,-28 201,-26"/>
-<polyline fill="none" stroke="black" points="202,-28 202,-28.5 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/05.dot b/dot/05.dot
new file mode 100644
--- /dev/null
+++ b/dot/05.dot
@@ -0,0 +1,12 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+k_1[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD PORT="o_0">freq:440</TD></TR></TABLE>>];
+u_2[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD PORT="i_0" ID="u_2:i_0"></TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_4:i_0"></TD><TD ID="u_4:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_4:o_0"></TD></TR></TABLE>>];
+u_5[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_5:K_0">0</TD><TD PORT="i_1" ID="u_5:i_1"></TD></TR></TABLE>>];
+k_1:o_0 -> u_2:i_0;
+u_2:o_0 -> u_4:i_0;
+u_4:o_0 -> u_5:i_1;
+}
diff --git a/dot/05.svg b/dot/05.svg
deleted file mode 100644
--- a/dot/05.svg
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="109pt" height="260pt"
- viewBox="0.00 0.00 109.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-256 106,-256 106,5 -4,5"/>
-<!-- k_1 -->
-<g id="node1" class="node"><title>k_1</title>
-<polygon fill="none" stroke="blue" points="29,-226 29,-242 79,-242 79,-226 29,-226"/>
-<text text-anchor="start" x="32.5" y="-231.9" font-family="Courier,monospace" font-size="9.00">freq:440</text>
-</g>
-<!-- u_2 -->
-<g id="node2" class="node"><title>u_2</title>
-<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
-<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="51,-158 51,-174 57,-174 57,-158 51,-158"/>
-<polygon fill="none" stroke="black" points="59,-158 59,-174 71,-174 71,-158 59,-158"/>
-<text text-anchor="start" x="62" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="59,-150 59,-156 71,-156 71,-150 59,-150"/>
-</g>
-<!-- k_1&#45;&gt;u_2 -->
-<g id="edge2" class="edge"><title>k_1:o_0&#45;&gt;u_2:i_0</title>
-<path fill="none" stroke="black" d="M54,-225.657C54,-212.004 54,-185.538 54,-176.844"/>
-<polygon fill="black" stroke="black" points="53,-174 55,-174 55.0001,-176 53.0001,-176 53,-174"/>
-<polyline fill="none" stroke="black" points="54.0001,-176 54.0001,-176.5 "/>
-</g>
-<!-- u_4 -->
-<g id="node3" class="node"><title>u_4</title>
-<polygon fill="none" stroke="black" points="47,-86 47,-102 60,-102 60,-86 47,-86"/>
-<text text-anchor="start" x="50.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="62,-86 62,-102 68,-102 68,-86 62,-86"/>
-<polygon fill="none" stroke="black" points="70,-86 70,-102 92,-102 92,-86 70,-86"/>
-<text text-anchor="start" x="73" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="70,-78 70,-84 92,-84 92,-78 70,-78"/>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge4" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M65,-150C65,-150 65,-114.551 65,-104.581"/>
-<polygon fill="black" stroke="black" points="64,-102 66,-102 66.0001,-104 64.0001,-104 64,-102"/>
-<polyline fill="none" stroke="black" points="65.0001,-104 65.0001,-104.5 "/>
-</g>
-<!-- u_5 -->
-<g id="node4" class="node"><title>u_5</title>
-<polygon fill="none" stroke="black" points="39,-10 39,-26 62,-26 62,-10 39,-10"/>
-<text text-anchor="start" x="42.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="64,-10 64,-26 76,-26 76,-10 64,-10"/>
-<text text-anchor="start" x="67" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="78,-10 78,-26 84,-26 84,-10 78,-10"/>
-</g>
-<!-- u_4&#45;&gt;u_5 -->
-<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
-<path fill="none" stroke="black" d="M81,-78C81,-78 81,-38.8953 81,-28.5081"/>
-<polygon fill="black" stroke="black" points="80,-26 82,-26 82.0001,-28 80.0001,-28 80,-26"/>
-<polyline fill="none" stroke="black" points="81.0001,-28 81.0001,-28.5 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/06.dot b/dot/06.dot
new file mode 100644
--- /dev/null
+++ b/dot/06.dot
@@ -0,0 +1,10 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_2:K_0">freq:440</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_4:i_0"></TD><TD ID="u_4:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_4:o_0"></TD></TR></TABLE>>];
+u_5[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_5:K_0">0</TD><TD PORT="i_1" ID="u_5:i_1"></TD></TR></TABLE>>];
+u_2:o_0 -> u_4:i_0;
+u_4:o_0 -> u_5:i_1;
+}
diff --git a/dot/06.svg b/dot/06.svg
deleted file mode 100644
--- a/dot/06.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="152pt" height="188pt"
- viewBox="0.00 0.00 152.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-184 149,-184 149,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
-<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="51,-158 51,-174 100,-174 100,-158 51,-158"/>
-<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">freq:440</text>
-<polygon fill="none" stroke="black" points="102,-158 102,-174 114,-174 114,-158 102,-158"/>
-<text text-anchor="start" x="105" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="102,-150 102,-156 114,-156 114,-150 102,-150"/>
-</g>
-<!-- u_4 -->
-<g id="node2" class="node"><title>u_4</title>
-<polygon fill="none" stroke="black" points="90,-86 90,-102 103,-102 103,-86 90,-86"/>
-<text text-anchor="start" x="93.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="105,-86 105,-102 111,-102 111,-86 105,-86"/>
-<polygon fill="none" stroke="black" points="113,-86 113,-102 135,-102 135,-86 113,-86"/>
-<text text-anchor="start" x="116" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="113,-78 113,-84 135,-84 135,-78 113,-78"/>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M108,-150C108,-150 108,-114.551 108,-104.581"/>
-<polygon fill="black" stroke="black" points="107,-102 109,-102 109,-104 107,-104 107,-102"/>
-<polyline fill="none" stroke="black" points="108,-104 108,-104.5 "/>
-</g>
-<!-- u_5 -->
-<g id="node3" class="node"><title>u_5</title>
-<polygon fill="none" stroke="black" points="82,-10 82,-26 105,-26 105,-10 82,-10"/>
-<text text-anchor="start" x="85.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="107,-10 107,-26 119,-26 119,-10 107,-10"/>
-<text text-anchor="start" x="110" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="121,-10 121,-26 127,-26 127,-10 121,-10"/>
-</g>
-<!-- u_4&#45;&gt;u_5 -->
-<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
-<path fill="none" stroke="black" d="M124,-78C124,-78 124,-38.8953 124,-28.5081"/>
-<polygon fill="black" stroke="black" points="123,-26 125,-26 125,-28 123,-28 123,-26"/>
-<polyline fill="none" stroke="black" points="124,-28 124,-28.5 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/07.dot b/dot/07.dot
new file mode 100644
--- /dev/null
+++ b/dot/07.dot
@@ -0,0 +1,10 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_2:K_0">440</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_4:i_0"></TD><TD ID="u_4:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_4:o_0"></TD></TR></TABLE>>];
+u_5[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_5:K_0">0</TD><TD PORT="i_1" ID="u_5:i_1"></TD></TR></TABLE>>];
+u_2:o_0 -> u_4:i_0;
+u_4:o_0 -> u_5:i_1;
+}
diff --git a/dot/07.svg b/dot/07.svg
deleted file mode 100644
--- a/dot/07.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="125pt" height="188pt"
- viewBox="0.00 0.00 125.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-184 122,-184 122,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
-<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
-<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
-<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
-<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
-</g>
-<!-- u_4 -->
-<g id="node2" class="node"><title>u_4</title>
-<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
-<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
-<polygon fill="none" stroke="black" points="86,-86 86,-102 108,-102 108,-86 86,-86"/>
-<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="86,-78 86,-84 108,-84 108,-78 86,-78"/>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
-<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
-<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
-</g>
-<!-- u_5 -->
-<g id="node3" class="node"><title>u_5</title>
-<polygon fill="none" stroke="black" points="55,-10 55,-26 78,-26 78,-10 55,-10"/>
-<text text-anchor="start" x="58.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="80,-10 80,-26 92,-26 92,-10 80,-10"/>
-<text text-anchor="start" x="83" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="94,-10 94,-26 100,-26 100,-10 94,-10"/>
-</g>
-<!-- u_4&#45;&gt;u_5 -->
-<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
-<path fill="none" stroke="black" d="M97,-78C97,-78 97,-38.8953 97,-28.5081"/>
-<polygon fill="black" stroke="black" points="96,-26 98,-26 98.0001,-28 96.0001,-28 96,-26"/>
-<polyline fill="none" stroke="black" points="97.0001,-28 97.0001,-28.5 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/08.dot b/dot/08.dot
new file mode 100644
--- /dev/null
+++ b/dot/08.dot
@@ -0,0 +1,14 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_2:K_0">440</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_4:i_0"></TD><TD ID="u_4:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_4:o_0"></TD></TR></TABLE>>];
+u_6[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_6:K_0">220</TD><TD ID="u_6:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_6:o_0"></TD></TR></TABLE>>];
+u_7[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_7:i_0"></TD><TD ID="u_7:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_7:o_0"></TD></TR></TABLE>>];
+u_8[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_8:K_0">0</TD><TD PORT="i_1" ID="u_8:i_1"></TD><TD PORT="i_2" ID="u_8:i_2"></TD></TR></TABLE>>];
+u_2:o_0 -> u_4:i_0;
+u_6:o_0 -> u_7:i_0;
+u_4:o_0 -> u_8:i_1;
+u_7:o_0 -> u_8:i_2;
+}
diff --git a/dot/08.svg b/dot/08.svg
deleted file mode 100644
--- a/dot/08.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="231pt" height="188pt"
- viewBox="0.00 0.00 231.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-184 228,-184 228,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
-<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
-<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
-<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
-<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
-</g>
-<!-- u_4 -->
-<g id="node2" class="node"><title>u_4</title>
-<polygon fill="none" stroke="black" points="71,-86 71,-102 84,-102 84,-86 71,-86"/>
-<text text-anchor="start" x="74.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="86,-86 86,-102 92,-102 92,-86 86,-86"/>
-<polygon fill="none" stroke="black" points="94,-86 94,-102 116,-102 116,-86 94,-86"/>
-<text text-anchor="start" x="97" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="94,-78 94,-84 116,-84 116,-78 94,-78"/>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M81,-150C81,-150 86.9082,-114.551 88.5699,-104.581"/>
-<polygon fill="black" stroke="black" points="88.0136,-101.836 89.9864,-102.164 89.6575,-104.137 87.6847,-103.808 88.0136,-101.836"/>
-<polyline fill="none" stroke="black" points="88.6711,-103.973 88.5889,-104.466 "/>
-</g>
-<!-- u_8 -->
-<g id="node5" class="node"><title>u_8</title>
-<polygon fill="none" stroke="black" points="108,-10 108,-26 131,-26 131,-10 108,-10"/>
-<text text-anchor="start" x="111.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="133,-10 133,-26 145,-26 145,-10 133,-10"/>
-<text text-anchor="start" x="136" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="147,-10 147,-26 153,-26 153,-10 147,-10"/>
-<polygon fill="none" stroke="black" points="155,-10 155,-26 161,-26 161,-10 155,-10"/>
-</g>
-<!-- u_4&#45;&gt;u_8 -->
-<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_8:i_1</title>
-<path fill="none" stroke="black" d="M117,-81C117,-81 142.266,-38.8906 148.582,-28.3633"/>
-<polygon fill="black" stroke="black" points="149.143,-25.4855 150.857,-26.5145 149.828,-28.2295 148.113,-27.2005 149.143,-25.4855"/>
-<polyline fill="none" stroke="black" points="148.971,-27.715 148.714,-28.1437 "/>
-</g>
-<!-- u_6 -->
-<g id="node3" class="node"><title>u_6</title>
-<polygon fill="none" stroke="black" points="124,-158 124,-174 163,-174 163,-158 124,-158"/>
-<text text-anchor="start" x="127.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="165,-158 165,-174 187,-174 187,-158 165,-158"/>
-<text text-anchor="start" x="168" y="-163.9" font-family="Courier,monospace" font-size="9.00">220</text>
-<polygon fill="none" stroke="black" points="189,-158 189,-174 201,-174 201,-158 189,-158"/>
-<text text-anchor="start" x="192" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="189,-150 189,-156 201,-156 201,-150 189,-150"/>
-</g>
-<!-- u_7 -->
-<g id="node4" class="node"><title>u_7</title>
-<polygon fill="none" stroke="black" points="169,-86 169,-102 182,-102 182,-86 169,-86"/>
-<text text-anchor="start" x="172.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="184,-86 184,-102 190,-102 190,-86 184,-86"/>
-<polygon fill="none" stroke="black" points="192,-86 192,-102 214,-102 214,-86 192,-86"/>
-<text text-anchor="start" x="195" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="192,-78 192,-84 214,-84 214,-78 192,-78"/>
-</g>
-<!-- u_6&#45;&gt;u_7 -->
-<g id="edge4" class="edge"><title>u_6:o_0&#45;&gt;u_7:i_0</title>
-<path fill="none" stroke="black" d="M195,-150C195,-150 189.092,-114.551 187.43,-104.581"/>
-<polygon fill="black" stroke="black" points="186.014,-102.164 187.986,-101.836 188.315,-103.808 186.342,-104.137 186.014,-102.164"/>
-<polyline fill="none" stroke="black" points="187.329,-103.973 187.411,-104.466 "/>
-</g>
-<!-- u_7&#45;&gt;u_8 -->
-<g id="edge8" class="edge"><title>u_7:o_0&#45;&gt;u_8:i_2</title>
-<path fill="none" stroke="black" d="M203,-78C203,-78 168.547,-38.1875 159.934,-28.2344"/>
-<polygon fill="black" stroke="black" points="157.244,-26.6544 158.756,-25.3456 160.065,-26.858 158.553,-28.1667 157.244,-26.6544"/>
-<polyline fill="none" stroke="black" points="159.309,-27.5124 159.636,-27.8904 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/09.dot b/dot/09.dot
new file mode 100644
--- /dev/null
+++ b/dot/09.dot
@@ -0,0 +1,30 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_2:K_0">0.25</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_4:i_0"></TD><TD ID="u_4:K_1">10</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_4:o_0"></TD></TR></TABLE>>];
+u_6[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_6:K_0">0.35</TD><TD ID="u_6:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_6:o_0"></TD></TR></TABLE>>];
+u_8[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_8:i_0"></TD><TD ID="u_8:K_1">15</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_8:o_0"></TD></TR></TABLE>>];
+u_9[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_9:K_0">0</TD><TD PORT="i_1" ID="u_9:i_1"></TD><TD PORT="i_2" ID="u_9:i_2"></TD></TR></TABLE>>];
+u_11[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>In</TD><TD ID="u_11:K_0">0</TD></TR><TR><TD PORT="o_0" ID="u_11:o_0"></TD><TD PORT="o_1" ID="u_11:o_1"></TD></TR></TABLE>>];
+u_13[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>+</TD><TD ID="u_13:K_0">440</TD><TD PORT="i_1" ID="u_13:i_1"></TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_13:o_0"></TD></TR></TABLE>>];
+u_14[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD PORT="i_0" ID="u_14:i_0"></TD><TD ID="u_14:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_14:o_0"></TD></TR></TABLE>>];
+u_16[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_16:i_0"></TD><TD ID="u_16:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_16:o_0"></TD></TR></TABLE>>];
+u_19[shape="plaintext",color="blue",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>+</TD><TD ID="u_19:K_0">220</TD><TD PORT="i_1" ID="u_19:i_1"></TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_19:o_0"></TD></TR></TABLE>>];
+u_20[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD PORT="i_0" ID="u_20:i_0"></TD><TD ID="u_20:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_20:o_0"></TD></TR></TABLE>>];
+u_21[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_21:i_0"></TD><TD ID="u_21:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_21:o_0"></TD></TR></TABLE>>];
+u_22[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_22:K_0">0</TD><TD PORT="i_1" ID="u_22:i_1"></TD><TD PORT="i_2" ID="u_22:i_2"></TD></TR></TABLE>>];
+u_2:o_0 -> u_4:i_0;
+u_6:o_0 -> u_8:i_0;
+u_4:o_0 -> u_9:i_1;
+u_8:o_0 -> u_9:i_2;
+u_11:o_0 -> u_13:i_1;
+u_13:o_0 -> u_14:i_0;
+u_14:o_0 -> u_16:i_0;
+u_11:o_1 -> u_19:i_1;
+u_19:o_0 -> u_20:i_0;
+u_20:o_0 -> u_21:i_0;
+u_16:o_0 -> u_22:i_1;
+u_21:o_0 -> u_22:i_2;
+}
diff --git a/dot/09.svg b/dot/09.svg
deleted file mode 100644
--- a/dot/09.svg
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="443pt" height="332pt"
- viewBox="0.00 0.00 443.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-328 440,-328 440,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="blue" points="10,-302 10,-318 49,-318 49,-302 10,-302"/>
-<text text-anchor="start" x="13.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="blue" points="51,-302 51,-318 79,-318 79,-302 51,-302"/>
-<text text-anchor="start" x="54" y="-307.9" font-family="Courier,monospace" font-size="9.00">0.25</text>
-<polygon fill="none" stroke="blue" points="81,-302 81,-318 93,-318 93,-302 81,-302"/>
-<text text-anchor="start" x="84" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="blue" points="81,-294 81,-300 93,-300 93,-294 81,-294"/>
-</g>
-<!-- u_4 -->
-<g id="node2" class="node"><title>u_4</title>
-<polygon fill="none" stroke="blue" points="79,-230 79,-246 92,-246 92,-230 79,-230"/>
-<text text-anchor="start" x="82.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="blue" points="94,-230 94,-246 100,-246 100,-230 94,-230"/>
-<polygon fill="none" stroke="blue" points="102,-230 102,-246 119,-246 119,-230 102,-230"/>
-<text text-anchor="start" x="105" y="-235.9" font-family="Courier,monospace" font-size="9.00">10</text>
-<polygon fill="none" stroke="blue" points="102,-222 102,-228 119,-228 119,-222 102,-222"/>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M87,-294C87,-294 94.3853,-258.551 96.4624,-248.581"/>
-<polygon fill="black" stroke="black" points="96.021,-245.796 97.979,-246.204 97.571,-248.162 95.613,-247.754 96.021,-245.796"/>
-<polyline fill="none" stroke="black" points="96.592,-247.958 96.49,-248.447 "/>
-</g>
-<!-- u_9 -->
-<g id="node5" class="node"><title>u_9</title>
-<polygon fill="none" stroke="blue" points="102,-154 102,-170 125,-170 125,-154 102,-154"/>
-<text text-anchor="start" x="105.5" y="-159.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="blue" points="127,-154 127,-170 139,-170 139,-154 127,-154"/>
-<text text-anchor="start" x="130" y="-159.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="blue" points="141,-154 141,-170 147,-170 147,-154 141,-154"/>
-<polygon fill="none" stroke="blue" points="149,-154 149,-170 155,-170 155,-154 149,-154"/>
-</g>
-<!-- u_4&#45;&gt;u_9 -->
-<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_9:i_1</title>
-<path fill="none" stroke="black" d="M111,-222C111,-222 136.266,-182.188 142.582,-172.234"/>
-<polygon fill="black" stroke="black" points="143.156,-169.464 144.844,-170.536 143.773,-172.225 142.084,-171.153 143.156,-169.464"/>
-<polyline fill="none" stroke="black" points="142.928,-171.689 142.66,-172.111 "/>
-</g>
-<!-- u_6 -->
-<g id="node3" class="node"><title>u_6</title>
-<polygon fill="none" stroke="blue" points="130,-302 130,-318 169,-318 169,-302 130,-302"/>
-<text text-anchor="start" x="133.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="blue" points="171,-302 171,-318 199,-318 199,-302 171,-302"/>
-<text text-anchor="start" x="174" y="-307.9" font-family="Courier,monospace" font-size="9.00">0.35</text>
-<polygon fill="none" stroke="blue" points="201,-302 201,-318 213,-318 213,-302 201,-302"/>
-<text text-anchor="start" x="204" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="blue" points="201,-294 201,-300 213,-300 213,-294 201,-294"/>
-</g>
-<!-- u_8 -->
-<g id="node4" class="node"><title>u_8</title>
-<polygon fill="none" stroke="blue" points="178,-230 178,-246 191,-246 191,-230 178,-230"/>
-<text text-anchor="start" x="181.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="blue" points="193,-230 193,-246 199,-246 199,-230 193,-230"/>
-<polygon fill="none" stroke="blue" points="201,-230 201,-246 218,-246 218,-230 201,-230"/>
-<text text-anchor="start" x="204" y="-235.9" font-family="Courier,monospace" font-size="9.00">15</text>
-<polygon fill="none" stroke="blue" points="201,-222 201,-228 218,-228 218,-222 201,-222"/>
-</g>
-<!-- u_6&#45;&gt;u_8 -->
-<g id="edge4" class="edge"><title>u_6:o_0&#45;&gt;u_8:i_0</title>
-<path fill="none" stroke="black" d="M207,-294C207,-294 198.876,-258.551 196.591,-248.581"/>
-<polygon fill="black" stroke="black" points="195.025,-246.223 196.975,-245.777 197.422,-247.726 195.472,-248.173 195.025,-246.223"/>
-<polyline fill="none" stroke="black" points="196.447,-247.949 196.559,-248.437 "/>
-</g>
-<!-- u_8&#45;&gt;u_9 -->
-<g id="edge8" class="edge"><title>u_8:o_0&#45;&gt;u_9:i_2</title>
-<path fill="none" stroke="black" d="M210,-222C210,-222 163.994,-180.753 153.93,-171.73"/>
-<polygon fill="black" stroke="black" points="151.332,-170.745 152.668,-169.255 154.157,-170.591 152.822,-172.08 151.332,-170.745"/>
-<polyline fill="none" stroke="black" points="153.489,-171.335 153.861,-171.669 "/>
-</g>
-<!-- u_11 -->
-<g id="node6" class="node"><title>u_11</title>
-<polygon fill="none" stroke="blue" points="323,-302 323,-318 341,-318 341,-302 323,-302"/>
-<text text-anchor="start" x="326.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">In</text>
-<polygon fill="none" stroke="blue" points="343,-302 343,-318 355,-318 355,-302 343,-302"/>
-<text text-anchor="start" x="346" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="blue" points="323,-294 323,-300 341,-300 341,-294 323,-294"/>
-<polygon fill="none" stroke="blue" points="343,-294 343,-300 355,-300 355,-294 343,-294"/>
-</g>
-<!-- u_13 -->
-<g id="node7" class="node"><title>u_13</title>
-<polygon fill="none" stroke="blue" points="256,-230 256,-246 269,-246 269,-230 256,-230"/>
-<text text-anchor="start" x="259.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
-<polygon fill="none" stroke="blue" points="271,-230 271,-246 293,-246 293,-230 271,-230"/>
-<text text-anchor="start" x="274" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
-<polygon fill="none" stroke="blue" points="295,-230 295,-246 301,-246 301,-230 295,-230"/>
-<polygon fill="none" stroke="blue" points="295,-222 295,-228 301,-228 301,-222 295,-222"/>
-</g>
-<!-- u_11&#45;&gt;u_13 -->
-<g id="edge10" class="edge"><title>u_11:o_0&#45;&gt;u_13:i_1</title>
-<path fill="none" stroke="black" d="M322,-297C322,-297 303.952,-258.647 299.158,-248.46"/>
-<polygon fill="black" stroke="black" points="297.095,-246.426 298.905,-245.574 299.756,-247.384 297.947,-248.235 297.095,-246.426"/>
-<polyline fill="none" stroke="black" points="298.852,-247.81 299.065,-248.262 "/>
-</g>
-<!-- u_19 -->
-<g id="node10" class="node"><title>u_19</title>
-<polygon fill="none" stroke="blue" points="342,-230 342,-246 355,-246 355,-230 342,-230"/>
-<text text-anchor="start" x="345.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
-<polygon fill="none" stroke="blue" points="357,-230 357,-246 379,-246 379,-230 357,-230"/>
-<text text-anchor="start" x="360" y="-235.9" font-family="Courier,monospace" font-size="9.00">220</text>
-<polygon fill="none" stroke="blue" points="381,-230 381,-246 387,-246 387,-230 381,-230"/>
-<polygon fill="none" stroke="blue" points="381,-222 381,-228 387,-228 387,-222 381,-222"/>
-</g>
-<!-- u_11&#45;&gt;u_19 -->
-<g id="edge16" class="edge"><title>u_11:o_1&#45;&gt;u_19:i_1</title>
-<path fill="none" stroke="black" d="M349,-294C349,-294 375.797,-257.25 382.496,-248.062"/>
-<polygon fill="black" stroke="black" points="383.192,-245.411 384.808,-246.589 383.63,-248.205 382.014,-247.027 383.192,-245.411"/>
-<polyline fill="none" stroke="black" points="382.822,-247.616 382.527,-248.02 "/>
-</g>
-<!-- u_14 -->
-<g id="node8" class="node"><title>u_14</title>
-<polygon fill="none" stroke="black" points="250,-158 250,-174 289,-174 289,-158 250,-158"/>
-<text text-anchor="start" x="253.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="291,-158 291,-174 297,-174 297,-158 291,-158"/>
-<polygon fill="none" stroke="black" points="299,-158 299,-174 311,-174 311,-158 299,-158"/>
-<text text-anchor="start" x="302" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="299,-150 299,-156 311,-156 311,-150 299,-150"/>
-</g>
-<!-- u_13&#45;&gt;u_14 -->
-<g id="edge12" class="edge"><title>u_13:o_0&#45;&gt;u_14:i_0</title>
-<path fill="none" stroke="black" d="M298,-222C298,-222 295.046,-186.551 294.215,-176.581"/>
-<polygon fill="black" stroke="black" points="293.003,-174.083 294.997,-173.917 295.163,-175.91 293.17,-176.076 293.003,-174.083"/>
-<polyline fill="none" stroke="black" points="294.166,-175.993 294.208,-176.491 "/>
-</g>
-<!-- u_16 -->
-<g id="node9" class="node"><title>u_16</title>
-<polygon fill="none" stroke="black" points="295,-86 295,-102 308,-102 308,-86 295,-86"/>
-<text text-anchor="start" x="298.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="310,-86 310,-102 316,-102 316,-86 310,-86"/>
-<polygon fill="none" stroke="black" points="318,-86 318,-102 340,-102 340,-86 318,-86"/>
-<text text-anchor="start" x="321" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="318,-78 318,-84 340,-84 340,-78 318,-78"/>
-</g>
-<!-- u_14&#45;&gt;u_16 -->
-<g id="edge14" class="edge"><title>u_14:o_0&#45;&gt;u_16:i_0</title>
-<path fill="none" stroke="black" d="M305,-150C305,-150 310.908,-114.551 312.57,-104.581"/>
-<polygon fill="black" stroke="black" points="312.014,-101.836 313.986,-102.164 313.658,-104.137 311.685,-103.808 312.014,-101.836"/>
-<polyline fill="none" stroke="black" points="312.671,-103.973 312.589,-104.466 "/>
-</g>
-<!-- u_22 -->
-<g id="node13" class="node"><title>u_22</title>
-<polygon fill="none" stroke="black" points="326,-10 326,-26 349,-26 349,-10 326,-10"/>
-<text text-anchor="start" x="329.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="351,-10 351,-26 363,-26 363,-10 351,-10"/>
-<text text-anchor="start" x="354" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="365,-10 365,-26 371,-26 371,-10 365,-10"/>
-<polygon fill="none" stroke="black" points="373,-10 373,-26 379,-26 379,-10 373,-10"/>
-</g>
-<!-- u_16&#45;&gt;u_22 -->
-<g id="edge22" class="edge"><title>u_16:o_0&#45;&gt;u_22:i_1</title>
-<path fill="none" stroke="black" d="M341,-81C341,-81 361.672,-38.8906 366.84,-28.3633"/>
-<polygon fill="black" stroke="black" points="367.102,-25.5593 368.898,-26.4407 368.016,-28.236 366.221,-27.3546 367.102,-25.5593"/>
-<polyline fill="none" stroke="black" points="367.119,-27.7953 366.898,-28.2442 "/>
-</g>
-<!-- u_20 -->
-<g id="node11" class="node"><title>u_20</title>
-<polygon fill="none" stroke="black" points="348,-158 348,-174 387,-174 387,-158 348,-158"/>
-<text text-anchor="start" x="351.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="389,-158 389,-174 395,-174 395,-158 389,-158"/>
-<polygon fill="none" stroke="black" points="397,-158 397,-174 409,-174 409,-158 397,-158"/>
-<text text-anchor="start" x="400" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="397,-150 397,-156 409,-156 409,-150 397,-150"/>
-</g>
-<!-- u_19&#45;&gt;u_20 -->
-<g id="edge18" class="edge"><title>u_19:o_0&#45;&gt;u_20:i_0</title>
-<path fill="none" stroke="black" d="M384,-222C384,-222 389.908,-186.551 391.57,-176.581"/>
-<polygon fill="black" stroke="black" points="391.014,-173.836 392.986,-174.164 392.658,-176.137 390.685,-175.808 391.014,-173.836"/>
-<polyline fill="none" stroke="black" points="391.671,-175.973 391.589,-176.466 "/>
-</g>
-<!-- u_21 -->
-<g id="node12" class="node"><title>u_21</title>
-<polygon fill="none" stroke="black" points="381,-86 381,-102 394,-102 394,-86 381,-86"/>
-<text text-anchor="start" x="384.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="396,-86 396,-102 402,-102 402,-86 396,-86"/>
-<polygon fill="none" stroke="black" points="404,-86 404,-102 426,-102 426,-86 404,-86"/>
-<text text-anchor="start" x="407" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="404,-78 404,-84 426,-84 426,-78 404,-78"/>
-</g>
-<!-- u_20&#45;&gt;u_21 -->
-<g id="edge20" class="edge"><title>u_20:o_0&#45;&gt;u_21:i_0</title>
-<path fill="none" stroke="black" d="M403,-150C403,-150 400.046,-114.551 399.215,-104.581"/>
-<polygon fill="black" stroke="black" points="398.003,-102.083 399.997,-101.917 400.163,-103.91 398.17,-104.076 398.003,-102.083"/>
-<polyline fill="none" stroke="black" points="399.166,-103.993 399.208,-104.491 "/>
-</g>
-<!-- u_21&#45;&gt;u_22 -->
-<g id="edge24" class="edge"><title>u_21:o_0&#45;&gt;u_22:i_2</title>
-<path fill="none" stroke="black" d="M415,-78C415,-78 385.141,-38.1875 377.676,-28.2344"/>
-<polygon fill="black" stroke="black" points="375.2,-26.6 376.8,-25.4 378,-27 376.4,-28.2 375.2,-26.6"/>
-<polyline fill="none" stroke="black" points="377.2,-27.6 377.5,-28 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/10.dot b/dot/10.dot
new file mode 100644
--- /dev/null
+++ b/dot/10.dot
@@ -0,0 +1,13 @@
+digraph Anonymous {
+graph [splines=false];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_2:K_0">440</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>*</TD><TD PORT="i_0" ID="u_4:i_0"></TD><TD ID="u_4:K_1">0.1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_4:o_0"></TD></TR></TABLE>>];
+u_6[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Pan2</TD><TD PORT="i_0" ID="u_6:i_0"></TD><TD ID="u_6:K_1">0</TD><TD ID="u_6:K_2">1</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_6:o_0"></TD><TD PORT="o_1" ID="u_6:o_1"></TD></TR></TABLE>>];
+u_9[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_9:K_0">0</TD><TD PORT="i_1" ID="u_9:i_1"></TD><TD PORT="i_2" ID="u_9:i_2"></TD></TR></TABLE>>];
+u_2:o_0 -> u_4:i_0;
+u_4:o_0 -> u_6:i_0;
+u_6:o_0 -> u_9:i_1;
+u_6:o_1 -> u_9:i_2;
+}
diff --git a/dot/10.svg b/dot/10.svg
deleted file mode 100644
--- a/dot/10.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="145pt" height="260pt"
- viewBox="0.00 0.00 145.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-256 142,-256 142,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="black" points="10,-230 10,-246 49,-246 49,-230 10,-230"/>
-<text text-anchor="start" x="13.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="51,-230 51,-246 73,-246 73,-230 51,-230"/>
-<text text-anchor="start" x="54" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
-<polygon fill="none" stroke="black" points="75,-230 75,-246 87,-246 87,-230 75,-230"/>
-<text text-anchor="start" x="78" y="-235.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="75,-222 75,-228 87,-228 87,-222 75,-222"/>
-</g>
-<!-- u_4 -->
-<g id="node2" class="node"><title>u_4</title>
-<polygon fill="none" stroke="black" points="63,-158 63,-174 76,-174 76,-158 63,-158"/>
-<text text-anchor="start" x="66.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">*</text>
-<polygon fill="none" stroke="black" points="78,-158 78,-174 84,-174 84,-158 78,-158"/>
-<polygon fill="none" stroke="black" points="86,-158 86,-174 108,-174 108,-158 86,-158"/>
-<text text-anchor="start" x="89" y="-163.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
-<polygon fill="none" stroke="black" points="86,-150 86,-156 108,-156 108,-150 86,-150"/>
-</g>
-<!-- u_2&#45;&gt;u_4 -->
-<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
-<path fill="none" stroke="black" d="M81,-222C81,-222 81,-186.551 81,-176.581"/>
-<polygon fill="black" stroke="black" points="80,-174 82,-174 82.0001,-176 80.0001,-176 80,-174"/>
-<polyline fill="none" stroke="black" points="81.0001,-176 81.0001,-176.5 "/>
-</g>
-<!-- u_6 -->
-<g id="node3" class="node"><title>u_6</title>
-<polygon fill="none" stroke="black" points="63,-86 63,-102 92,-102 92,-86 63,-86"/>
-<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">Pan2</text>
-<polygon fill="none" stroke="black" points="94,-86 94,-102 100,-102 100,-86 94,-86"/>
-<polygon fill="none" stroke="black" points="102,-86 102,-102 114,-102 114,-86 102,-86"/>
-<text text-anchor="start" x="105" y="-91.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="116,-86 116,-102 128,-102 128,-86 116,-86"/>
-<text text-anchor="start" x="119" y="-91.9" font-family="Courier,monospace" font-size="9.00">1</text>
-<polygon fill="none" stroke="black" points="102,-78 102,-84 114,-84 114,-78 102,-78"/>
-<polygon fill="none" stroke="black" points="116,-78 116,-84 128,-84 128,-78 116,-78"/>
-</g>
-<!-- u_4&#45;&gt;u_6 -->
-<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_6:i_0</title>
-<path fill="none" stroke="black" d="M97,-150C97,-150 97,-114.551 97,-104.581"/>
-<polygon fill="black" stroke="black" points="96,-102 98,-102 98.0001,-104 96.0001,-104 96,-102"/>
-<polyline fill="none" stroke="black" points="97.0001,-104 97.0001,-104.5 "/>
-</g>
-<!-- u_9 -->
-<g id="node4" class="node"><title>u_9</title>
-<polygon fill="none" stroke="black" points="69,-10 69,-26 92,-26 92,-10 69,-10"/>
-<text text-anchor="start" x="72.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="94,-10 94,-26 106,-26 106,-10 94,-10"/>
-<text text-anchor="start" x="97" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="108,-10 108,-26 114,-26 114,-10 108,-10"/>
-<polygon fill="none" stroke="black" points="116,-10 116,-26 122,-26 122,-10 116,-10"/>
-</g>
-<!-- u_6&#45;&gt;u_9 -->
-<g id="edge6" class="edge"><title>u_6:o_0&#45;&gt;u_9:i_1</title>
-<path fill="none" stroke="black" d="M108,-78C108,-78 110.256,-38.8953 110.855,-28.5081"/>
-<polygon fill="black" stroke="black" points="110.002,-25.9424 111.998,-26.0576 111.883,-28.0543 109.886,-27.939 110.002,-25.9424"/>
-<polyline fill="none" stroke="black" points="110.885,-27.9967 110.856,-28.4959 "/>
-</g>
-<!-- u_6&#45;&gt;u_9 -->
-<g id="edge8" class="edge"><title>u_6:o_1&#45;&gt;u_9:i_2</title>
-<path fill="none" stroke="black" d="M122,-78C122,-78 119.744,-38.8953 119.145,-28.5081"/>
-<polygon fill="black" stroke="black" points="118.002,-26.0576 119.998,-25.9424 120.114,-27.939 118.117,-28.0543 118.002,-26.0576"/>
-<polyline fill="none" stroke="black" points="119.115,-27.9967 119.144,-28.4959 "/>
-</g>
-</g>
-</svg>
diff --git a/dot/11.dot b/dot/11.dot
new file mode 100644
--- /dev/null
+++ b/dot/11.dot
@@ -0,0 +1,10 @@
+digraph Anonymous {
+graph [splines=false,size="1.0,4.0"];
+node [fontsize=12,fontname="Courier"];
+edge [arrowhead=box,arrowsize=0.25];
+u_2[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>SinOsc</TD><TD ID="u_2:K_0">440</TD><TD ID="u_2:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_2:o_0"></TD></TR></TABLE>>];
+u_3[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>&gt;</TD><TD PORT="i_0" ID="u_3:i_0"></TD><TD ID="u_3:K_1">0</TD></TR><TR><TD BORDER="0"></TD><TD BORDER="0"></TD><TD PORT="o_0" ID="u_3:o_0"></TD></TR></TABLE>>];
+u_4[shape="plaintext",color="black",label=<<TABLE BORDER="0" CELLBORDER="1"><TR><TD>Out</TD><TD ID="u_4:K_0">0</TD><TD PORT="i_1" ID="u_4:i_1"></TD></TR></TABLE>>];
+u_2:o_0:s -> u_3:i_0;
+u_3:o_0:s -> u_4:i_1;
+}
diff --git a/dot/11.svg b/dot/11.svg
deleted file mode 100644
--- a/dot/11.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: Anonymous Pages: 1 -->
-<svg width="72pt" height="118pt"
- viewBox="0.00 0.00 72.00 117.70" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(0.626087 0.626087) rotate(0) translate(4 184)">
-<title>Anonymous</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-184 112,-184 112,5 -4,5"/>
-<!-- u_2 -->
-<g id="node1" class="node"><title>u_2</title>
-<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
-<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
-<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
-<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
-<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
-<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
-</g>
-<!-- u_3 -->
-<g id="node2" class="node"><title>u_3</title>
-<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
-<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">&gt;</text>
-<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
-<polygon fill="none" stroke="black" points="86,-86 86,-102 98,-102 98,-86 86,-86"/>
-<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="86,-78 86,-84 98,-84 98,-78 86,-78"/>
-</g>
-<!-- u_2&#45;&gt;u_3 -->
-<g id="edge2" class="edge"><title>u_2:o_0:s&#45;&gt;u_3:i_0</title>
-<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
-<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
-<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
-</g>
-<!-- u_4 -->
-<g id="node3" class="node"><title>u_4</title>
-<polygon fill="none" stroke="black" points="50,-10 50,-26 73,-26 73,-10 50,-10"/>
-<text text-anchor="start" x="53.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
-<polygon fill="none" stroke="black" points="75,-10 75,-26 87,-26 87,-10 75,-10"/>
-<text text-anchor="start" x="78" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
-<polygon fill="none" stroke="black" points="89,-10 89,-26 95,-26 95,-10 89,-10"/>
-</g>
-<!-- u_3&#45;&gt;u_4 -->
-<g id="edge4" class="edge"><title>u_3:o_0:s&#45;&gt;u_4:i_1</title>
-<path fill="none" stroke="black" d="M92,-78C92,-78 92,-38.8953 92,-28.5081"/>
-<polygon fill="black" stroke="black" points="91,-26 93,-26 93.0001,-28 91.0001,-28 91,-26"/>
-<polyline fill="none" stroke="black" points="92.0001,-28 92.0001,-28.5 "/>
-</g>
-</g>
-</svg>
diff --git a/hsc3-dot.cabal b/hsc3-dot.cabal
--- a/hsc3-dot.cabal
+++ b/hsc3-dot.cabal
@@ -1,33 +1,36 @@
 Name:              hsc3-dot
-Version:           0.15
+Version:           0.16
 Synopsis:          haskell supercollider graph drawing
 Description:       dot format graph generator for SuperCollider
                    unit generator graphs constructed using hsc3.
 License:           GPL
 Category:          Sound
-Copyright:         (c) Rohan Drape, 2006-2014
+Copyright:         (c) Rohan Drape, 2006-2017
 Author:            Rohan Drape
 Maintainer:        rd@slavepianos.org
 Stability:         Experimental
 Homepage:          http://rd.slavepianos.org/t/hsc3-dot
-Tested-With:       GHC == 7.8.2
+Tested-With:       GHC == 8.0.1
 Build-Type:        Simple
-Cabal-Version:     >= 1.8
+Cabal-Version:     >= 1.18
 
 Data-files:        README
-Extra-Doc-Files:   dot/*.svg
+Extra-Doc-Files:   dot/*.dot svg/*.svg
 
 Library
-  Build-Depends:   base == 4.*,
-                   directory,
-                   filepath,
-                   hsc3 == 0.15.*,
-                   process
-  GHC-Options:     -Wall -fwarn-tabs
-  Exposed-modules: Sound.SC3.UGen.Dot
-                   Sound.SC3.UGen.Dot.Class
-                   Sound.SC3.UGen.Dot.Internal
-                   Sound.SC3.UGen.Dot.Type
+  Default-Language: Haskell2010
+  Build-Depends:    base >= 4.8 && < 5,
+                    directory,
+                    filepath,
+                    hsc3 == 0.16.*,
+                    process
+  GHC-Options:      -Wall -fwarn-tabs
+  Exposed-modules:  Sound.SC3.UGen.Dot
+                    Sound.SC3.UGen.Dot.Class
+                    Sound.SC3.UGen.Dot.Common
+                    Sound.SC3.UGen.Dot.HL
+                    Sound.SC3.UGen.Dot.Internal
+                    Sound.SC3.UGen.Dot.Type
 
 Source-Repository  head
   Type:            darcs
diff --git a/svg/01.svg b/svg/01.svg
new file mode 100644
--- /dev/null
+++ b/svg/01.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="125pt" height="188pt"
+ viewBox="0.00 0.00 125.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 122,-184 122,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
+<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
+<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
+<polygon fill="none" stroke="black" points="86,-86 86,-102 108,-102 108,-86 86,-86"/>
+<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="86,-78 86,-84 108,-84 108,-78 86,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
+<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
+<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node3" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="55,-10 55,-26 78,-26 78,-10 55,-10"/>
+<text text-anchor="start" x="58.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="80,-10 80,-26 92,-26 92,-10 80,-10"/>
+<text text-anchor="start" x="83" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="94,-10 94,-26 100,-26 100,-10 94,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M97,-78C97,-78 97,-38.8953 97,-28.5081"/>
+<polygon fill="black" stroke="black" points="96,-26 98,-26 98.0001,-28 96.0001,-28 96,-26"/>
+<polyline fill="none" stroke="black" points="97.0001,-28 97.0001,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/02.svg b/svg/02.svg
new file mode 100644
--- /dev/null
+++ b/svg/02.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="119pt" height="200pt"
+ viewBox="0.00 0.00 119.00 200.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 196)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-196 116,-196 116,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="9,-153 9,-191 111,-191 111,-153 9,-153"/>
+<text text-anchor="middle" x="33" y="-178.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polyline fill="none" stroke="black" points="57,-172 57,-191 "/>
+<text text-anchor="middle" x="73" y="-178.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polyline fill="none" stroke="black" points="89,-172 89,-191 "/>
+<text text-anchor="middle" x="100" y="-178.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polyline fill="none" stroke="black" points="9,-172 111,-172 "/>
+<text text-anchor="middle" x="60" y="-159.9" font-family="Courier,monospace" font-size="9.00"> </text>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="27,-77 27,-115 103,-115 103,-77 27,-77"/>
+<text text-anchor="middle" x="38" y="-102.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polyline fill="none" stroke="black" points="49,-96 49,-115 "/>
+<text text-anchor="middle" x="60" y="-102.9" font-family="Courier,monospace" font-size="9.00"> </text>
+<polyline fill="none" stroke="black" points="71,-96 71,-115 "/>
+<text text-anchor="middle" x="87" y="-102.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polyline fill="none" stroke="black" points="27,-96 103,-96 "/>
+<text text-anchor="middle" x="65" y="-83.9" font-family="Courier,monospace" font-size="9.00"> </text>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M60,-153C60,-153 60,-126.94 60,-117.982"/>
+<polygon fill="black" stroke="black" points="59,-115 61,-115 61.0001,-117 59.0001,-117 59,-115"/>
+<polyline fill="none" stroke="black" points="60.0001,-117 60.0001,-117.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node3" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="0,-1 0,-39 76,-39 76,-1 0,-1"/>
+<text text-anchor="middle" x="16" y="-26.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polyline fill="none" stroke="black" points="32,-20 32,-39 "/>
+<text text-anchor="middle" x="43" y="-26.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polyline fill="none" stroke="black" points="54,-20 54,-39 "/>
+<text text-anchor="middle" x="65" y="-26.9" font-family="Courier,monospace" font-size="9.00"> </text>
+<polyline fill="none" stroke="black" points="0,-20 76,-20 "/>
+<text text-anchor="middle" x="38" y="-7.9" font-family="Courier,monospace" font-size="9.00"> </text>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M65,-77C65,-77 65,-50.9399 65,-41.9818"/>
+<polygon fill="black" stroke="black" points="64,-39 66,-39 66.0001,-41 64.0001,-41 64,-39"/>
+<polyline fill="none" stroke="black" points="65.0001,-41 65.0001,-41.5 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/03.svg b/svg/03.svg
new file mode 100644
--- /dev/null
+++ b/svg/03.svg
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="153pt" height="404pt"
+ viewBox="0.00 0.00 153.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-400 150,-400 150,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="blue" points="10,-374 10,-390 44,-390 44,-374 10,-374"/>
+<text text-anchor="start" x="13.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">LFSaw</text>
+<polygon fill="none" stroke="blue" points="46,-374 46,-390 58,-390 58,-374 46,-374"/>
+<text text-anchor="start" x="49" y="-379.9" font-family="Courier,monospace" font-size="9.00">1</text>
+<polygon fill="none" stroke="blue" points="60,-374 60,-390 72,-390 72,-374 60,-374"/>
+<text text-anchor="start" x="63" y="-379.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="60,-366 60,-372 72,-372 72,-366 60,-366"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="blue" points="48,-302 48,-318 61,-318 61,-302 48,-302"/>
+<text text-anchor="start" x="51.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="blue" points="63,-302 63,-318 69,-318 69,-302 63,-302"/>
+<polygon fill="none" stroke="blue" points="71,-302 71,-318 93,-318 93,-302 71,-302"/>
+<text text-anchor="start" x="74" y="-307.9" font-family="Courier,monospace" font-size="9.00">220</text>
+<polygon fill="none" stroke="blue" points="71,-294 71,-300 93,-300 93,-294 71,-294"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M66,-366C66,-366 66,-330.551 66,-320.581"/>
+<polygon fill="black" stroke="black" points="65,-318 67,-318 67.0001,-320 65.0001,-320 65,-318"/>
+<polyline fill="none" stroke="black" points="66.0001,-320 66.0001,-320.5 "/>
+</g>
+<!-- u_6 -->
+<g id="node3" class="node"><title>u_6</title>
+<polygon fill="none" stroke="blue" points="64,-230 64,-246 77,-246 77,-230 64,-230"/>
+<text text-anchor="start" x="67.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
+<polygon fill="none" stroke="blue" points="79,-230 79,-246 85,-246 85,-230 79,-230"/>
+<polygon fill="none" stroke="blue" points="87,-230 87,-246 109,-246 109,-230 87,-230"/>
+<text text-anchor="start" x="90" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="blue" points="87,-222 87,-228 109,-228 109,-222 87,-222"/>
+</g>
+<!-- u_4&#45;&gt;u_6 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_6:i_0</title>
+<path fill="none" stroke="black" d="M82,-294C82,-294 82,-258.551 82,-248.581"/>
+<polygon fill="black" stroke="black" points="81,-246 83,-246 83.0001,-248 81.0001,-248 81,-246"/>
+<polyline fill="none" stroke="black" points="82.0001,-248 82.0001,-248.5 "/>
+</g>
+<!-- u_7 -->
+<g id="node4" class="node"><title>u_7</title>
+<polygon fill="none" stroke="black" points="54,-158 54,-174 93,-174 93,-158 54,-158"/>
+<text text-anchor="start" x="57.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="95,-158 95,-174 101,-174 101,-158 95,-158"/>
+<polygon fill="none" stroke="black" points="103,-158 103,-174 115,-174 115,-158 103,-158"/>
+<text text-anchor="start" x="106" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="103,-150 103,-156 115,-156 115,-150 103,-150"/>
+</g>
+<!-- u_6&#45;&gt;u_7 -->
+<g id="edge6" class="edge"><title>u_6:o_0&#45;&gt;u_7:i_0</title>
+<path fill="none" stroke="black" d="M98,-222C98,-222 98,-186.551 98,-176.581"/>
+<polygon fill="black" stroke="black" points="97,-174 99,-174 99.0001,-176 97.0001,-176 97,-174"/>
+<polyline fill="none" stroke="black" points="98.0001,-176 98.0001,-176.5 "/>
+</g>
+<!-- u_9 -->
+<g id="node5" class="node"><title>u_9</title>
+<polygon fill="none" stroke="black" points="91,-86 91,-102 104,-102 104,-86 91,-86"/>
+<text text-anchor="start" x="94.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="106,-86 106,-102 112,-102 112,-86 106,-86"/>
+<polygon fill="none" stroke="black" points="114,-86 114,-102 136,-102 136,-86 114,-86"/>
+<text text-anchor="start" x="117" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="114,-78 114,-84 136,-84 136,-78 114,-78"/>
+</g>
+<!-- u_7&#45;&gt;u_9 -->
+<g id="edge8" class="edge"><title>u_7:o_0&#45;&gt;u_9:i_0</title>
+<path fill="none" stroke="black" d="M109,-150C109,-150 109,-114.551 109,-104.581"/>
+<polygon fill="black" stroke="black" points="108,-102 110,-102 110,-104 108,-104 108,-102"/>
+<polyline fill="none" stroke="black" points="109,-104 109,-104.5 "/>
+</g>
+<!-- u_10 -->
+<g id="node6" class="node"><title>u_10</title>
+<polygon fill="none" stroke="black" points="83,-10 83,-26 106,-26 106,-10 83,-10"/>
+<text text-anchor="start" x="86.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="108,-10 108,-26 120,-26 120,-10 108,-10"/>
+<text text-anchor="start" x="111" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="122,-10 122,-26 128,-26 128,-10 122,-10"/>
+</g>
+<!-- u_9&#45;&gt;u_10 -->
+<g id="edge10" class="edge"><title>u_9:o_0&#45;&gt;u_10:i_1</title>
+<path fill="none" stroke="black" d="M125,-78C125,-78 125,-38.8953 125,-28.5081"/>
+<polygon fill="black" stroke="black" points="124,-26 126,-26 126,-28 124,-28 124,-26"/>
+<polyline fill="none" stroke="black" points="125,-28 125,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/04.svg b/svg/04.svg
new file mode 100644
--- /dev/null
+++ b/svg/04.svg
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="254pt" height="476pt"
+ viewBox="0.00 0.00 254.00 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-472 251,-472 251,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="blue" points="10,-374 10,-390 44,-390 44,-374 10,-374"/>
+<text text-anchor="start" x="13.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">LFSaw</text>
+<polygon fill="none" stroke="blue" points="46,-374 46,-390 58,-390 58,-374 46,-374"/>
+<text text-anchor="start" x="49" y="-379.9" font-family="Courier,monospace" font-size="9.00">1</text>
+<polygon fill="none" stroke="blue" points="60,-374 60,-390 72,-390 72,-374 60,-374"/>
+<text text-anchor="start" x="63" y="-379.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="60,-366 60,-372 72,-372 72,-366 60,-366"/>
+</g>
+<!-- u_8 -->
+<g id="node4" class="node"><title>u_8</title>
+<polygon fill="none" stroke="blue" points="91,-302 91,-318 104,-318 104,-302 91,-302"/>
+<text text-anchor="start" x="94.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="blue" points="106,-302 106,-318 112,-318 112,-302 106,-302"/>
+<polygon fill="none" stroke="blue" points="114,-302 114,-318 120,-318 120,-302 114,-302"/>
+<polygon fill="none" stroke="blue" points="114,-294 114,-300 120,-300 120,-294 114,-294"/>
+</g>
+<!-- u_2&#45;&gt;u_8 -->
+<g id="edge4" class="edge"><title>u_2:o_0&#45;&gt;u_8:i_0</title>
+<path fill="none" stroke="black" d="M73,-369C73,-369 100.562,-329.953 107.453,-320.191"/>
+<polygon fill="black" stroke="black" points="108.183,-317.423 109.817,-318.577 108.664,-320.211 107.03,-319.057 108.183,-317.423"/>
+<polyline fill="none" stroke="black" points="107.847,-319.634 107.558,-320.042 "/>
+</g>
+<!-- u_5 -->
+<g id="node2" class="node"><title>u_5</title>
+<polygon fill="none" stroke="yellow" points="78,-446 78,-462 107,-462 107,-446 78,-446"/>
+<text text-anchor="start" x="81.5" y="-451.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
+<polygon fill="none" stroke="yellow" points="109,-446 109,-462 131,-462 131,-446 109,-446"/>
+<text text-anchor="start" x="112" y="-451.9" font-family="Courier,monospace" font-size="9.00">200</text>
+<polygon fill="none" stroke="yellow" points="133,-446 133,-462 155,-462 155,-446 133,-446"/>
+<text text-anchor="start" x="136" y="-451.9" font-family="Courier,monospace" font-size="9.00">400</text>
+<polygon fill="none" stroke="yellow" points="133,-438 133,-444 155,-444 155,-438 133,-438"/>
+</g>
+<!-- u_7 -->
+<g id="node3" class="node"><title>u_7</title>
+<polygon fill="none" stroke="yellow" points="110,-374 110,-390 139,-390 139,-374 110,-374"/>
+<text text-anchor="start" x="113.5" y="-379.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
+<polygon fill="none" stroke="yellow" points="141,-374 141,-390 147,-390 147,-374 141,-374"/>
+<polygon fill="none" stroke="yellow" points="149,-374 149,-390 171,-390 171,-374 149,-374"/>
+<text text-anchor="start" x="152" y="-379.9" font-family="Courier,monospace" font-size="9.00">600</text>
+<polygon fill="none" stroke="yellow" points="149,-366 149,-372 171,-372 171,-366 149,-366"/>
+</g>
+<!-- u_5&#45;&gt;u_7 -->
+<g id="edge2" class="edge"><title>u_5:o_0&#45;&gt;u_7:i_0</title>
+<path fill="none" stroke="black" d="M144,-438C144,-438 144,-402.551 144,-392.581"/>
+<polygon fill="black" stroke="black" points="143,-390 145,-390 145,-392 143,-392 143,-390"/>
+<polyline fill="none" stroke="black" points="144,-392 144,-392.5 "/>
+</g>
+<!-- u_7&#45;&gt;u_8 -->
+<g id="edge6" class="edge"><title>u_7:o_0&#45;&gt;u_8:i_1</title>
+<path fill="none" stroke="black" d="M160,-366C160,-366 127.078,-329.25 118.848,-320.062"/>
+<polygon fill="black" stroke="black" points="116.255,-318.667 117.745,-317.333 119.079,-318.822 117.59,-320.157 116.255,-318.667"/>
+<polyline fill="none" stroke="black" points="118.335,-319.49 118.668,-319.862 "/>
+</g>
+<!-- u_12 -->
+<g id="node6" class="node"><title>u_12</title>
+<polygon fill="none" stroke="blue" points="149,-230 149,-246 162,-246 162,-230 149,-230"/>
+<text text-anchor="start" x="152.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
+<polygon fill="none" stroke="blue" points="164,-230 164,-246 170,-246 170,-230 164,-230"/>
+<polygon fill="none" stroke="blue" points="172,-230 172,-246 178,-246 178,-230 172,-230"/>
+<polygon fill="none" stroke="blue" points="172,-222 172,-228 178,-228 178,-222 172,-222"/>
+</g>
+<!-- u_8&#45;&gt;u_12 -->
+<g id="edge8" class="edge"><title>u_8:o_0&#45;&gt;u_12:i_0</title>
+<path fill="none" stroke="black" d="M117,-294C117,-294 155.281,-257.25 164.852,-248.062"/>
+<polygon fill="black" stroke="black" points="166.307,-245.279 167.693,-246.721 166.25,-248.106 164.865,-246.664 166.307,-245.279"/>
+<polyline fill="none" stroke="black" points="165.557,-247.385 165.197,-247.731 "/>
+</g>
+<!-- u_11 -->
+<g id="node5" class="node"><title>u_11</title>
+<polygon fill="none" stroke="yellow" points="160,-302 160,-318 189,-318 189,-302 160,-302"/>
+<text text-anchor="start" x="163.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">Rand</text>
+<polygon fill="none" stroke="yellow" points="191,-302 191,-318 213,-318 213,-302 191,-302"/>
+<text text-anchor="start" x="194" y="-307.9" font-family="Courier,monospace" font-size="9.00">500</text>
+<polygon fill="none" stroke="yellow" points="215,-302 215,-318 237,-318 237,-302 215,-302"/>
+<text text-anchor="start" x="218" y="-307.9" font-family="Courier,monospace" font-size="9.00">900</text>
+<polygon fill="none" stroke="yellow" points="215,-294 215,-300 237,-300 237,-294 215,-294"/>
+</g>
+<!-- u_11&#45;&gt;u_12 -->
+<g id="edge10" class="edge"><title>u_11:o_0&#45;&gt;u_12:i_1</title>
+<path fill="none" stroke="black" d="M226,-294C226,-294 186.953,-257.25 177.191,-248.062"/>
+<polygon fill="black" stroke="black" points="174.315,-246.728 175.685,-245.272 177.142,-246.643 175.771,-248.099 174.315,-246.728"/>
+<polyline fill="none" stroke="black" points="176.456,-247.371 176.821,-247.713 "/>
+</g>
+<!-- u_13 -->
+<g id="node7" class="node"><title>u_13</title>
+<polygon fill="none" stroke="black" points="131,-158 131,-174 170,-174 170,-158 131,-158"/>
+<text text-anchor="start" x="134.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="172,-158 172,-174 178,-174 178,-158 172,-158"/>
+<polygon fill="none" stroke="black" points="180,-158 180,-174 192,-174 192,-158 180,-158"/>
+<text text-anchor="start" x="183" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="180,-150 180,-156 192,-156 192,-150 180,-150"/>
+</g>
+<!-- u_12&#45;&gt;u_13 -->
+<g id="edge12" class="edge"><title>u_12:o_0&#45;&gt;u_13:i_0</title>
+<path fill="none" stroke="black" d="M175,-222C175,-222 175,-186.551 175,-176.581"/>
+<polygon fill="black" stroke="black" points="174,-174 176,-174 176,-176 174,-176 174,-174"/>
+<polyline fill="none" stroke="black" points="175,-176 175,-176.5 "/>
+</g>
+<!-- u_15 -->
+<g id="node8" class="node"><title>u_15</title>
+<polygon fill="none" stroke="black" points="168,-86 168,-102 181,-102 181,-86 168,-86"/>
+<text text-anchor="start" x="171.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="183,-86 183,-102 189,-102 189,-86 183,-86"/>
+<polygon fill="none" stroke="black" points="191,-86 191,-102 213,-102 213,-86 191,-86"/>
+<text text-anchor="start" x="194" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="191,-78 191,-84 213,-84 213,-78 191,-78"/>
+</g>
+<!-- u_13&#45;&gt;u_15 -->
+<g id="edge14" class="edge"><title>u_13:o_0&#45;&gt;u_15:i_0</title>
+<path fill="none" stroke="black" d="M186,-150C186,-150 186,-114.551 186,-104.581"/>
+<polygon fill="black" stroke="black" points="185,-102 187,-102 187,-104 185,-104 185,-102"/>
+<polyline fill="none" stroke="black" points="186,-104 186,-104.5 "/>
+</g>
+<!-- u_16 -->
+<g id="node9" class="node"><title>u_16</title>
+<polygon fill="none" stroke="black" points="160,-10 160,-26 183,-26 183,-10 160,-10"/>
+<text text-anchor="start" x="163.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="185,-10 185,-26 197,-26 197,-10 185,-10"/>
+<text text-anchor="start" x="188" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="199,-10 199,-26 205,-26 205,-10 199,-10"/>
+</g>
+<!-- u_15&#45;&gt;u_16 -->
+<g id="edge16" class="edge"><title>u_15:o_0&#45;&gt;u_16:i_1</title>
+<path fill="none" stroke="black" d="M202,-78C202,-78 202,-38.8953 202,-28.5081"/>
+<polygon fill="black" stroke="black" points="201,-26 203,-26 203,-28 201,-28 201,-26"/>
+<polyline fill="none" stroke="black" points="202,-28 202,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/05.svg b/svg/05.svg
new file mode 100644
--- /dev/null
+++ b/svg/05.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="109pt" height="260pt"
+ viewBox="0.00 0.00 109.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-256 106,-256 106,5 -4,5"/>
+<!-- k_1 -->
+<g id="node1" class="node"><title>k_1</title>
+<polygon fill="none" stroke="blue" points="29,-226 29,-242 79,-242 79,-226 29,-226"/>
+<text text-anchor="start" x="32.5" y="-231.9" font-family="Courier,monospace" font-size="9.00">freq:440</text>
+</g>
+<!-- u_2 -->
+<g id="node2" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 57,-174 57,-158 51,-158"/>
+<polygon fill="none" stroke="black" points="59,-158 59,-174 71,-174 71,-158 59,-158"/>
+<text text-anchor="start" x="62" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="59,-150 59,-156 71,-156 71,-150 59,-150"/>
+</g>
+<!-- k_1&#45;&gt;u_2 -->
+<g id="edge2" class="edge"><title>k_1:o_0&#45;&gt;u_2:i_0</title>
+<path fill="none" stroke="black" d="M54,-225.657C54,-212.004 54,-185.538 54,-176.844"/>
+<polygon fill="black" stroke="black" points="53,-174 55,-174 55.0001,-176 53.0001,-176 53,-174"/>
+<polyline fill="none" stroke="black" points="54.0001,-176 54.0001,-176.5 "/>
+</g>
+<!-- u_4 -->
+<g id="node3" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="47,-86 47,-102 60,-102 60,-86 47,-86"/>
+<text text-anchor="start" x="50.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="62,-86 62,-102 68,-102 68,-86 62,-86"/>
+<polygon fill="none" stroke="black" points="70,-86 70,-102 92,-102 92,-86 70,-86"/>
+<text text-anchor="start" x="73" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="70,-78 70,-84 92,-84 92,-78 70,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge4" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M65,-150C65,-150 65,-114.551 65,-104.581"/>
+<polygon fill="black" stroke="black" points="64,-102 66,-102 66.0001,-104 64.0001,-104 64,-102"/>
+<polyline fill="none" stroke="black" points="65.0001,-104 65.0001,-104.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node4" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="39,-10 39,-26 62,-26 62,-10 39,-10"/>
+<text text-anchor="start" x="42.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="64,-10 64,-26 76,-26 76,-10 64,-10"/>
+<text text-anchor="start" x="67" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="78,-10 78,-26 84,-26 84,-10 78,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M81,-78C81,-78 81,-38.8953 81,-28.5081"/>
+<polygon fill="black" stroke="black" points="80,-26 82,-26 82.0001,-28 80.0001,-28 80,-26"/>
+<polyline fill="none" stroke="black" points="81.0001,-28 81.0001,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/06.svg b/svg/06.svg
new file mode 100644
--- /dev/null
+++ b/svg/06.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="152pt" height="188pt"
+ viewBox="0.00 0.00 152.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 149,-184 149,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 100,-174 100,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">freq:440</text>
+<polygon fill="none" stroke="black" points="102,-158 102,-174 114,-174 114,-158 102,-158"/>
+<text text-anchor="start" x="105" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="102,-150 102,-156 114,-156 114,-150 102,-150"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="90,-86 90,-102 103,-102 103,-86 90,-86"/>
+<text text-anchor="start" x="93.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="105,-86 105,-102 111,-102 111,-86 105,-86"/>
+<polygon fill="none" stroke="black" points="113,-86 113,-102 135,-102 135,-86 113,-86"/>
+<text text-anchor="start" x="116" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="113,-78 113,-84 135,-84 135,-78 113,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M108,-150C108,-150 108,-114.551 108,-104.581"/>
+<polygon fill="black" stroke="black" points="107,-102 109,-102 109,-104 107,-104 107,-102"/>
+<polyline fill="none" stroke="black" points="108,-104 108,-104.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node3" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="82,-10 82,-26 105,-26 105,-10 82,-10"/>
+<text text-anchor="start" x="85.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="107,-10 107,-26 119,-26 119,-10 107,-10"/>
+<text text-anchor="start" x="110" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="121,-10 121,-26 127,-26 127,-10 121,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M124,-78C124,-78 124,-38.8953 124,-28.5081"/>
+<polygon fill="black" stroke="black" points="123,-26 125,-26 125,-28 123,-28 123,-26"/>
+<polyline fill="none" stroke="black" points="124,-28 124,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/07.svg b/svg/07.svg
new file mode 100644
--- /dev/null
+++ b/svg/07.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="125pt" height="188pt"
+ viewBox="0.00 0.00 125.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 122,-184 122,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
+<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
+<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
+<polygon fill="none" stroke="black" points="86,-86 86,-102 108,-102 108,-86 86,-86"/>
+<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="86,-78 86,-84 108,-84 108,-78 86,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
+<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
+<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
+</g>
+<!-- u_5 -->
+<g id="node3" class="node"><title>u_5</title>
+<polygon fill="none" stroke="black" points="55,-10 55,-26 78,-26 78,-10 55,-10"/>
+<text text-anchor="start" x="58.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="80,-10 80,-26 92,-26 92,-10 80,-10"/>
+<text text-anchor="start" x="83" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="94,-10 94,-26 100,-26 100,-10 94,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_5 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_5:i_1</title>
+<path fill="none" stroke="black" d="M97,-78C97,-78 97,-38.8953 97,-28.5081"/>
+<polygon fill="black" stroke="black" points="96,-26 98,-26 98.0001,-28 96.0001,-28 96,-26"/>
+<polyline fill="none" stroke="black" points="97.0001,-28 97.0001,-28.5 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/08.svg b/svg/08.svg
new file mode 100644
--- /dev/null
+++ b/svg/08.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="231pt" height="188pt"
+ viewBox="0.00 0.00 231.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 228,-184 228,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
+<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="71,-86 71,-102 84,-102 84,-86 71,-86"/>
+<text text-anchor="start" x="74.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="86,-86 86,-102 92,-102 92,-86 86,-86"/>
+<polygon fill="none" stroke="black" points="94,-86 94,-102 116,-102 116,-86 94,-86"/>
+<text text-anchor="start" x="97" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="94,-78 94,-84 116,-84 116,-78 94,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M81,-150C81,-150 86.9082,-114.551 88.5699,-104.581"/>
+<polygon fill="black" stroke="black" points="88.0136,-101.836 89.9864,-102.164 89.6575,-104.137 87.6847,-103.808 88.0136,-101.836"/>
+<polyline fill="none" stroke="black" points="88.6711,-103.973 88.5889,-104.466 "/>
+</g>
+<!-- u_8 -->
+<g id="node5" class="node"><title>u_8</title>
+<polygon fill="none" stroke="black" points="108,-10 108,-26 131,-26 131,-10 108,-10"/>
+<text text-anchor="start" x="111.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="133,-10 133,-26 145,-26 145,-10 133,-10"/>
+<text text-anchor="start" x="136" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="147,-10 147,-26 153,-26 153,-10 147,-10"/>
+<polygon fill="none" stroke="black" points="155,-10 155,-26 161,-26 161,-10 155,-10"/>
+</g>
+<!-- u_4&#45;&gt;u_8 -->
+<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_8:i_1</title>
+<path fill="none" stroke="black" d="M117,-81C117,-81 142.266,-38.8906 148.582,-28.3633"/>
+<polygon fill="black" stroke="black" points="149.143,-25.4855 150.857,-26.5145 149.828,-28.2295 148.113,-27.2005 149.143,-25.4855"/>
+<polyline fill="none" stroke="black" points="148.971,-27.715 148.714,-28.1437 "/>
+</g>
+<!-- u_6 -->
+<g id="node3" class="node"><title>u_6</title>
+<polygon fill="none" stroke="black" points="124,-158 124,-174 163,-174 163,-158 124,-158"/>
+<text text-anchor="start" x="127.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="165,-158 165,-174 187,-174 187,-158 165,-158"/>
+<text text-anchor="start" x="168" y="-163.9" font-family="Courier,monospace" font-size="9.00">220</text>
+<polygon fill="none" stroke="black" points="189,-158 189,-174 201,-174 201,-158 189,-158"/>
+<text text-anchor="start" x="192" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="189,-150 189,-156 201,-156 201,-150 189,-150"/>
+</g>
+<!-- u_7 -->
+<g id="node4" class="node"><title>u_7</title>
+<polygon fill="none" stroke="black" points="169,-86 169,-102 182,-102 182,-86 169,-86"/>
+<text text-anchor="start" x="172.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="184,-86 184,-102 190,-102 190,-86 184,-86"/>
+<polygon fill="none" stroke="black" points="192,-86 192,-102 214,-102 214,-86 192,-86"/>
+<text text-anchor="start" x="195" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="192,-78 192,-84 214,-84 214,-78 192,-78"/>
+</g>
+<!-- u_6&#45;&gt;u_7 -->
+<g id="edge4" class="edge"><title>u_6:o_0&#45;&gt;u_7:i_0</title>
+<path fill="none" stroke="black" d="M195,-150C195,-150 189.092,-114.551 187.43,-104.581"/>
+<polygon fill="black" stroke="black" points="186.014,-102.164 187.986,-101.836 188.315,-103.808 186.342,-104.137 186.014,-102.164"/>
+<polyline fill="none" stroke="black" points="187.329,-103.973 187.411,-104.466 "/>
+</g>
+<!-- u_7&#45;&gt;u_8 -->
+<g id="edge8" class="edge"><title>u_7:o_0&#45;&gt;u_8:i_2</title>
+<path fill="none" stroke="black" d="M203,-78C203,-78 168.547,-38.1875 159.934,-28.2344"/>
+<polygon fill="black" stroke="black" points="157.244,-26.6544 158.756,-25.3456 160.065,-26.858 158.553,-28.1667 157.244,-26.6544"/>
+<polyline fill="none" stroke="black" points="159.309,-27.5124 159.636,-27.8904 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/09.svg b/svg/09.svg
new file mode 100644
--- /dev/null
+++ b/svg/09.svg
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="443pt" height="332pt"
+ viewBox="0.00 0.00 443.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-328 440,-328 440,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="blue" points="10,-302 10,-318 49,-318 49,-302 10,-302"/>
+<text text-anchor="start" x="13.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="blue" points="51,-302 51,-318 79,-318 79,-302 51,-302"/>
+<text text-anchor="start" x="54" y="-307.9" font-family="Courier,monospace" font-size="9.00">0.25</text>
+<polygon fill="none" stroke="blue" points="81,-302 81,-318 93,-318 93,-302 81,-302"/>
+<text text-anchor="start" x="84" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="81,-294 81,-300 93,-300 93,-294 81,-294"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="blue" points="79,-230 79,-246 92,-246 92,-230 79,-230"/>
+<text text-anchor="start" x="82.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="blue" points="94,-230 94,-246 100,-246 100,-230 94,-230"/>
+<polygon fill="none" stroke="blue" points="102,-230 102,-246 119,-246 119,-230 102,-230"/>
+<text text-anchor="start" x="105" y="-235.9" font-family="Courier,monospace" font-size="9.00">10</text>
+<polygon fill="none" stroke="blue" points="102,-222 102,-228 119,-228 119,-222 102,-222"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M87,-294C87,-294 94.3853,-258.551 96.4624,-248.581"/>
+<polygon fill="black" stroke="black" points="96.021,-245.796 97.979,-246.204 97.571,-248.162 95.613,-247.754 96.021,-245.796"/>
+<polyline fill="none" stroke="black" points="96.592,-247.958 96.49,-248.447 "/>
+</g>
+<!-- u_9 -->
+<g id="node5" class="node"><title>u_9</title>
+<polygon fill="none" stroke="blue" points="102,-154 102,-170 125,-170 125,-154 102,-154"/>
+<text text-anchor="start" x="105.5" y="-159.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="blue" points="127,-154 127,-170 139,-170 139,-154 127,-154"/>
+<text text-anchor="start" x="130" y="-159.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="141,-154 141,-170 147,-170 147,-154 141,-154"/>
+<polygon fill="none" stroke="blue" points="149,-154 149,-170 155,-170 155,-154 149,-154"/>
+</g>
+<!-- u_4&#45;&gt;u_9 -->
+<g id="edge6" class="edge"><title>u_4:o_0&#45;&gt;u_9:i_1</title>
+<path fill="none" stroke="black" d="M111,-222C111,-222 136.266,-182.188 142.582,-172.234"/>
+<polygon fill="black" stroke="black" points="143.156,-169.464 144.844,-170.536 143.773,-172.225 142.084,-171.153 143.156,-169.464"/>
+<polyline fill="none" stroke="black" points="142.928,-171.689 142.66,-172.111 "/>
+</g>
+<!-- u_6 -->
+<g id="node3" class="node"><title>u_6</title>
+<polygon fill="none" stroke="blue" points="130,-302 130,-318 169,-318 169,-302 130,-302"/>
+<text text-anchor="start" x="133.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="blue" points="171,-302 171,-318 199,-318 199,-302 171,-302"/>
+<text text-anchor="start" x="174" y="-307.9" font-family="Courier,monospace" font-size="9.00">0.35</text>
+<polygon fill="none" stroke="blue" points="201,-302 201,-318 213,-318 213,-302 201,-302"/>
+<text text-anchor="start" x="204" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="201,-294 201,-300 213,-300 213,-294 201,-294"/>
+</g>
+<!-- u_8 -->
+<g id="node4" class="node"><title>u_8</title>
+<polygon fill="none" stroke="blue" points="178,-230 178,-246 191,-246 191,-230 178,-230"/>
+<text text-anchor="start" x="181.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="blue" points="193,-230 193,-246 199,-246 199,-230 193,-230"/>
+<polygon fill="none" stroke="blue" points="201,-230 201,-246 218,-246 218,-230 201,-230"/>
+<text text-anchor="start" x="204" y="-235.9" font-family="Courier,monospace" font-size="9.00">15</text>
+<polygon fill="none" stroke="blue" points="201,-222 201,-228 218,-228 218,-222 201,-222"/>
+</g>
+<!-- u_6&#45;&gt;u_8 -->
+<g id="edge4" class="edge"><title>u_6:o_0&#45;&gt;u_8:i_0</title>
+<path fill="none" stroke="black" d="M207,-294C207,-294 198.876,-258.551 196.591,-248.581"/>
+<polygon fill="black" stroke="black" points="195.025,-246.223 196.975,-245.777 197.422,-247.726 195.472,-248.173 195.025,-246.223"/>
+<polyline fill="none" stroke="black" points="196.447,-247.949 196.559,-248.437 "/>
+</g>
+<!-- u_8&#45;&gt;u_9 -->
+<g id="edge8" class="edge"><title>u_8:o_0&#45;&gt;u_9:i_2</title>
+<path fill="none" stroke="black" d="M210,-222C210,-222 163.994,-180.753 153.93,-171.73"/>
+<polygon fill="black" stroke="black" points="151.332,-170.745 152.668,-169.255 154.157,-170.591 152.822,-172.08 151.332,-170.745"/>
+<polyline fill="none" stroke="black" points="153.489,-171.335 153.861,-171.669 "/>
+</g>
+<!-- u_11 -->
+<g id="node6" class="node"><title>u_11</title>
+<polygon fill="none" stroke="blue" points="323,-302 323,-318 341,-318 341,-302 323,-302"/>
+<text text-anchor="start" x="326.5" y="-307.9" font-family="Courier,monospace" font-size="9.00">In</text>
+<polygon fill="none" stroke="blue" points="343,-302 343,-318 355,-318 355,-302 343,-302"/>
+<text text-anchor="start" x="346" y="-307.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="blue" points="323,-294 323,-300 341,-300 341,-294 323,-294"/>
+<polygon fill="none" stroke="blue" points="343,-294 343,-300 355,-300 355,-294 343,-294"/>
+</g>
+<!-- u_13 -->
+<g id="node7" class="node"><title>u_13</title>
+<polygon fill="none" stroke="blue" points="256,-230 256,-246 269,-246 269,-230 256,-230"/>
+<text text-anchor="start" x="259.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
+<polygon fill="none" stroke="blue" points="271,-230 271,-246 293,-246 293,-230 271,-230"/>
+<text text-anchor="start" x="274" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="blue" points="295,-230 295,-246 301,-246 301,-230 295,-230"/>
+<polygon fill="none" stroke="blue" points="295,-222 295,-228 301,-228 301,-222 295,-222"/>
+</g>
+<!-- u_11&#45;&gt;u_13 -->
+<g id="edge10" class="edge"><title>u_11:o_0&#45;&gt;u_13:i_1</title>
+<path fill="none" stroke="black" d="M322,-297C322,-297 303.952,-258.647 299.158,-248.46"/>
+<polygon fill="black" stroke="black" points="297.095,-246.426 298.905,-245.574 299.756,-247.384 297.947,-248.235 297.095,-246.426"/>
+<polyline fill="none" stroke="black" points="298.852,-247.81 299.065,-248.262 "/>
+</g>
+<!-- u_19 -->
+<g id="node10" class="node"><title>u_19</title>
+<polygon fill="none" stroke="blue" points="342,-230 342,-246 355,-246 355,-230 342,-230"/>
+<text text-anchor="start" x="345.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">+</text>
+<polygon fill="none" stroke="blue" points="357,-230 357,-246 379,-246 379,-230 357,-230"/>
+<text text-anchor="start" x="360" y="-235.9" font-family="Courier,monospace" font-size="9.00">220</text>
+<polygon fill="none" stroke="blue" points="381,-230 381,-246 387,-246 387,-230 381,-230"/>
+<polygon fill="none" stroke="blue" points="381,-222 381,-228 387,-228 387,-222 381,-222"/>
+</g>
+<!-- u_11&#45;&gt;u_19 -->
+<g id="edge16" class="edge"><title>u_11:o_1&#45;&gt;u_19:i_1</title>
+<path fill="none" stroke="black" d="M349,-294C349,-294 375.797,-257.25 382.496,-248.062"/>
+<polygon fill="black" stroke="black" points="383.192,-245.411 384.808,-246.589 383.63,-248.205 382.014,-247.027 383.192,-245.411"/>
+<polyline fill="none" stroke="black" points="382.822,-247.616 382.527,-248.02 "/>
+</g>
+<!-- u_14 -->
+<g id="node8" class="node"><title>u_14</title>
+<polygon fill="none" stroke="black" points="250,-158 250,-174 289,-174 289,-158 250,-158"/>
+<text text-anchor="start" x="253.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="291,-158 291,-174 297,-174 297,-158 291,-158"/>
+<polygon fill="none" stroke="black" points="299,-158 299,-174 311,-174 311,-158 299,-158"/>
+<text text-anchor="start" x="302" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="299,-150 299,-156 311,-156 311,-150 299,-150"/>
+</g>
+<!-- u_13&#45;&gt;u_14 -->
+<g id="edge12" class="edge"><title>u_13:o_0&#45;&gt;u_14:i_0</title>
+<path fill="none" stroke="black" d="M298,-222C298,-222 295.046,-186.551 294.215,-176.581"/>
+<polygon fill="black" stroke="black" points="293.003,-174.083 294.997,-173.917 295.163,-175.91 293.17,-176.076 293.003,-174.083"/>
+<polyline fill="none" stroke="black" points="294.166,-175.993 294.208,-176.491 "/>
+</g>
+<!-- u_16 -->
+<g id="node9" class="node"><title>u_16</title>
+<polygon fill="none" stroke="black" points="295,-86 295,-102 308,-102 308,-86 295,-86"/>
+<text text-anchor="start" x="298.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="310,-86 310,-102 316,-102 316,-86 310,-86"/>
+<polygon fill="none" stroke="black" points="318,-86 318,-102 340,-102 340,-86 318,-86"/>
+<text text-anchor="start" x="321" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="318,-78 318,-84 340,-84 340,-78 318,-78"/>
+</g>
+<!-- u_14&#45;&gt;u_16 -->
+<g id="edge14" class="edge"><title>u_14:o_0&#45;&gt;u_16:i_0</title>
+<path fill="none" stroke="black" d="M305,-150C305,-150 310.908,-114.551 312.57,-104.581"/>
+<polygon fill="black" stroke="black" points="312.014,-101.836 313.986,-102.164 313.658,-104.137 311.685,-103.808 312.014,-101.836"/>
+<polyline fill="none" stroke="black" points="312.671,-103.973 312.589,-104.466 "/>
+</g>
+<!-- u_22 -->
+<g id="node13" class="node"><title>u_22</title>
+<polygon fill="none" stroke="black" points="326,-10 326,-26 349,-26 349,-10 326,-10"/>
+<text text-anchor="start" x="329.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="351,-10 351,-26 363,-26 363,-10 351,-10"/>
+<text text-anchor="start" x="354" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="365,-10 365,-26 371,-26 371,-10 365,-10"/>
+<polygon fill="none" stroke="black" points="373,-10 373,-26 379,-26 379,-10 373,-10"/>
+</g>
+<!-- u_16&#45;&gt;u_22 -->
+<g id="edge22" class="edge"><title>u_16:o_0&#45;&gt;u_22:i_1</title>
+<path fill="none" stroke="black" d="M341,-81C341,-81 361.672,-38.8906 366.84,-28.3633"/>
+<polygon fill="black" stroke="black" points="367.102,-25.5593 368.898,-26.4407 368.016,-28.236 366.221,-27.3546 367.102,-25.5593"/>
+<polyline fill="none" stroke="black" points="367.119,-27.7953 366.898,-28.2442 "/>
+</g>
+<!-- u_20 -->
+<g id="node11" class="node"><title>u_20</title>
+<polygon fill="none" stroke="black" points="348,-158 348,-174 387,-174 387,-158 348,-158"/>
+<text text-anchor="start" x="351.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="389,-158 389,-174 395,-174 395,-158 389,-158"/>
+<polygon fill="none" stroke="black" points="397,-158 397,-174 409,-174 409,-158 397,-158"/>
+<text text-anchor="start" x="400" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="397,-150 397,-156 409,-156 409,-150 397,-150"/>
+</g>
+<!-- u_19&#45;&gt;u_20 -->
+<g id="edge18" class="edge"><title>u_19:o_0&#45;&gt;u_20:i_0</title>
+<path fill="none" stroke="black" d="M384,-222C384,-222 389.908,-186.551 391.57,-176.581"/>
+<polygon fill="black" stroke="black" points="391.014,-173.836 392.986,-174.164 392.658,-176.137 390.685,-175.808 391.014,-173.836"/>
+<polyline fill="none" stroke="black" points="391.671,-175.973 391.589,-176.466 "/>
+</g>
+<!-- u_21 -->
+<g id="node12" class="node"><title>u_21</title>
+<polygon fill="none" stroke="black" points="381,-86 381,-102 394,-102 394,-86 381,-86"/>
+<text text-anchor="start" x="384.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="396,-86 396,-102 402,-102 402,-86 396,-86"/>
+<polygon fill="none" stroke="black" points="404,-86 404,-102 426,-102 426,-86 404,-86"/>
+<text text-anchor="start" x="407" y="-91.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="404,-78 404,-84 426,-84 426,-78 404,-78"/>
+</g>
+<!-- u_20&#45;&gt;u_21 -->
+<g id="edge20" class="edge"><title>u_20:o_0&#45;&gt;u_21:i_0</title>
+<path fill="none" stroke="black" d="M403,-150C403,-150 400.046,-114.551 399.215,-104.581"/>
+<polygon fill="black" stroke="black" points="398.003,-102.083 399.997,-101.917 400.163,-103.91 398.17,-104.076 398.003,-102.083"/>
+<polyline fill="none" stroke="black" points="399.166,-103.993 399.208,-104.491 "/>
+</g>
+<!-- u_21&#45;&gt;u_22 -->
+<g id="edge24" class="edge"><title>u_21:o_0&#45;&gt;u_22:i_2</title>
+<path fill="none" stroke="black" d="M415,-78C415,-78 385.141,-38.1875 377.676,-28.2344"/>
+<polygon fill="black" stroke="black" points="375.2,-26.6 376.8,-25.4 378,-27 376.4,-28.2 375.2,-26.6"/>
+<polyline fill="none" stroke="black" points="377.2,-27.6 377.5,-28 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/10.svg b/svg/10.svg
new file mode 100644
--- /dev/null
+++ b/svg/10.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="145pt" height="260pt"
+ viewBox="0.00 0.00 145.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-256 142,-256 142,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-230 10,-246 49,-246 49,-230 10,-230"/>
+<text text-anchor="start" x="13.5" y="-235.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-230 51,-246 73,-246 73,-230 51,-230"/>
+<text text-anchor="start" x="54" y="-235.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-230 75,-246 87,-246 87,-230 75,-230"/>
+<text text-anchor="start" x="78" y="-235.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-222 75,-228 87,-228 87,-222 75,-222"/>
+</g>
+<!-- u_4 -->
+<g id="node2" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="63,-158 63,-174 76,-174 76,-158 63,-158"/>
+<text text-anchor="start" x="66.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">*</text>
+<polygon fill="none" stroke="black" points="78,-158 78,-174 84,-174 84,-158 78,-158"/>
+<polygon fill="none" stroke="black" points="86,-158 86,-174 108,-174 108,-158 86,-158"/>
+<text text-anchor="start" x="89" y="-163.9" font-family="Courier,monospace" font-size="9.00">0.1</text>
+<polygon fill="none" stroke="black" points="86,-150 86,-156 108,-156 108,-150 86,-150"/>
+</g>
+<!-- u_2&#45;&gt;u_4 -->
+<g id="edge2" class="edge"><title>u_2:o_0&#45;&gt;u_4:i_0</title>
+<path fill="none" stroke="black" d="M81,-222C81,-222 81,-186.551 81,-176.581"/>
+<polygon fill="black" stroke="black" points="80,-174 82,-174 82.0001,-176 80.0001,-176 80,-174"/>
+<polyline fill="none" stroke="black" points="81.0001,-176 81.0001,-176.5 "/>
+</g>
+<!-- u_6 -->
+<g id="node3" class="node"><title>u_6</title>
+<polygon fill="none" stroke="black" points="63,-86 63,-102 92,-102 92,-86 63,-86"/>
+<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">Pan2</text>
+<polygon fill="none" stroke="black" points="94,-86 94,-102 100,-102 100,-86 94,-86"/>
+<polygon fill="none" stroke="black" points="102,-86 102,-102 114,-102 114,-86 102,-86"/>
+<text text-anchor="start" x="105" y="-91.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="116,-86 116,-102 128,-102 128,-86 116,-86"/>
+<text text-anchor="start" x="119" y="-91.9" font-family="Courier,monospace" font-size="9.00">1</text>
+<polygon fill="none" stroke="black" points="102,-78 102,-84 114,-84 114,-78 102,-78"/>
+<polygon fill="none" stroke="black" points="116,-78 116,-84 128,-84 128,-78 116,-78"/>
+</g>
+<!-- u_4&#45;&gt;u_6 -->
+<g id="edge4" class="edge"><title>u_4:o_0&#45;&gt;u_6:i_0</title>
+<path fill="none" stroke="black" d="M97,-150C97,-150 97,-114.551 97,-104.581"/>
+<polygon fill="black" stroke="black" points="96,-102 98,-102 98.0001,-104 96.0001,-104 96,-102"/>
+<polyline fill="none" stroke="black" points="97.0001,-104 97.0001,-104.5 "/>
+</g>
+<!-- u_9 -->
+<g id="node4" class="node"><title>u_9</title>
+<polygon fill="none" stroke="black" points="69,-10 69,-26 92,-26 92,-10 69,-10"/>
+<text text-anchor="start" x="72.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="94,-10 94,-26 106,-26 106,-10 94,-10"/>
+<text text-anchor="start" x="97" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="108,-10 108,-26 114,-26 114,-10 108,-10"/>
+<polygon fill="none" stroke="black" points="116,-10 116,-26 122,-26 122,-10 116,-10"/>
+</g>
+<!-- u_6&#45;&gt;u_9 -->
+<g id="edge6" class="edge"><title>u_6:o_0&#45;&gt;u_9:i_1</title>
+<path fill="none" stroke="black" d="M108,-78C108,-78 110.256,-38.8953 110.855,-28.5081"/>
+<polygon fill="black" stroke="black" points="110.002,-25.9424 111.998,-26.0576 111.883,-28.0543 109.886,-27.939 110.002,-25.9424"/>
+<polyline fill="none" stroke="black" points="110.885,-27.9967 110.856,-28.4959 "/>
+</g>
+<!-- u_6&#45;&gt;u_9 -->
+<g id="edge8" class="edge"><title>u_6:o_1&#45;&gt;u_9:i_2</title>
+<path fill="none" stroke="black" d="M122,-78C122,-78 119.744,-38.8953 119.145,-28.5081"/>
+<polygon fill="black" stroke="black" points="118.002,-26.0576 119.998,-25.9424 120.114,-27.939 118.117,-28.0543 118.002,-26.0576"/>
+<polyline fill="none" stroke="black" points="119.115,-27.9967 119.144,-28.4959 "/>
+</g>
+</g>
+</svg>
diff --git a/svg/11.svg b/svg/11.svg
new file mode 100644
--- /dev/null
+++ b/svg/11.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: Anonymous Pages: 1 -->
+<svg width="72pt" height="118pt"
+ viewBox="0.00 0.00 72.00 117.70" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(0.626087 0.626087) rotate(0) translate(4 184)">
+<title>Anonymous</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-184 112,-184 112,5 -4,5"/>
+<!-- u_2 -->
+<g id="node1" class="node"><title>u_2</title>
+<polygon fill="none" stroke="black" points="10,-158 10,-174 49,-174 49,-158 10,-158"/>
+<text text-anchor="start" x="13.5" y="-163.9" font-family="Courier,monospace" font-size="9.00">SinOsc</text>
+<polygon fill="none" stroke="black" points="51,-158 51,-174 73,-174 73,-158 51,-158"/>
+<text text-anchor="start" x="54" y="-163.9" font-family="Courier,monospace" font-size="9.00">440</text>
+<polygon fill="none" stroke="black" points="75,-158 75,-174 87,-174 87,-158 75,-158"/>
+<text text-anchor="start" x="78" y="-163.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="75,-150 75,-156 87,-156 87,-150 75,-150"/>
+</g>
+<!-- u_3 -->
+<g id="node2" class="node"><title>u_3</title>
+<polygon fill="none" stroke="black" points="63,-86 63,-102 76,-102 76,-86 63,-86"/>
+<text text-anchor="start" x="66.5" y="-91.9" font-family="Courier,monospace" font-size="9.00">&gt;</text>
+<polygon fill="none" stroke="black" points="78,-86 78,-102 84,-102 84,-86 78,-86"/>
+<polygon fill="none" stroke="black" points="86,-86 86,-102 98,-102 98,-86 86,-86"/>
+<text text-anchor="start" x="89" y="-91.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="86,-78 86,-84 98,-84 98,-78 86,-78"/>
+</g>
+<!-- u_2&#45;&gt;u_3 -->
+<g id="edge2" class="edge"><title>u_2:o_0:s&#45;&gt;u_3:i_0</title>
+<path fill="none" stroke="black" d="M81,-150C81,-150 81,-114.551 81,-104.581"/>
+<polygon fill="black" stroke="black" points="80,-102 82,-102 82.0001,-104 80.0001,-104 80,-102"/>
+<polyline fill="none" stroke="black" points="81.0001,-104 81.0001,-104.5 "/>
+</g>
+<!-- u_4 -->
+<g id="node3" class="node"><title>u_4</title>
+<polygon fill="none" stroke="black" points="50,-10 50,-26 73,-26 73,-10 50,-10"/>
+<text text-anchor="start" x="53.5" y="-15.9" font-family="Courier,monospace" font-size="9.00">Out</text>
+<polygon fill="none" stroke="black" points="75,-10 75,-26 87,-26 87,-10 75,-10"/>
+<text text-anchor="start" x="78" y="-15.9" font-family="Courier,monospace" font-size="9.00">0</text>
+<polygon fill="none" stroke="black" points="89,-10 89,-26 95,-26 95,-10 89,-10"/>
+</g>
+<!-- u_3&#45;&gt;u_4 -->
+<g id="edge4" class="edge"><title>u_3:o_0:s&#45;&gt;u_4:i_1</title>
+<path fill="none" stroke="black" d="M92,-78C92,-78 92,-38.8953 92,-28.5081"/>
+<polygon fill="black" stroke="black" points="91,-26 93,-26 93.0001,-28 91.0001,-28 91,-26"/>
+<polyline fill="none" stroke="black" points="92.0001,-28 92.0001,-28.5 "/>
+</g>
+</g>
+</svg>
