The UK Home Automation Archive

Archive Home
Group Home
Search Archive


Advanced Search

The UKHA-ARCHIVE IS CEASING OPERATIONS 31 DEC 2024


[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

RE: Re: xAP-Audio schema questions....


  • Subject: RE: Re: xAP-Audio schema questions....
  • From: "Malcolm Green" <groups@xxxxxxxxxxxx>
  • Date: Tue, 11 Jan 2005 21:19:30 -0000


------=_NextPart_000_001B_01C4F823.3D70C140
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit




_____

From: Kevin Hawkins [mailto:lists@xxxxxxx]
Sent: 11 January 2005 17:15
To: xAP_developer@xxxxxxx
Subject: Re: [xAP_developer] Re: xAP-Audio schema questions....


Comments inline...

Malcolm Green wrote:

> Hi Kevin,
>
>
------------------------------------------------------------------------
>     *From:* Kevin Hawkins [mailto:lists@xxxxxxx]
>     *Sent:* 11 January 2005 13:49
>     *To:* xAP_developer@xxxxxxx
>     *Subject:* Re: [xAP_developer] Re: xAP-Audio schema questions....
>
>
>     Hi Malcolm ,
>
>
>        I tried to clarify this too (transport events) but didnt get
too
>     far... Edward posted a response on the 17th Dec which is quite
>     useful,
>     although it uses his own schema additions - I think it needs us to
>     all
>     'brainstorm' here to sort this. Quite happy to work fast on
>     sorting this ...
>
>        I am also right at this moment writing a xAP plugin for WinAMP,
>     partly to provide a useable xAP-audio player demo application.  I
>     have
>     taken some of my earlier proposals on this list re additions to
the
>     xap-audio schema and implemented them in this, for example I
>     update the
>     now playing every 10 secs during play and when I am in FF or REW
>     or in
>     play but within the last 10 seconds of a  track I increase this to
>     every
>     second.  I have also added the extra key values I discussed before
on
>     this list - Here is a 'WIP'  example NowPlaying message, but some
>     of the
>     fields will likely disappear eg the percent, running and status.
>
>
>  It's arguable that the time-related fields (elapsed, remaining etc)
> should be in a transport event message rather than in the
> Playlist.Event message.

Yes, maybe it does seem to far more logically sit there than where I had
them. Or perhaps the context of the information is all relative to that
particular  'track' information so should sit in the playlist info
entwined with the other related track information. It feels better in
transport...

> My view is that the Playlist.Event message should only need to be sent
> once when the current playlist track is changed, but that a
> Transport.Event message should get sent regularly (e.g. every 10 sec
> or 1 sec as you describe) to indicate changes of playing state
> (playing, paused etc) and elapsed time.

Yes....ahh just thought of a second issue though - if the
track/artist/albumname for example is only sent once  then a xAP
receiver coming online can see playback is in progress from the periodic
transport events but cant get the track name until the next track
starts, So I'm still feeling that a transport event perhaps should only
go out when the transport mode changes rather than as a periodic time
--- let me think this one over - I can see the advantages both ways...

Thought -do we include the nowplaying block in every (periodic)
transport.event message which solves this ?


I feel that sending out static information on a regular basis just in case
a
xAP media controller (to use UPnP terminology) comes online is the wrong
approach (but I'm probably being influenced by my ongoing
investigation/implementation of UPnP support).  I think a better approach
would be for a xAP application to use the xAP-Audio.Query class to query
the
player so as to get "up to date" with the current player status
when it
comes online, then rely on notifications thereafter.  That's the approach
taken with UPnP.



>        I am considering adding other ID3 tag info though to include
>     whatever
>     information is available from there eg 'year' 'bitrate' and
>     importantly
>     trying to recover the full path info of the file which is used by
for
>     example the xAP Desktop application to display album artwork  How
>     about
>     we have an additional (optional) ID3/ID2 message block  which
seems
>     quite sensible as the key values are so defined - this
"info.ID3"
>     supplements the now.playing block in the same xAp message if tag
>     information is available
>
>
> I'm not sure about this, as the Now.Playing block already includes
> many of the main tag fields (title, artist, album, genre, duration).
> Would it not be simpler just to add extra optional values to the
> Now.Playing block for additional tags such as year, bitrate, composer,
> etc?

It's just that the ID3 tag is a good structured descriptor that may , or
may not be available, yes perhaps we could include all the tags within a
block, perhaps even labelling them as ID3Trackname I guess, If we use
just trackname are there situations where the trackname might be
recoverable from dual sources eg from a filename, stream metadata, ID2
tag and ID3 tag and we might have several choices I wonder . The ID2 tag
and ID3 tag could easily be different I guess. In fact I know  a lot of
mine are.  If we had an ID3 tag block we could also do things like
'update this file with this ID3 tag info'  which may be useful for other
applications, it seems a good block format to write up formally as a
schema or block definition even if it remains optional here .


The following are a few observations which may help to clarify my view on
this area:

- I think the UPnP AV Architecture serves as a useful model when
considering
the interaction of components of an audio system (see
http://www.upnp.org/standardizeddcps/documents/UPnPAvArchtiecture0.83.pdf).
It classifies the functionality into three main areas: Media Server, Media
Renderer and Control Point.  In many cases a hardware or software component
will act as more than one of these, but it's still useful to consider them
as independent services with specific dataflow requirements between them.

- in most controller/player (Control Point/Media Renderer) situations the
player will only have one version of a track name, album name or whatever,
which it may have obtained itself by parsing tag information (e.g. Winamp,
SlimServer) or may have been been given in a message from a media server
(e.g. Roku SoundBridge).  The name is what the player itself will display
in
its own UI, and is therefore what I would expect a xAP controller to
display.  As such, I don't see a need for further level of duplication
within the player/controller protocol.

- however, if the xAP controller wishes to be able to do things like
'update
this file with this ID3 tag info' then I would suggest that it would be
communicating with a media server not a media renderer, and in this
scenario
there is whole different data interchange requirement, which I think should
be implemented using a different schema class.  This would certainly
include
detailed tag information, and could include messages to allow browsing and
searching of the available media.




>
>
>     xap-header
>     {
>     v=12
>     hop=1
>     uid=FF223300
>     class=xAP-Audio.Playlist.Event
>     source=UKUSA.WinAmp.lightning
>     }
>     now.playing
>     {
>     remaining=4:46
>     running=True
>     artist=ColdPlay
>     current=0:09
>     end=5:07
>     tracks=11
>     elapsed=0:21
>     title=Clocks
>     duration=5:07
>     album=A Rush of Blood to the Head
>     winampver=20488
>     percent=5%
>     start=00:00
>     index=6
>     status=1
>     }
>
>
>
>        I never managed to get clarification on the transport control
>     events
>     either , one of the original architects of that schema is
>     currently not
>     around and although I too was told there may be a later schema I
>     couldn't find one.  Edward may have some input here ?? If not I
feel
>     maybe we should just push ahead  and define something now as it is
>     required.     What do we need - I guess event names eg 'pause'
'play'
>     stop' 'FF' 'REW' 'rec'  'track+' 'track-' or something as I can't
see
>     these listed anywhere and also some other bits (?) - happy to have
>     suggestions here - unless this rumoured  'later version' schema
does
>     already exist anyone  ??  I did note Edwards comments on mirroring
a
>     similarity to BSC with the  .info and .event formats - so if I
could
>     take Edward up on his offer to clarify this ???
>
> The following is my suggestion for the Transport.Event message:
>
> *Class=xAP-Audio.Transport.Event*
>
> *Audio.Transport*
> {
> State=[playing  paused  stopped]
> Elapsed="elapsed time"
> Duration="total time"        (also in Now.Playing)
> Shuffle=[off  tracks  albums]
> Repeat=[off  one  all]
> }
>
I think we need the other states  too eg FF REW REC  Track+ Track-    -
some of these would usually be commands and some events and some augment
a state like REC could augment play perhaps. As you suggest maybe the
time events eg remaining time should go in here too . I now think we
need to include the now.playing block too though (??)



Interested as to why the other parameters , particularly say Shuffle
and Repeat are in transport rather than playlist events as I guess they
are events effecting the playlist ordering ??  Is that because it is
setting a 'mode' for playback  eg from possibly a button on the player.
So transport should reflect the sort of things you see on a front panel
of a feature rich player both in terms of buttons and displayed data
like 'time' but not track title.  Is this required demarkation between
'playlist' and 'transport' fundamentally flawed I wonder and we should
merge them, clarify the difference or perhaps use a different
segmentation ?? Just thougts...


Shuffle and Repeat are in transport because they are attributes of the
player behaviour which directly affect the playback sequencing without
necessarily being related to the playlist, e.g. Repeat One will repeatedly
play the same track.  (They are also included in the transport service in
the UPnP Media Renderer schema.)

As outlined above, I think there is a clear demarcation between playlist
and
transport, and they should be kept separate.

Regards,
Malcolm



K

>
> Regards,
> Malcolm
>
>
>         Kevin
>
>
>     ./ / - I hope malcolmcgreen wrote:
>
>     >I'm now looking at the next stage of xAP implementation in
TelCanto.
>     >I need to generate some notifications when the play status
changes,
>     >which will include the xAP-Audio.Playlist.Event (Now.Playing).
 I
>     also
>     >need an event to indicate change of transport state, but can't
>     find an
>     >event defined in the schema corresponding to the
Audio.Transport
>     >command, i.e. an Audio.Transport.Event.  Can anyone enlighten
me
>     as to
>     >whether such an event has been defined, perhaps in a later
version of
>     >the schema?
>     >
>     >Malcolm Green
>     >
>     >
>     >--- In xAP_developer@xxxxxxx, Kevin Hawkins <lists@u...>
>     >wrote:
>     >
>     >
>     >>This is a posting of a couple of email exchanges now moved
to this
>     >>
>     >>
>     >list
>     >
>     >
>     >>as it is of interest to all I feel.
>     >>
>     >>
>     >>Hi P - yes I can see why you've done that ...
>     >>
>     >>In re-reading the schema I understand how certain .events
are sent
>     >>
>     >>
>     >but I
>     >
>     >
>     >>am still unsure of some and I can't see a list of the
'modes' for
>     >>example and what should be sent if say a player is put
into pause
>     >>
>     >>
>     >or FF
>     >
>     >
>     >>or whatever. I also see there is a refererence to allowing
the
>     >>
>     >>
>     >.events
>     >
>     >
>     >>to be sent 'as needed'
>     >>
>     >>It strikes me we could do with defining some additional
time
>     >>
>     >>
>     >related
>     >
>     >
>     >>parameters for inclusion in the event reporting timeline
including
>     >>
>     >>Duration  <mandatory>
>     >>StartTime <mandatory>
>     >>EndTime <mandatory>
>     >>CurrentTime  <mandatory>
>     >>ElapsedTime   <optional ?>
>     >>RemainingTime  <optional ?>
>     >>
>     >>.. and that these should be sent periodically at a
frequency that
>     >>
>     >>
>     >is
>     >
>     >
>     >>configurable as different users might want tighter
feedback. 10
>     >>
>     >>
>     >secs
>     >
>     >
>     >>sounds a useful time for most implementations. Towards the
end of
>     >>
>     >>
>     >the
>     >
>     >
>     >>current track it may be desireable to increase the
frequency of
>     >>
>     >>
>     >events
>     >
>     >
>     >>Just to expand on the above time information I was
considering what
>     >>would happen if a player was asked to play a track whose
duration
>     >>
>     >>
>     >was
>     >
>     >
>     >>say 5 mins but starting at position 1min22secs and ending
at
>     >>
>     >>
>     >1min44secs
>     >
>     >
>     >>which I think our schema should/does support (the actual
time being
>     >>
>     >>
>     >down
>     >
>     >
>     >>to 100'ths of a sec perhaps).The current 'Duration' is the
length of
>     >>
>     >>
>     >the
>     >
>     >
>     >>whole track and the currentTime the exact current position
relative
>     >>
>     >>
>     >to
>     >
>     >
>     >>that. The StartTime and EndTime are the actual markers for
what
>     >>
>     >>
>     >section
>     >
>     >
>     >>is to be played. ElapsedTime and RemainingTime can be
derived from
>     >>
>     >>
>     >the
>     >
>     >
>     >>other values but could be defined such that they can be
inserted as
>     >>optional .
>     >>
>     >>What does anyone think ? I think this is needed and I am
keen to
>     >>
>     >>
>     >resolve
>     >
>     >
>     >>it whilst Malcolm is focussed on teh xAP aspects of
TelCanto.
>     >>
>     >>
>     >Edward
>     >
>     >
>     >>and Stuart I would particularly value your comments as you
are the
>     >>
>     >>
>     >two
>     >
>     >
>     >>who have done this practically already...
>     >>
>     >>    Kevin
>     >>
>     >>
>     >>Patrick Lidstone wrote:
>     >>
>     >>
>     >>
>     >>>I do an "elapsed time" event which includes
current play state for
>     >>>
>     >>>
>     >the
>     >
>     >
>     >>>Rio stuff (sent once every 10s or so, plus whenever a
button
>     >>>
>     >>>
>     >causes a
>     >
>     >
>     >>>change). This is an integral part of the audio spec -
I can dig
>     >>>
>     >>>
>     >out the
>     >
>     >
>     >>>exact message if no-one else chips in.
>     >>>
>     >>>P.
>     >>>
>     >>>
>     >>>
>     >>>
>     >>>
>     >>>>-----Original Message-----
>     >>>>From: Kevin Hawkins
>     >>>>Sent: 09 December 2004 13:44
>     >>>>
>     >>>>
>     >>>>xAP guys...
>     >>>>
>     >>>>   The newer audio schema isnt one I'm familiar
with  so I'm
>     >>>>
>     >>>>
>     >just
>     >
>     >
>     >>>>coming up to speed on that as I provide feedback
to Malcolm. What
>     >>>>
>     >>>>
>     >I
>     >
>     >
>     >>>>can't seem to see is how a player keeps people
informed of its
>     >>>>
>     >>>>
>     >state.
>     >
>     >
>     >>>>For example when it is paused by a press of the
pause button on
>     >>>>
>     >>>>
>     >the
>     >
>     >
>     >>>>player or IR remote or FF'wded perhaps causing the
track position
>     >>>>
>     >>>>
>     >to
>     >
>     >
>     >>>>change (not the actual track just the time
remaining).  How do we
>     >>>>indicate a player is in pause/play or whatever ?. 
  It strikes
>     >>>>
>     >>>>
>     >me we
>     >
>     >
>     >>>>need a whole series of periodic event messages
being generated by
>     >>>>
>     >>>>
>     >a
>     >
>     >
>     >>>>player that keep people updated about it current
state eg 'time
>     >>>>remaining'.  ... and that such event messages
should probably
>     >>>>be issued
>     >>>>quite frequently (configurable), particulalry
towards the end
>     >>>>of a track
>     >>>>playing (eg track about to end /finished). 
Additionally
>     >>>>anything that
>     >>>>causes the estimated time remaining to change
should
>     >>>>immediately send an
>     >>>>update (eg a REW) This way monitoring apps can
accurately
>     >>>>become synched
>     >>>>with a players status even if they are only turned
on half
>     >>>>way through
>     >>>>a  track eg the xAP Desktop SliMP3 display...    I
can see
>     >>>>some specific
>     >>>>SliMP3 bits that would help but not in the general
schema and in
>     >>>>telCanto's case it could be driving lots of
different clients.
>     >>>>
>     >>>>Or have I missed something ?
>     >>>>
>     >>>>Kevin
>     >>>>
>     >>>>
>     >>>>
>     >>>>
>     >>>>
>     >
>     >
>     >
>     >
>     >
>     >
>     >Yahoo! Groups Links
>     >
>     >
>     >
>     >
>     >
>     >
>     >
>     >
>     >
>     >
>
>
>
>
------------------------------------------------------------------------
>     *Yahoo! Groups Links*
>
>         * To visit your group on the web, go to:
>           http://groups.yahoo.com/group/xAP_developer/
>
>         * To unsubscribe from this group, send an email to:
>           xAP_developer-unsubscribe@xxxxxxx
>
<mailto:xAP_developer-unsubscribe@xxxxxxx?subject=Unsubscribe>
>
>         * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
>           Service <http://docs.yahoo.com/info/terms/>.
>
>




_____


xAP_Development Main Index | xAP_Development Thread Index | xAP_Development Home | Archives Home

Comments to the Webmaster are always welcomed, please use this contact form . Note that as this site is a mailing list archive, the Webmaster has no control over the contents of the messages. Comments about message content should be directed to the relevant mailing list.