Вот еще один Apple , карандаш эксперимента, PencilSynth является AudioKit питания синтезатора (MIS) с помощью карандаша в качестве контроллера джойстика. Он основан на демонстрации TouchRegions в AudioKit и работает следующим образом:
- Дано:
давай коснемся:
UITouch
- Горизонтальное положение карандаша на экране определяет выходную частоту:
пусть частота =
touch.locationInView(view).x / view.bounds.width
- Вертикальная позиция карандаша на экране определяет выходной модулирующий множитель:
пусть modulatingMultiplier =
touch.locationInView(view).y / view.bounds.height
- Угол высоты карандаша определяет множитель выходной несущей:
let carrierMultiplier =
(halfPi - touch.altitudeAngle) / halfPi
- Угол азимута карандаша определяет выходной индекс модуляции:
let modulationIndex =
(pi + touch.azimuthAngleInView(view)) / (pi * 2)
Эти четыре нормализованных значения включены в экземпляр FMOscillator (который взят непосредственно из демонстрации TouchRegions):
oscillator.frequency.value = (oscillator.frequency.maximum - oscillator.frequency.minimum) * Float(frequency) oscillator.modulatingMultiplier.value = (oscillator.modulatingMultiplier.maximum -oscillator.modulatingMultiplier.minimum) * Float(modulatingMultiplier) oscillator.carrierMultiplier.value = (oscillator.carrierMultiplier.maximum -oscillator.carrierMultiplier.minimum) * Float(carrierMultiplier) oscillator.modulationIndex.value = (oscillator.modulationIndex.maximum - oscillator.modulationIndex.minimum) * Float(modulationIndex)
Ориентация и рендеринг «виртуального карандаша» взяты из моей демонстрации PencilController .
Репозиторий GitHub содержит источник AudioKit, но весь мой код существует в классе контроллера представления .
В заключение, Apple Pencil открывает мир новых парадигм интерактивного дизайна (несмотря на то, что Джони Айв может сказать нам !). Я думаю, что PencilSynth и мое приложение для обработки изображений на основе карандаша демонстрируют, что карандаш является отличным устройством ввода для управления непрерывными значениями в нескольких измерениях.
Как всегда, исходный код этого проекта доступен в моем репозитории GitHub здесь . Наслаждайтесь!