Выполнение базовых c арифметических c операций с параметрами генератора AudioKit FM: интерполяция и переход по времени - PullRequest
0 голосов
/ 31 января 2020

Предоставляет ли AudioKit метод для вычисления интерполированных значений отдельных элементов массива? Обеспечивает ли AudioKit метод сглаживания операции перехода между параметрами генератора, такими как baseFrequency, AKOperation.periodicTrigger или hold?

Ниже кода, который я использую для генерации FM:

let oscillator = AKOperation.fmOscillator(baseFrequency: Synth.frequency,
                                                      carrierMultiplier: 2,
                                                      modulatingMultiplier: 0.8,
                                                      modulationIndex: 1,
                                                      amplitude: Synth.amplitude.triggeredWithEnvelope(
                                                        trigger: AKOperation.periodicTrigger(period: Synth.cyclic),
                                                        attack: 0.01,
                                                        hold: Synth.hold,
                                                        release: 0.01))

Для входного параметра интерполированные значения частотного цикла и режима работы рассчитываются путем интерполяции на основе приведенной ниже таблицы (массива):

P1      Freq.   Cycle   Duty %

-10     200     100     100

-3.04   405     100     100 

-0.51   300     500     100 

-0.50   200     800     5 

0.09        400     600     10 

0.10        400     600     50 

1.16        550     552     52 

2.67        763     483     55 

4.24        985     412     58 

6.00        1234    322     62 

8.00        1517    241     66 

10.00   1800    150     70

Переход значений (для частоты, цикла и режима) должен быть сглажен на основе входного параметра P1. Это то, для чего предназначен AKComputedParameter, например smoothDelay?

Как сказать AudioKit применить AKComputedParameter?

У вас есть пример кода (фрагмент кода) для выполнения операции интерполяции / перехода с приложением к генератору на основе кода выше? Либо на основе методов AK или vDSP.

Я не уверен, как применять https://audiokit.io/docs/Protocols/AKComputedParameter.html

1 Ответ

0 голосов
/ 15 февраля 2020

Я думаю, что этот вопрос был несколько опущен, потому что кажется, что вы просите слишком много фактической реализации с этой таблицей значений. Я собираюсь проигнорировать это и сказать, что как бы вы ни решили изменить параметры генератора в логике вашего приложения c, вы можете сделать переходы плавными, портаментируя значения.

Итак, в В вашем случае для частоты вы бы заменили Synth.frequency на заданный вами параметр, который вы бы затем использовали как портаменто, например AKOperation.parameters[0].portamento(halfTime: 0.5)

. Пример использования параметров здесь: https://audiokit.io/playgrounds/Synthesis/Plucked%20String%20Operation/

...