AudioKit:如何从 AnalogSynthX-Example 制作旋钮指数而不是线性?
AudioKit: How to make Knob from AnalogSynthX-Example exponential instead of linear?
在大多数情况下,对于音量控制,如果旋钮值按指数或对数而不是线性变化会更好。
在 AudioKit AnalogSynthX-Example class 的 Knob.swift 中,将值缩放到任何类型曲线的最佳位置在哪里?
我想到了
func setPercentagesWithTouchPoint(_ touchPoint: CGPoint) {
// Knobs assume up or right is increasing, and down or left is decreasing
let horizontalChange = Double(touchPoint.x - lastX) * knobSensitivity
value += horizontalChange * (maximum - minimum)
let verticalChange = Double(touchPoint.y - lastY) * knobSensitivity
value -= verticalChange * (maximum - minimum)
lastX = touchPoint.x
lastY = touchPoint.y
// TODO: map to exponential/log/any curve if -> knobType is .exp
// ...
delegate?.updateKnobValue(value, tag: self.tag)
}
但也许有人已经发明了这个轮子?谢谢!
感谢您的提问。 Analog Synth X 存储库中的截止旋钮以对数方式缩放。你可以看一个简单的例子。
另外,AudioKit ROM 播放器存储库中有新的旋钮。这些改进的旋钮控件具有可调节的锥度曲线缩放比例和范围设置:
在大多数情况下,对于音量控制,如果旋钮值按指数或对数而不是线性变化会更好。 在 AudioKit AnalogSynthX-Example class 的 Knob.swift 中,将值缩放到任何类型曲线的最佳位置在哪里?
我想到了
func setPercentagesWithTouchPoint(_ touchPoint: CGPoint) {
// Knobs assume up or right is increasing, and down or left is decreasing
let horizontalChange = Double(touchPoint.x - lastX) * knobSensitivity
value += horizontalChange * (maximum - minimum)
let verticalChange = Double(touchPoint.y - lastY) * knobSensitivity
value -= verticalChange * (maximum - minimum)
lastX = touchPoint.x
lastY = touchPoint.y
// TODO: map to exponential/log/any curve if -> knobType is .exp
// ...
delegate?.updateKnobValue(value, tag: self.tag)
}
但也许有人已经发明了这个轮子?谢谢!
感谢您的提问。 Analog Synth X 存储库中的截止旋钮以对数方式缩放。你可以看一个简单的例子。
另外,AudioKit ROM 播放器存储库中有新的旋钮。这些改进的旋钮控件具有可调节的锥度曲线缩放比例和范围设置: