             return .Exponential
         case "equalpower":
             return .EqualPower
+        case "scurve":
+            return .SCurve
         default:
             return .Linear
         }

            case .EqualPower:
                //direction will be negative if going up
                scaledControlAmount = pow((0.5 + 0.5 * direction * cos(M_PI * controlAmount)), 0.5)
            }
            curvePoints.append(scaledControlAmount)
            counter += 1

            case .EqualPower:
                //direction will be negative if going up
                scaledControlAmount = pow((0.5 + 0.5 * direction * cos(π * controlAmount)), 0.5)
        
            case .SCurve:
                //direction will be negative if going up
                scaledControlAmount = pow((0.5 + 0.5 * direction * cos(π * controlAmount)), 1)
            }
        
            output!.gain = scaledControlAmount
            stepCounter += 1
        } else {
