From: Chris C. <ca...@al...> - 2004-09-22 08:47:49
|
btw, I realised shortly after sending that description (but when I was already well away from the computer) that it probably wouldn't actually work for the particular plugin we were originally talking about, which is NI Battery. I'll explain -- and hang on here, as this is going to be lengthy. The reason for this is a limitation in the way VST can be mapped on to DSSI. A VST plugin has the GUI and the audio code in the same code unit, whereas DSSI separates them out into two processes (or rather one plugin and one separate process). This means that we need to be able to identify and isolate the communications made between the GUI and the audio code in the VST, so as to send those communications over the DSSI GUI-host link and to the audio part of the plugin. This is easy for communications that are automatable in VST (i.e. port value and program changes), but impossible for anything the GUI communicates to the audio code via a back-channel not exposed through the VST API, such as configuration or MIDI data. What this means in practice is that any feature in a VST plugin that (i) requires the plugin's own GUI to work (i.e. isn't accessible directly from the host) and (ii) involves text or MIDI data probably won't work in the DSSI wrapper. The most common example is those little test keyboard widgets you get in VST GUIs -- there's no way to extract the data being sent from the widget to the audio part of the VST plugin in order to make them work in a DSSI wrappered version of a VST plugin (although the equivalent thing in a native DSSI plugin would work without problems). That particular example doesn't matter a great deal. A more serious example is any plugin that loads sample or bank data from files identified by the user via the GUI, and that almost certainly includes Battery (though I've never used it). Configuration data like that _could_ be mapped into the DSSI version of the plugin just fine, if only it were made available through the official VST API at all, but it isn't -- just as a VST host knows nothing about such configuration changes, neither can the DSSI wrapper, and so it can't map it into the DSSI configuration model. As a result, controls like that will appear to be working in the plugin's GUI but they won't actually do anything in the plugin. The upshot is that complex plugins almost always are better run via jack_fst. Simpler synths with only built-in banks and editable ports and selectable programs should work fine. The test is: If I was running this in Cubase SX, would I have to open the plugin's own GUI window to use it at all, or could I control everything I need (however clumsily) straight from the host? If the former, it's probably too complex for dssi-vst. Chris |