     @parameterType = Filter.BW
     @BW = bw
     @recalculateCoefficients()
+    bw
 
   setS: (s) ->
     @parameterType = Filter.S

      # Using localTime makes it easier to anticipate the interference of
      # multiple oscillators
      @startTime = time if @startTime == -1
      localTime = time - @startTime

      _phase = if @numericPhase? then @numericPhase else @phase(localTime)
      _frequency = if @numericFrequency? then @numericFrequency else @frequency(localTime)
      _amplitude = if @numericAmplitude? then @numericAmplitude else @amplitude(localTime)

      _amplitude * @oscillatorFunction((_frequency * localTime) + _phase)

    generator.displayName = "Oscillator Sound Generator"

    generator.getFrequency = => @frequency
    generator.setFrequency = (frequency) =>
      @frequency = frequency
      if Function.isFunction(@frequency)
        @numericFrequency = undefined
      else
        @numericFrequency = @frequency

    generator.getPhase = => @phase
    generator.setPhase = (phase) =>
      @phase = phase
      if Function.isFunction(@phase)
        @numericPhase = undefined
      else
        @numericPhase = @phase

    generator.getAmplitude = => @amplitude
    generator.setAmplitude = (amplitude) =>
      @amplitude = amplitude
      if Function.isFunction(@amplitude)
        @numericAmplitude = undefined
      else
        @numericAmplitude = @amplitude

    # Explicit return necessary in constructor
    return generator

    @parameterType = Filter.Q
    @Q = Math.max(Math.min(q, 115.0), 0.001)
    @recalculateCoefficients()
    q

  #
  # Advanced filter parameters
