%ents; ]>
User Tune This document defines an XMPP protocol extension for communicating information about the music to which a user is listening. &LEGALNOTICE; 0118 Draft Standards Track Standards XMPP Core XMPP IM XEP-0060 tune http://www.xmpp.org/schemas/tune.xsd &stpeter; 1.0 2004-11-12 psa Per a vote of the Jabber Council, advanced status to Draft. 0.10 2004-10-29 psa Added example with URL. 0.9 2004-10-27 psa Changed recommendation to not include the <length/> element if the track time is unknown. 0.8 2004-10-26 psa Added implementation notes; clarified nature of <source/> and <track/> elements; if length is unknown, set to zero. 0.7 2004-05-20 psa Changed <length/> datatype from xs:duration to xs:unsignedShort. 0.6 2004-04-25 psa Corrected several errors; added reference to XEP-0033. 0.5 2004-02-19 psa Reverted from infobits to tune elements. 0.4 2003-12-14 psa Slight modifications to track changes to infobits specifications. 0.3 2003-10-23 psa Replaced tune elements with infobits. 0.2 2003-09-10 psa Added "stop" function via empty <tune/> element. 0.1 2003-09-08 psa Initial version.

This document defines a protocol for communicating information about the music to which a user is listening. Such information may be seen as a kind of "extended presence", and users may want to communicate such information to their contacts on the network as a fun add-on to traditional IM applications or to provide integration with common music-player applications.

Information about tunes is provided by the user and propagated on the network by the user's client. The information container for tune data is a <tune/> element that is qualified by the 'http://jabber.org/protocol/tune' namespace. The tune information itself is provided as the XML character data of the following children of the <tune/> element:

Element Description Example Datatype
artist The artist or performer of the song or piece Yes xs:string
title The title of the song or piece Heart of the Sunrise xs:string
source The collection (e.g., album) or other source (e.g., a band website that hosts streams or audio files) Yessongs xs:string
track A unique identifier for the tune; e.g., the track number within a collection or the specific URI for the object (e.g., a stream or audio file) 3 xs:string
length The duration of the song or piece in seconds 686 xs:unsignedShort

NOTE: The datatypes specified above are defined in &w3xmlschema2;.

Tune information SHOULD be communicated and transported by means of the &xep0060; protocol. Because tune information is not pure presence information and can change independently of the user's availability, it SHOULD NOT be provided as an extension to &PRESENCE;.

Yes Heart of the Sunrise Yessongs 3 686 ]]>

The tune information is then delivered to all subscribers:

Yes Heart of the Sunrise Yessongs 3 686 . . . ]]>

As mentioned in XEP-0060, the stanza containing the event notification or payload MAY also include 'replyto' data (as specified by the &xep0033; protocol) to provide an explicit association between the published data and the user:

Yes Heart of the Sunrise Yessongs 3 686
]]>

Naturally, further extensions could be included, e.g., using &xep0066; to specify a URL where one could buy the recording.

Yes Heart of the Sunrise Yessongs 3 686 http://www.amazon.com/exec/obidos/ASIN/B000002J1Y ]]>

In order to indicate that the user is no longer listening to any tunes, the user's client SHOULD send an empty <tune/> element, which can be considered a "stop command" for user tunes:

]]> . . . ]]>

To prevent a large number of updates when a user is skipping through tracks, an implementation may wait several seconds before publishing new tune information.

If the length is unknown (e.g., the user is listening to a stream), the <length/> element SHOULD NOT be included.

This protocol introduces no security considerations above and beyond those defined in Publish-Subscribe (XEP-0060).

This document requires no interaction with &IANA;.

The ®ISTRAR; includes 'http://jabber.org/protocol/tune' in its registry of protocol namespaces.

The protocol documented by this schema is defined in XEP-0118: http://www.xmpp.org/extensions/xep-0118.html ]]>