Hi,
BCI2000 filters are not supposed to modify the parameters of other filters, and should only modify their own parameters under very restricted circumstances (once at the end of a Run).
The behavior you observe is by design. The purpose of BCI2000 parameters is to provide information about user choices (and a few automatic system choices) at parameter configuration time, not to transfer information between filters and across modules.
If your code requires certain settings in P3Speller, save those settings to a parameter file, and load it into BCI2000 before clicking SetConfig.
If your code needs to dynamically reconfigure P3Speller during operation, note that it is possible to switch between different speller matrices ("menus") by changing the value of the SpellerMenu state:
http://www.bci2000.org/wiki/index.php/U ... pellerMenu
For dynamic updating of speller matrix entries, you will need to modify the P3Speller application. Purpose of a P300 SignalProcessing module is to determine a degree of likelihood for each stimulus that its response was a P300. Choosing and presenting stimuli, and combining likelihood output of the SignalProcessing module into a final result, is done by the Application module, not from SignalProcessing.
There are a number of posts on the BBS describing how to modify the way stimuli are chosen by the P3Speller application (search for "site:bci2000.org P3Speller" in Google).
Also, some information is available about how SignalProcessing output is combined into a final selection by the P3Speller ("site:bci2000.org likelihood").
Let me know if you need more help.
Regards,
Juergen