Thanks for your response. I had this on my mind for quite some time. I tested several Output variations using simple code and a button to send a Chan 1 CC midi and monitored on MDP log.
IF LOAD
ASS I0 = 00
END
SND B2 I0 0A
ASS I0 = 01
With MDP running, I0 = 00 did not occur (expected)
Activating another app and then reopening MDP also did not trigger the LOAD
However, editing the SB code (I changed SND from 00 to 0A) did trigger the LOAD statement
AND closing the MDP so it was not running in the background and then reopening also did trigger the LOAD
Neither is desirable to implement, thus the only viable solution is, as you said, set up a button to initiate any variables at the beginning of a session that uses SB.
For the Input SB it may be that the only viable approach is for the user to close MDP so it is not running, then reopen it to start his session or find a way not to require any initialization.
Except for the initial run, I program to initialize and set variables and don't have issues. I may have to start a procedure more than once to get SB in sync. This occasionally leads to erratic behavior the first time or 2. I will use an Initialize button since I also have some buttons that get out of sync with other buttons and can set them to default at the same time.
I suspect MidiFire SB in iPad has the same behavior. But in a computer environment, I believe when MidiFire is closed and then reopened later, LOAD will work.