I think this may do what you want. It works nicely on my computer.
live_loop :playsound do
s = sample :loop_amen,amp: get(:vol)
sleep sample_duration :loop_amen
live_loop :getvol do
b= sync "/osc/fader_1"
control get(:s),amp: b
Basically there are two live loops. The first one plays loop_amen and sets the volume to the value stored in the time state variable
:vol, which is initially set to 0 before the two live loops start. A reference to the playing :loop_amen is stored in the variable s. This is then stored in teh time state as :s
The loop duration is set by the sleep sample_duration :loop_amen statement, so that it repeats seamlessly.
The second loop waits for changes in the fader_1 setting, which triggers the sync statement when an osc message is received.
The value is in b which is printed on the screen, and stored in he :vol time state, so that next time the sample is triggered it starts at the current volume setting.
The reference stored in :s is retrived with the get(:s) statement and used to control the amp: setting of the loop_amen which is set to the current state of b. Thus as the fader is varied, the volume of the loop_amen will vary as well.
Note when you start the program initially you will hear nothing until the slider position is altered.
The trick is to keep the reading of the slider in a separate loop to the one playing the loop_amen, and to use time state variables to allow data to be transferred between them.