On Tuesday 10 December 2002 08.00, Tim Hockin wrote:
It doesn't
have to, unless it actually cares. If you save a
preset with a "bad" value in some field, the plugin will just fix
it when you load the preset.
There's just one problem: In what order do you write the controls
back to ensure you end up with the exact same result?
The order the plugin presents them to you?
Yes, but requiring that would mean you have to rewrite all controls
whenever you change one of them, even for automation.
If there are
dependencies between controls can we have the plugin author be
responsible for making their indices reflect it? Otherwise we can
add yet another field to controls which says the order in which to
write presets. Ick. Serialize/deserialize solves this nicely, btw
:)
Aaargh! Nooo!!! :-)
Anyway, I think this issue has been resolved rather nicely already.
We concluded that if a plugin for some reason does not want to
"accept" certain values, it has to deal with that internally, in a
concistent way which depends only on the current values of controls
involved.
It's real simple actually; just have a single function
fix_bad_values() that you call whenever one of the interdependent
controls changes. Then it doesn't matter in which order you write the
controls; the function will always do the same thing.
Oh, and it seems that this applies to 1 plugin in 100 or so - and
that one is probably just a poor design in the first place. :-)
Anyway, if the
host *does* keep track of "last value written",
supporting the "I'll make that X instead!" event is just a matter
of writing X into that "last value written" variable.
Exactly. If a plug doesn't support it, no big deal. If it does,
cool.
Yeah, but that turned out to be the easy part... The interface may
look simple, but it implies quite a bit of hairy situations.
In short, not worth the effort, especially considering that it's just
an emergency exit for bad plugin designs.
//David Olofson - Programmer, Composer, Open Source Advocate
.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`--------------------------->
http://olofson.net/audiality -'
.- M A I A -------------------------------------------------.
| The Multimedia Application Integration Architecture |
`---------------------------->
http://www.linuxdj.com/maia -'
---
http://olofson.net ---
http://www.reologica.se ---