OTTO
OTTO copied to clipboard
Property system
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
- [ ] Replace handling of (better)enums in individual mixins with a
- [x] ~Better definition of what properties are, and where they are allowed~
- [x] ~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.