This is how it works. Say you have a… church organ patch loaded. Each note corresponds to one sample. No velocity layers, round robins or stuff like that in this example. You store the adress of each sample in a note Array with 128 positions, one for each note. In reality you probably have sampled at the most each third note or so and do some repitching later, so many of the notes in the note Array points to the sampe sample and the first and last positions are probably nullptr:s while your organ haven’t a range of 128 notes, but let’s keep it simple now…
You press mid C. The sample in noteArray[60] (or more precisely just the address of it) are put in another array, lets call it the voice array (it could be a circular buffer or whatever you think is appropriate.) From this voice array, the samples are read for subseq adsr-handling, repitching etc and finally put in the AudioBuffer in processBlock().
You press another key, E, and the sample address in noteArray[64] is copied to the voiceArray, which now contains two voices, C and E and finally you add noteArray[67] to the voiceArray. Now the C major chord will be heard as long as you keep your fingers down. Note that all sample access is through the voiceArray, which is iterated in each processBlock call so each note/voice is getting its due handling.
Now you long for a rockier sound and switch to the Rock organ patch. Your synth loads it in another noteArray (or just the first handful of samples for each key as outlined above). And swaps the church organ array for the rock organ array.
What happens? Nothing. The C-chord of the church organ is still being played and will still be heard as long as you keep the three keys down. Remember the samples is not read from the noteArray, but from the voiceArray whose samples are still valid as nothing has yet gone to the destructor.
Now lift the C-key and the synth engine will start the decay/release handling of that voice in voiceArray position 0. The last thing this voice does after it’s decayed below some threshold level is removing itself from the voice array.
If you now press the C-key once again, the newly loaded rock organ patch will be copied from the noteArray to the next free entry in the voiceArray and subsequently start to play. At this moment one rock organ voice/sample and three church organ voices/samples are being played (the C of the church organ is still sounding in it’s decay phase and will continue to do so the next five, ten seconds or so depending on the church size.
When at some point in the future you lift your fingers from the E and G keys and wait til they have duely faded out and removed themselves from the voiceArray, none of the church organ samples are any longer in use and the whole church organ patch can be fed to the destructor. (use ref counting or whatever feels appropriate).
Hope this better explains why you need neither fade nor silence when switching patches.