clap icon indicating copy to clipboard operation
clap copied to clipboard

Investigate co-simulation

Open ggkountouras opened this issue 2 years ago • 0 comments

Investigate support for co-simulation API for audio plugins

Motivation

Many audio plugins feature detailed simulations of analog equipment (oscillators, filters, etc.). A host could provide a modular environment to load those simulations and patch them together, in a similar manner to analog hardware (e.g. Eurorack). While some hosts today provide these environments, they have several limitations. In particular, audio rate modulation is not guaranteed and feedback loops have at least 1 sample of delay.

Background

The Functional Mock-up Interface (FMI) is a standard that enables exchange of dynamic models. Binaries as well as C code can be included in the model described. There is some support for real-time simulation. Generally, this is considered a requirement in audio plugins that will be used during live performance.

Advantages

  • 0-delay feedback in a modular context.
  • Obviates the need for CV (#59), audio rate automation (#86) and audio ports (#57) extensions.

Disadvantages

  • Performance concerns
    • Calls into a model require chasing 2 pointers: the extension pointer, then the function pointer (C-style vtables).
    • Optimizations that are theoretically possible won't be in practice, as commercial plugins will hide their internals in binary form.
  • FMI abstractions don't necessarily map into legacy plugin (VST3, etc.) abstractions.
  • Models/hosts may have to ship iterative solvers.

ggkountouras avatar May 31 '22 20:05 ggkountouras