         feedbackTextField.stringValue = "Feedback: \(String(format: "%0.1f", delay.feedback))%"
     }
     
+    internal func updateLowPassCutoff() {
+        delay.lowPassCutoff = lowPassCutoffSlider.floatValue
+        lowPassCutoffTextField.stringValue = "Low Pass Cutoff: \(String(format: "%0.0f", delay.lowPassCutoff)) Hz"
+    }
+    
     internal func updateDryWetMix() {
         delay.dryWetMix = dryWetMixSlider.floatValue
         dryWetMixTextField.stringValue = "Dry/Wet Mix: \(String(format: "%0.1f", delay.dryWetMix))%"

    let windowWidth = 400
    let padding = 30
    let sliderHeight = 20
    let numberOfComponents = 3
    
    public let timeSlider:      NSSlider
    public let feedbackSlider:  NSSlider
    public let dryWetMixSlider: NSSlider
    
    let timeTextField:      NSTextField
    let feedbackTextField:  NSTextField
    let dryWetMixTextField: NSTextField
    
    var delay: AKAUDelay
    
    public init(_ control: AKAUDelay) {
        delay = control
        let sliderWidth = windowWidth - 2 * padding
        timeSlider      = NSSlider(frame: NSRect(x: padding, y: 0, width: sliderWidth, height: sliderHeight))
        feedbackSlider  = NSSlider(frame: NSRect(x: padding, y: 0, width: sliderWidth, height: sliderHeight))
        dryWetMixSlider = NSSlider(frame: NSRect(x: padding, y: 0, width: sliderWidth, height: sliderHeight))
     
        timeTextField      = NSTextField(frame: NSRect(x: padding, y: 0, width: sliderWidth, height: sliderHeight))
        feedbackTextField  = NSTextField(frame: NSRect(x: padding, y: 0, width: sliderWidth, height: sliderHeight))
        dryWetMixTextField = NSTextField(frame: NSRect(x: padding, y: 0, width: sliderWidth, height: sliderHeight))
        
        let titleHeightApproximation = 50
        let windowHeight = padding * 2 + titleHeightApproximation + numberOfComponents * 3 * sliderHeight

        feedbackSlider.frame.origin.y = feedbackTextField.frame.origin.y - CGFloat(sliderHeight)
        view.addSubview(feedbackSlider)
        
        lowPassCutoffTextField.stringValue = "Low Pass Cutoff: \(delay.lowPassCutoff) Hz"
        lowPassCutoffTextField.editable = false
        lowPassCutoffTextField.drawsBackground = false
        lowPassCutoffTextField.bezeled = false
        lowPassCutoffTextField.frame.origin.y = feedbackSlider.frame.origin.y - 2 * CGFloat(sliderHeight)
        view.addSubview(lowPassCutoffTextField)
        
        lowPassCutoffSlider.target = self
        lowPassCutoffSlider.action = "updateLowPassCutoff"
        lowPassCutoffSlider.minValue = 0
        lowPassCutoffSlider.maxValue = 20000
        lowPassCutoffSlider.floatValue = delay.lowPassCutoff
        lowPassCutoffSlider.frame.origin.y = lowPassCutoffTextField.frame.origin.y - CGFloat(sliderHeight)
        view.addSubview(lowPassCutoffSlider)
        
        dryWetMixTextField.stringValue = "Dry/Wet Mix: \(delay.dryWetMix)%"
        dryWetMixTextField.editable = false
        dryWetMixTextField.drawsBackground = false
        dryWetMixTextField.bezeled = false
        dryWetMixTextField.frame.origin.y = lowPassCutoffSlider.frame.origin.y - 2 * CGFloat(sliderHeight)
        view.addSubview(dryWetMixTextField)
        
        dryWetMixSlider.target = self
