-
Notifications
You must be signed in to change notification settings - Fork 34
Roles of the PresetBank
Guillaume Piolat edited this page Jan 11, 2021
·
6 revisions
Preset is an aggregate (preset name + N x normalized parameters)
PresetBank is an aggregate (M x Presets + "current" index)
PresetBank and Preset fulfills many different roles that we need to analyze.
(this is the current state of Dplug as of Jan 2021)
dplug.client.client.Client
- holds factory presets
- gives access to the PresetBank as a part of itself
- can create a default Preset
LV2 Client:
- doesn't need the presetbank to save/restore, the host deals with that with parameters
- ergo, upgrading chunks would not allow state without using the LV2 extension for this
- generating the LV2 presets iterate the PresetBank and hence keep the normalization to make the .ttl
VST3 Client:
- save/restore with state chunks from the presetbank (but state chunks have nothing to do with the presetbank actually)
- can get preset names (but not set them)
- expose a fake program change parameter, which is used by the host to change the preset (again: normalized)
- setting this parameter calls
_presetBank.loadPresetFromHost, which does the following:- calls
putCurrentStateInCurrentPresetwhich store current state into current preset (!!?) - calls
loadFromHostwhich put the nth preset values into the parameters
- calls
AAX Client:
- save/restore with state chunks from the presetbank
- generating the AAX presets iterate the PresetBank and hence keep the normalization to make the .tfx, where the state chunk is wrapped.
AU Client:
- save/restore with state chunks from the presetbank, wrapped inside
- can get the current Preset values and name
- can set presets, calling
loadPresetFromHost - can appends a new default preset and load immediately, using
addNewDefaultPresetFromHost(!!?) - current index doesn't seem to be used?
- describing factory presets (
kAudioUnitProperty_FactoryPresets) needs a lot of CoreFoundation scaffolding
VST2 Client:
- save/restore with host-provided mechanism, we'd like to go into chunks instead
- can set and get the current preset index. Setting is done with:
loadPresetFromHost - can get and set preset name
-
effGetChunkreturns "preset" and "bank" chunks: one contain just the preset and the other contains the whole bank. They are only used in VST2.4 when chunks are activated.