Hi,

There are a couple of actions already provided by Sonos which look like they are related to this. Both are part of the RenderingControl service, as follows:

```python 
>>> s=SoCo('YOUR IP ADDRESS')
>>> print list(s.renderingControl.iter_actions())

...

Action(name='RampToVolume', in_args=[Argument(name='InstanceID', vartype='ui4'), Argument(name='Channel', vartype='string'), Argument(name='RampType', vartype='string'), Argument(name='DesiredVolume', vartype='ui2'), Argument(name='ResetVolumeAfter', vartype='boolean'), Argument(name='ProgramURI', vartype='string')], out_args=[Argument(name='RampTime', vartype='ui4')]),

Action(name='RestoreVolumePriorToRamp', in_args=[Argument(name='InstanceID', vartype='ui4'), Argument(name='Channel', vartype='string')], out_args=[])

```

I haven't explored them myself, but it is likely that InstanceID is 0, and Channel is "Master".  It looks as though RampType is one of "SLEEP_TIMER_RAMP_TYPE", "ALARM_RAMP_TYPE" or  "AUTOPLAY_RAMP_TYPE"

So I guess that something like this might work:

```python

>>> s.renderingControl.RampToVolume([("InstanceID","0"),("Channel","Master"),("RampType","ALARM_RAMP_TYPE"),("DesiredVolume", "50"),("ResetVolumeAfter","True"),("ProgramURI", "TRACK_URI_HERE")])

```

Might be worth having a look at those and seeing what can be done with them

Lawrence