bitfieldaudio / OTTO

Sampler, Sequencer, Multi-engine synth and effects - in a box! [WIP]

Home Page:https://bitfieldaudio.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Property system

topisani opened this issue · comments

Mega-issue for property system. Add todo items here

  • Customization point: custom storage wrappers to allow differences between stored type and user facing type
    • Replace handling of (better)enums in individual mixins with a EnumStorage class
  • Better definition of what properties are, and where they are allowed
  • Consider passing the props objects to process calls, making stuff like parameter locking a lot easier.

Idea for mixin: center point. Would probably require steppable. It would be nice to define a point for a property that takes up several steps.
As an example, a pan variable would have the center point as an obvious center point that you would like to be able to hit quickly and easily.

To give an update (topisani can edit or comment if I misrepresent anything):

The current plan is to separate properties to be more thread-specific. So a property on the logic thread might trigger a change in a property on the audio thread. This split should allow for less shared memory and hopefully a bit better cache localization(?)

Another good thing is that this allows for an easier solution of passing property changes to the process calls. This is also useful for a number of other reasons:

  • If we want to make sure that a property is only changed once per audio buffer, we just make sure only to pass the most recent change.
  • It also allow us to apply all changes in a fixed point in the execution tree. Property changes will be "atomic", from the point of view of the DSP, for instance.