   phase by that amount. (See the
   [documentation](https://github.com/brunchboy/afterglow/blob/master/doc/oscillators.adoc#sine-oscillators)
   for an expanded explanation illustrated with graphs.)"
+  {:deprecated "0.1.6"}
   [& {:keys [phrase-ratio phase] :or {phrase-ratio 1 phase 0.0}}]
-  (let [adjusted-phase (- phase 0.25)
-        two-pi (* 2.0 Math/PI)]
-    (fn [^afterglow.rhythm.MetronomeSnapshot snapshot]
-      (+ 0.5 (* 0.5 (Math/sin (* two-pi (adjust-phase (rhythm/snapshot-phrase-phase snapshot phrase-ratio)
-                                                      adjusted-phase))))))))
+  (sine :interval :phrase :interval-ratio phrase-ratio :phase phase))
 
 (defn- evaluate-oscillator
   "Handles the calculation of an oscillator based on dynamic parameter

  oscillator from the underlying metronome phase by that amount. (See the
  [documentation](https://github.com/brunchboy/afterglow/blob/master/doc/oscillators.adoc#triangle-oscillators)
  for an expanded explanation illustrated with graphs.)"
  [& {:keys [phrase-ratio phase] :or {phrase-ratio 1 phase 0.0}}]
  (triangle :interval :phrase :interval-ratio phrase-ratio :phase phase))

(defn square
  "Returns an oscillator which generates a square wave relative to the
  phase of the current beat. Specifying a value with `:width` adjusts
  how much of the time the wave is _on_ (high); the default is `0.5`,
  lower values cause it to turn off sooner, larger values later. In
  any case the width must be greater than `0.0` and less than `1.0`.
  Supplying a value with `:beat-ratio` will run the oscillator at the
  specified fraction or multiple of a beat, and supplying a `:phase`
  will offset the oscillator from the underlying metronome phase by
  that amount. (See the
  [documentation](https://github.com/brunchboy/afterglow/blob/master/doc/oscillators.adoc#square-oscillators)
  for an expanded explanation illustrated with graphs.)"
  [& {:keys [width beat-ratio phase] :or {width 0.5 beat-ratio 1 phase 0.0}}]
  (when-not (and (> width 0.0) (< width 1.0))
    (throw (IllegalArgumentException. "width must fall between 0.0 and 1.0")))
  (fn [^afterglow.rhythm.MetronomeSnapshot snapshot]
    (let [reached (adjust-phase (rhythm/snapshot-beat-phase snapshot beat-ratio) phase)]
      (if (< reached width)
        1.0
        0.0))))

(defn square-beat
  "In version 0.1.6 this was replaced with the [[square]] function,

  (params/validate-param-type interval clojure.lang.Keyword)
  (let [interval-ratio (params/bind-keyword-param interval-ratio Number 1)
        phase (params/bind-keyword-param phase Number 0)]
    (if (and (not-any? params/param? [interval interval-ratio phase]) (fn? shape-fn))
      (fixed-oscillator shape-fn interval interval-ratio phase)  ; Optimized case with no dynamic inputs
      ;; We have a variable parameter or variable shape function; need to do a bit more work
      (if (fn? shape-fn)
        (simple-oscillator shape-fn interval interval-ratio phase)
