All information (including screenshots) in this post are to be treated as unfinished as these features are not officially available at the time of writing.
After some more Steam digging we found some significant changes to the music functionality compared to what we reported on a while back.
A large portion of the stuff we reported was based on datamined CClientAudio functions from the then current Steam client. It appears that these functions have been in Steam for a while now, up to this beta build. CClientAudio no longer has any trace of having anything to do with music.
iTunes & SMB support
Two of the removed CClientAudio functions were AddSMBFileSource and AddITunesFileSource. These functions do not seem to present anymore which might indicate that iTunes & SMB support is no longer being considered.
Spotify support is still in CClientMusic and seems to be unchanged compared to the previous posts.
Current music functionality
Valve has added quite a few more music related functions since last time. Here's all the functionality that currently seems in there:
- Local music library that can crawl user defined folders for tracks/albums.
- Independent volume control (seperate from game sound etc)
- Play, pause, shuffle, repeat (basically all that standard music player functionality)
- Proper ID3 tag support using TagLib
- Spotify support (including playlists)
- Music queueing
- You can add tracks / full albums to your music queue.
The addition of functions such as CClientMusic::Initialize and CClientMusic::Enable might indicate that they are getting closer to beta testing this. Currently there do not seem to be any music related changes to the UI so it might still be a few beta builds away.
Remote Control via HTTP(this stuff might get a bit more technical)
When the built-in HTTP server is running (starting steam with -enableremotecontrol), it listens for requests on port 8080. There will probably be a mini web-app here through which you can control Big Picture. When you access it, it'll throw you a 404 error because Valve hasn't actually pushed out the HTML files required to run the full thing.
They have however implemented the technology behind it, and by writing our own little test web-app we've gotten the following results.
There are 3 main URLs accepting input:
- /steam/list (?)
- /key (?)
We haven't figured out how URLs with a question mark work (lets figure it out in comments), but the here's what we have figured out.
When you send a GET request to /steam/button/(a,b,left,right,up,down etc), Steam will emulate that button press in Big Picture.
When you send a POST request to /steam/keyboard/sequence with the parameter sequence, Steam will enter the value of sequence in a currently selected (and in-focus) text input field in Big Picture (and Big Picture alone).
With these two requests you'll already be able to navigate through most of the Big Picture UI (this doesn't work in games) using just your phone's browser (for example).
The eventual Valve-authored web-app will presumably use jQuery (and the mobile variant, indicated by some file references) to send these requests.
Right now this all seems a bit too open, and I'm unsure if this can be abused or not. As this is clearly not supposed to be used yet, I suggest you use this feature (and the -enableremotecontrol flag) with caution.
Whether or not this actually ships into the regular Steam client, we'll have to see.
There's some SteamGuard related changes that indicate that it's prepared to handle users being logged onto the same Steam account on 2 local devices. Functions like RequestSteamGuardCodeForOtherLogin and SteamGuardLoginAttempt_Notification make this pretty clear.