We were recently contacted about a problem where the new Arturia Prophet V3 plugin would not correctly restore its state when switching scenes in Forte.  The resolution of this problem was in two stages.


1. Forte's DeviceCompatibility.xml file needed to be updated to save/restore FXB banks and nothing else.   By default Forte probed the plugin and detected that it could also save parameters.  So Forte saved and restored parameters as well, which was not the correct thing.  The latest DeviceCompatibility file is posted at http://www.brainspawn.com/documents/DeviceCompatibility.xml and will also be including in upcoming program updates (this is written on 9/5/15 and the current version is 4.2.7 which does not yet have this fix).  The new compatibility file can be saved in the program data folder (same folder as OPTIONS.INI).


2.  After this problem was resolved, we discovered the plugin still didn't save and restore all buttons and knobs correctly.  Eventually, the customer traced this down.  It turns out the Release button is tied by default to CC64.  When Forte changes scenes is may optionally also send a "Reset All Controllers" message, which as altering the state of this button unexpectedly.


So if your plugin is not restoring state correctly, it is likely to either be an issue with how Forte saves/restores scene data (controlled by DeviceCompatibility.xml because this varies with plugin), or it could be caused by Forte's controller modifications on scene recall.


Change the Device Compatibility file

Forte tries to make a good decision about how to get and set VST configuration (chunks or FXB/FXP data). However, sometimes a plugin wants something different to get or set its entire state. Forte has a way to override scene capture and recall behavior for individual plugins. A file called "DeviceCompatibility.xml" in the install directory contains plugin-specific settings which can override the default behavior. Plugins are referenced in this file by either CLSID or VST ID. If your favorite plugin does not correctly restore its settings on scene change, add it to this file. Note that this MUST be a valid XML file in order for the feature to work.


An example entry would be:


<Device Name="KarmaFX">
    <saveFXBbool="1"/>
    <saveFXPbool="0"/>
    <saveProgramNumberbool="0"/>
    <saveParamsbool="0"/>
</Device>


This instructs Forte how to save scenes, not restore them, so you must restart Forte, reload your rack, and recapture your scenes.

The entry is defined by the Device tag.  Plugins can be identified in several ways:


  • Name="<partial case-insensitive plugin name>" - affects any plugin that matches the plugin name
  • Name="<partial case-insensitive plugin vendor name>" - affects any plugin by a vendor
  • CLSID="<a  big string of letters and numbers>" - affects a specific plugin.  A CLSID is how Forte unambiguously identifies a plugin.  This value matches the value Forte uses to identify the plugin in its plugin cache file (plugins.xml).

The flags that can be used within a Device element include:

 

  • saveFXB - if 1, save an FXB chunk with a scene
  • saveFXP - if 1, save an FXP chunk with a scene
  • saveProgramNumber - if 1, save the VST program number with a scene
  • saveParams - if 1 save the VST parameters with a scene (typically only effects would use this option)
  • isVSTi - if 1 forces a plugin to be identified as an instrument plugins.  This is useful for example with Guitar Rig which is an effect plugin, not an instrument, but since you would typically want it to have its own module and be fed by audio input, you can force it to be treated as an instrument.


MIDI Messages Sent on Scene Change

After Forte updates the plugin's data (FXP, FXB, params, etc.) on a scene change, it sends various optional MIDI messages like All Notes Off (which sends CC123 and CC64=0), All Sounds Off, Reset All Controllers, and program changes.  It is up to the plugin how it reacts to these MIDI messages.  For instance, the Arturia plugins can interpret the CC64=0 as an instruction to turn off the "Release" button on the synth.  The fix for problems like this are to turn off these Scene Command options and update the scene(s).