         self.output = output
     }
     
+    /// Schedule a fade to start after fireTime
+    ///
+    /// - parameter fireTime: Time to start the fade at
+    ///
     func scheduleFade(fireTime: Double) {
         //this schedules a fade to start after fireTime + the offset
         let millis = NSDate().timeIntervalSince1970*1000

        output!.gain = initialVolume
    }
    
    public func start() { //starts the fade WITH the offset
        scheduleFade(0.0)
    }
    public func startImmediately() { //skips the offset
        //this starts the recurring timer
        let millis = NSDate().timeIntervalSince1970*1000

        if numberOfSteps == 0{
            endFade()
        }else if stepCounter <= numberOfSteps {
            //normalized 0-1 value
            let controlAmount: Double = Double(stepCounter) / Double(numberOfSteps)
            var scaledControlAmount: Double = 0.0
            
            switch curveType {
