                    speaker depending on the setting of the orientation
                    arg, see below." }
 
-            {:name "level",
-             :default 1.0,
-             :doc "a control rate level input."}
-
-            {:name "width",
-             :default 2.0,
-             :doc "The width of the panning envelope. Nominally this is
+           {:name "level",
+            :default 1.0,
+            :doc "a control rate level input."}
+
+           {:name "width",
+            :default 2.0,
+            :doc "The width of the panning envelope. Nominally this is
                    2.0 which pans between pairs of adjacent
                    speakers. Width values greater than two will spread
                    the pan over greater numbers of speakers. Width
                    values less than one will leave silent gaps between
                    speakers." }
 
-            {:name "orientation",
-             :default 0.5,
-             :doc "Should be zero if the front is a vertex of the
+           {:name "orientation",
+            :default 0.5,
+            :doc "Should be zero if the front is a vertex of the
                    polygon. The first speaker will be directly in
                    front. Should be 0.5 if the front bisects a side of
                    the polygon. Then the first speaker will be the one
                    left of center. Default is 0.5." }]
-     :check (nth-input-stream? 1)
-     :doc "Multichannel equal power panner."}
-
-    {:name "XFade2",
-     :args [{:name "inA"
-             :doc "input signal A"}
-
-            {:name "inB"
-             :doc "input signal B"}
-
-            {:name "pan",
-             :default 0.0
-             :doc "Pan between the two input signals with -1 being inA
+    :check (nth-input-stream? 1)
+    :doc "Multichannel equal power panner."}
+
+   {:name "XFade2",
+    :args [{:name "inA"
+            :doc "input signal A"}
+
+           {:name "inB"
+            :doc "input signal B"}
+
+           {:name "pan",
+            :default 0.0
+            :doc "Pan between the two input signals with -1 being inA
                    only and 1 being inB only with values between being a
                    mix of the two." }
 
-            {:name "level",
-             :default 1.0
-             :doc "Output level - 0 being silent and 1 being original
+           {:name "level",
+            :default 1.0
+            :doc "Output level - 0 being silent and 1 being original
                    volume"}]
 
-     :check [(when-ar (first-n-inputs-ar 2))
-             (nth-input-stream? 0)
-             (nth-input-stream? 1)]
-     :rates #{:ar :kr}
-     :doc "Equal power two channel cross fade"}
-
-    {:name "LinXFade2",
-     :args [{:name "inA",
-             :doc "input signal A"}
-
-            {:name "inB",
-             :doc "input signal B"}
-
-            {:name "pan",
-             :default 0.0,
-             :doc "cross fade position from -1 to +1"}
-
-            {:name "level",
-             :default 1.0,
-             :doc "a control rate level input"}]
-
-     :rates #{:ar :kr}
-     :doc "Two channel linear crossfader."
-     :check [(when-ar (first-n-inputs-ar 2))
-             (nth-input-stream? 0)
-             (nth-input-stream? 1)]}]))
+    :check [(when-ar (first-n-inputs-ar 2))
+            (nth-input-stream? 0)
+            (nth-input-stream? 1)]
+    :rates #{:ar :kr}
+    :doc "Equal power two channel cross fade"}
+
+   {:name "LinXFade2",
+    :args [{:name "inA",
+            :doc "input signal A"}
+
+           {:name "inB",
+            :doc "input signal B"}
+
+           {:name "pan",
+            :default 0.0,
+            :doc "cross fade position from -1 to +1"}
+
+           {:name "level",
+            :default 1.0,
+            :doc "a control rate level input"}]
+
+    :rates #{:ar :kr}
+    :doc "Two channel linear crossfader."
+    :check [(when-ar (first-n-inputs-ar 2))
+            (nth-input-stream? 0)
+            (nth-input-stream? 1)]}])

           right. The output of Balance2 remains a stereo signal." }


    {:name "Rotate2",
     :args [{:name "x",
             :doc "input signal"}

            {:name "y",
             :doc "input signal"}

            {:name "pos",
             :default 0.0,
             :doc "angle to rotate around the circle from -1 to +1. -1
                   is 180 degrees, -0.5 is left, 0 is forward, +0.5 is
                   right, +1 is behind." }]
     :num-outs 2
     :check [(nth-input-stream? 0)
             (nth-input-stream? 1)]
     :doc "Rotate2 can be used for rotating an ambisonic B-format sound
           field around an axis.

           Rotate2 does an equal power rotation so it also works well on

           rotation around a circle." }


   {:name "PanB",
    :args [{:name "in",
            :doc "input signal"}

           {:name "azimuth",
            :default 0.0,
            :doc "in radians, -pi to +pi"}

           {:name "elevation",
            :default 0.0,
            :doc "in radians, -0.5pi to +0.5pi"}

           {:name "gain",
            :default 1.0,
            :doc "a control rate level input"}]

    :num-outs 4
    :check (nth-input-stream? 0)
    :doc "Ambisonic B format panner. Output channels are in order
           W,X,Y,Z." }


   {:name "PanB2",
    :args [{:name "in",
            :doc "input signal"}

           {:name "azimuth",
            :default 0.0,
            :doc "position around the circle from -1 to +1. -1 is
                   behind, -0.5 is left, 0 is forward, +0.5 is right, +1
                   is behind." }

           {:name "gain",
            :default 1.0,
            :doc "amplitude control"}]

    :num-outs 3
    :check (nth-input-stream? 0)
    :doc "Encode a mono signal to two dimensional ambisonic B-format."}


   {:name "BiPanB2",
    :args [{:name "in-a",
            :doc "input signal A"}

           {:name "in-b",
            :doc "input signal B"}

           {:name "azimuth",
            :doc "position around the circle from -1 to +1. -1 is
                   behind, -0.5 is left, 0 is forward, +0.5 is right, +1
                   is behind." }

           {:name "gain",
            :default 1.0,
            :doc "amplitude control"}]

    :num-outs 3
    :check [(when-ar (first-n-inputs-ar 2))
            (nth-input-stream? 0)
            (nth-input-stream? 1)]
    :doc "Encode a two channel signal to two dimensional ambisonic
           B-format.  This puts two channels at opposite poles of a 2D
           ambisonic field.  This is one way to map a stereo sound onto
           a soundfield.  It is equivalent to:
