I have recently started using jvstwrapper and also the juce framework. It appears that the VST SDK has some concept of different "programs" for your instrument. For example both jvstwrapper and juce have classes which you inherit from in order to create your instrument. These classes require a number of methods to be implemented. In both cases, (and detailed in the VST SDK), you must implement methods "setProgram", "getProgramName", "setProgramName", "getNumPrograms" etc. I know that each program appears to hold a bunch of settings for the instrument. But in what cases are they actually used? Plus how many are there supposed to be?