iosswiftaudiokitvdspakoperation

Perform basic arithmetic operations on AudioKit FM oscillator parameters: Interpolation & time Transition


Does AudioKit provide a method to calculate interpolated values of discrete array members? Does AudioKit provide a method to smooth transition operation between parameters of an oscillator like baseFrequency, AKOperation.periodicTrigger or hold?

Below the code I use for FM generation:

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))

For input parameter interpolated values of Frequency Cycle and Duty shall be calculated by interpolation based on the table (array) below:

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

The transition of values (for Freq., Cycle ans Duty) shall be smoothen based on input parameter P1. Is this what AKComputedParameter e.g. smoothDelay is made for?

How do I tell AudioKit to apply AKComputedParameter?

Do you have a sample code (code snippet) for achievement of interpolation/transition operation with application to oscillator based on the code above? Either based on AK or vDSP methods.

I’m not quiet sure on how to apply https://audiokit.io/docs/Protocols/AKComputedParameter.html


Solution

  • I think this question was downvoted somewhat because it seems like you're asking for too much of an actual implementation with that table of values. I'm going to ignore that and say that however you decide to change the parameters of the oscillator in your app logic, you can make the transitions smooth by portamento'ing the values.

    So, in your case for frequency you would replace Synth.frequency with a parameter you set that you would then portamento like AKOperation.parameters[0].portamento(halfTime: 0.5)

    See an example for using parameters here: https://audiokit.io/playgrounds/Synthesis/Plucked%20String%20Operation/