FXB behavior question/suggestion

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Hello.

FXP/FXB is poorly documented, a lot of people hate it, many VSTis use their own proprietary state save/load system. Now that's out of the way, no need to clog this thread with "FXB sucks!"

On to business: suppose a VSTi offers a factory bank of presets. The user visits a few presets, changes a few settings on some presets, renames a couple of the changed presets.

As far as I can tell, there's simply no way within the FXP/FXB framework for the user to either create an empty bank for his presets, or to save his presets as a bank, without having the bank also contain all of the factory presets that he didn't modify. Is that a correct assessment?

Also as far as I can tell, once the user has started saving presets, there's no way within the FXP/FXB framework for him to restore the factory presets in the slots where he saved an FXP. Is that a correct assessment?

However, the VSTi itself gets to decide what it does when the host asks for the bank data. The VSTi could save only the modified presets, so if the user saves an FXB and then reloads it, he gets a bank that contains only his presets and not the factory ones. I imagine that behavior would delight some people and frustrate others. On balance do you (gentle readers) think that would be good or bad behavior?

Post

Well, In most synth the factory presets are hard coded, which means a "factory reset" is just a matter of reloading the synth.

And yes, the bank size is dictated by the synth, so there are no partial or empty banks.

Some synths have banks of "init" presets, which I suppose would qualify as being empty. And making one of those, well you'd have to make an fxp to insert at all slots in the bank, and then save that.

Post

I guess something like an "empty" preset would mostly make sense for a modular thingie; for a fixed architecture synth, you'll mostly have just a collection of knob values (ok, maybe some loaded wavedata, or envelope vectors, or whatever, but you get the idea) and hence the concept of "empty preset" indeed is basically useless; the best you can get is an "init" preset which would be something with anything tuned to as-neutral-as-possible values for easy forming for something else.

Anyway, if nobody explained me anything about preset-handling, I'd just assume it works like this: load a synth, and you'll get a bank of factory presets. Load another bank, and you get some other presets. Save a bank, and it'll dump the current collection, whether factory, user-tweaked, or a mixture, into a file for later loading. Save a project, and when it comes back it'll have the same set of presets it had when the project was saved. No?

Why does it matter if factory presets get saved when they haven't been modified? Why does it matter if factory presets get replaced in projects? Creating a new instance would usually give you a new set of factory presets anyway, no?

Like Rock said, you can always save your own init.fxp, and load that on top of any sound you wanna get rid of. It's not like an full-empty bank as such is useful anyway, other than as a starting point for full-bank creation? You could put a "clear-this-sound" button on GUI to load a built-in Init-patch on top of what is currently loaded, if you wanted? And it's not like it's impossible to put another button for "restore to factory patch" function, though I guess it's just easier to create a new instance, save the desired patch, load it into the original instance with rest of your bank (so you get to control which sound it replaces) and then dump the bank again?

Isn't that how most hardware synths with user-replaceable presets have traditionally worked as well?

Post Reply

Return to “DSP and Plugin Development”