Hi @npauli,
It’s correct that parameter names are BA-BD in source code. Here’s what I’ve used for testing:
#ifndef __TestUpper_h__
#define __TestUpper_h__
#include "Patch.h"
#include "SineOscillator.h"
class TestUpperPatch : public Patch {
public:
    SineOscillator lfo;
    TestUpperPatch() {
        registerParameter(PARAMETER_A, "Frequency");
        registerParameter(PARAMETER_B, "Out1>");
        registerParameter(PARAMETER_BA, "Out2>");
        registerParameter(PARAMETER_BB, "Nothing>");
    }
    void processAudio(AudioBuffer &buffer){
        float freq = 10 + getParameterValue(PARAMETER_A) * 5;
        lfo.setFrequency(freq);
        float val = lfo.getNextSample() * 0.5f + 0.5f;
        setParameterValue(PARAMETER_B, val);
        setParameterValue(PARAMETER_BA, val);
    }
};
#endif
I’ve confirmed that it works. As for quick access via left encoder menu, it only works when there’s a registered parameter. So in this case you can use R (which is actually BB) labeled as “Nothing>”, but not S. I think it works like that because by default parameters are inputs.
Also, generally it’s easier to use other patch methods for setting variables, i.e. .getIntParameter(), .getFloatParameter(). This lets you create a variable bound to parameter using scaling to specific range and smoothing.