Potential bug: Crash when loading VST plugin preset via LUA

Brief description
Over in this thread we are trying to load a VST plugin-preset via LUA using the renoise.app():load_track_device_preset function.

Preset files from internal effects saved as .xrdp appear to load fine, but what about plugins?
When I save the contents of renoise.song().selected_track_device.active_preset_data as an .xrdp file and attempt to load it, I get an instant crash. My question is, is this expected to work?
I assumed it might work because the XML contents look similar, both contain a FilterDevicePreset section.

Should there be a “save” counter-part for the load_track_device_preset function in the API?

It would be awesome if the behavior would be the same as for internal effects, then we could load a VST with preferred settings with a single command.

Somebody else in this forum mentioned that there is another music app that allows to set default settings for each plugin and applies them whenever the plugin is loaded. That would be the ideal behavior we are looking for. There appears to be no “after plugin loaded” callback in the API that would allows achieving this however.

A slightly related request of mine would be if VST-presets could be shown in the preset drop-down list, like it is the case for internal effects. It probably would have to monitor for fxp files in the user library directory. I am digressing, but this would be phenomenal to have.

Steps to reproduce
Load any VST plugin, replace the filepath to be valid and run the code:

filepath = "c:\\tmp\\test.xrdp"
file = io.open(filepath, "w")
file.write(file, renoise.song().selected_track_device.active_preset_data)

Expected results
Inserts an instance of the VST plugin (if no track-device is selected) and applies the preset from the file to the selected track device

Actual results
Instant crash

only tested with Windows 10 as of yet
Renoise 3.2.1 x64

1 Like

It’s not possible to save xrdp presets for plugins from within Renoise. It’s trying it’s best from Lua to do so, but that doesn’t work, so it crashes. This of course should not happen. I’ll fix that.

Until this is fixed, the only way to apply preset data for plugins is setting the active_preset_data directly:

renoise.song().selected_track_device.active_preset_data = some_device_data
# where 'some_device_data' is obtained from some other device of the same type
1 Like