I agree with lawrence on both accounts. Both about splitting up pull requrests, but also about this functionality being a little to custom for a demo. In any case, it might at some point be worth it to spin the command line client of into a project of its own.

Regarding pulling the ramp into core, I'm not sure I think that it really fits there. Building functionality on top of the functionality of what the sonos devices does, might be better placed in a client, where it would also be possible to better take care e.g. of threading to prevent the SoCo client from being locked during the ramp. As far as I can tell, so far we have no other functionality that would wait on anything else but the device to respond.