Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

A system is described for maintaining synchrony of operations among a
plurality of devices having independent clocking arrangements. A task
distribution device is to distribute tasks to a synchrony group
comprising a plurality of devices to perform tasks distributed by the
task distribution device in synchrony. The task distribution device
distributes each task to synchrony group members over a network. Each
task is associated with a time stamp that indicates a time, relative to a
clock maintained by the task distribution device, at which synchrony
group members are to execute the task. Each synchrony group member
periodically obtains from the task distribution device an indication of
current time indicated by its clock, determines a time differential
between the task distribution device's clock and its respective clock and
determines therefrom a time at which, according to its respective clock,
the time stamp indicates that it is to execute the task.

Claims:

1. A method for synchronizing audio playback of a plurality of separate
audio playing devices with one another, the method comprising: receiving,
by a playback device, an audio stream including a plurality of frames
from a source device over a local network, wherein each frame of the
plurality of frames is associated with audio information and a time
indicating when to play the audio information of the respective frame,
wherein the time is based on a clock of the source device, which is
independent of a clock of the playback device; periodically receiving, by
the playback device over the local network, a message transmitted from
the source device, the message separate from the audio stream and
including clock information of the source device; computing, by the
playback device, a time differential between the clock of the source
device and the clock of the playback device based on the message;
converting, by the playback device and for each frame of the plurality of
frames, a computed output time of the audio information for each
respective frame based on both the time associated with each respective
frame and the computed time differential.

2. The method of claim 1, further comprising outputting, by the playback
device, audio information based on the plurality of frames by playing
audio information for each respective frame based on a clock of the
playback device, wherein the playback device is configured to output the
audio information in synchrony with the source device.

3. The method of claim 1, further comprising adjusting a speed at which
the playback device outputs the audio information, wherein the speed is
adjusted based on a comparison between an expected output time of audio
information for a particular frame and the computed output time of the
particular frame.

4. The method of claim 3, wherein adjusting the speed at which the
playback device outputs the audio information comprises adjusting the
clock of the playback device.

5. The method of claim 1, wherein the computing a time differential
occurs periodically.

6. The method of claim 5, wherein the converting a computed output time
is in response to computing the most recent computation of the time
differential.

7. The method of claim 6, wherein the computing a time differential is in
response to receiving the most recently received message from the source
device.

8. The method of claim 1, wherein the output time of the audio
information for each respective frame is determined for the clock of the
playback device by adding the time differential to the time associated
with each respective frame when the clock of the playback device is ahead
of the clock of the source device and by subtracting the time
differential to the time associated with each respective frame when the
clock of the playback device is behind the clock of the source device.

9. The method of claim 1, further comprising buffering by the playback
device the audio information along with the output time prior to
outputting the audio information.

10. The method of claim 1, further comprising receiving by the playback
device an address that the source device is using to send the plurality
of frames prior to receiving the plurality of frames.

11. The method of claim 1, wherein the plurality of frames received from
the source device are performed by a group multicast transmission
methodology.

12. The method of claim 1, wherein the source device is a second playback
device.

13. The method of claim 1, wherein the playback device is one of a
plurality of playback devices in a synchrony group.

14. The method of claim 13, wherein the synchrony group is dynamically
configurable, such that a number of the plurality of playback devices in
the synchrony group is adjustable.

15. The method of claim 1, wherein the playback device receives the
plurality of frames from the source device over a wireless network.

16. The method of claim 1, wherein the message comprises a Simple Network
Time Protocol message.

17. A playback device including a processor and a memory, the memory
comprising instructions for synchronizing audio playback of a plurality
of separate audio playing devices with one another, the instructions,
when executed by a processor, cause the processor to perform the
following: receiving, by the playback device, an audio stream including a
plurality of frames from a source device over a local network, wherein
each frame of the plurality of frames is associated with audio
information and a time indicating when to play the audio information of
the respective frame, wherein the time is based on a clock of the source
device, which is independent of a clock of the playback device;
periodically receiving, by the playback device over the local network, a
message transmitted from the source device, the message separate from the
audio stream and including clock information of the source device;
computing, by the playback device, a time differential between the clock
of the source device and the clock of the playback device based on the
message; converting, by the playback device and for each frame of the
plurality of frames, a computed output time of the audio information for
each respective frame based on both the time associated with each
respective frame and the computed time differential.

18. The playback device of claim 17, wherein the processor is to output
by the playback device, audio information based on the plurality of
frames by playing audio information for each respective frame based on a
clock of the playback device, wherein the playback device is configured
to output the audio information in synchrony with the source device.

19. The playback device of claim 17, wherein the processor is to adjust a
speed at which the playback device outputs the audio information, wherein
the speed is adjusted based on a comparison between an expected output
time of audio information for a particular frame and the computed output
time of the particular frame.

20. The playback device of claim 19, wherein adjusting the speed at which
the playback device outputs the audio information comprises adjusting the
clock of the playback device.

21. The playback device of claim 17, wherein the computing a time
differential occurs periodically.

22. The playback device of claim 21, wherein the converting a computed
output time is in response to computing the most recent computation of
the time differential.

23. The playback device of claim 21, wherein the computing a time
differential is in response to receiving the most recently received
message from the source device.

24. The playback device of claim 17, wherein the output time of the audio
information for each respective frame is determined for the clock of the
playback device by adding the time differential to the time associated
with each respective frame when the clock of the playback device is ahead
of the clock of the source device and by subtracting the time
differential to the time associated with each respective frame when the
clock of the playback device is behind the clock of the source device.

25. The playback device of claim 17, wherein the processor is to buffer
by the playback device the audio information along with the output time
prior to outputting the audio information.

26. The playback device of claim 17, wherein the processor is to receive
by the playback device an address that the source device is using to send
the plurality of frames prior to receiving the plurality of frames.

27. The playback device of claim 17, wherein the plurality of frames
received from the source device are performed by a group multicast
transmission methodology.

28. The playback device of claim 17, wherein the source device is a
second playback device.

29. The playback device of claim 17, wherein the playback device is one
of a plurality of playback devices in a synchrony group.

30. The playback device of claim 29, wherein the synchrony group is
dynamically configurable, such that a number of the plurality of playback
devices in the synchrony group is adjustable.

31. The playback device of claim 17, wherein the playback device is to
receive the plurality of frames from the source device over a wireless
network.

32. The method of claim 17, wherein the message comprises a Simple
Network Time Protocol message.

33. A non-transitory computer-readable storage medium storing
instructions to synchronize audio playback of a plurality of separate
audio playing devices with one another, the instructions, when executed
by a processor, causing the processor to perform the following:
receiving, by the playback device, an audio stream including a plurality
of frames from a source device over a local network, wherein each frame
of the plurality of frames is associated with audio information and a
time indicating when to play the audio information of the respective
frame, wherein the time is based on a clock of the source device, which
is independent of a clock of the playback device; periodically receiving,
by the playback device over the local network, a message transmitted from
the source device, the message separate from the audio stream and
including clock information of the source device; computing, by the
playback device, a time differential between the clock of the source
device and the clock of the playback device based on the message;
converting, by the playback device and for each frame of the plurality of
frames, a computed output time of the audio information for each
respective frame based on both the time associated with each respective
frame and the computed time differential.

Description:

INCORPORATION BY REFERENCE

[0001] This application claims the benefit of Provisional Patent
Application Ser. No. 60/490,768, filed on Jul. 28, 2003, entitled "Method
for Synchronizing Audio Playback Between Multiple Networked Devices," and
Non-provisional patent application Ser. No. 10/816,217, filed on Apr. 1,
2004, entitled "System and Method for Synchronizing Channel Handoff as
Among a Plurality of Independently Clocked Digital Devices," both of
which are assigned to the assignee of the present application and are
incorporated herein by reference.

FIELD OF THE INVENTION

[0002] The present invention relates generally to the field of digital
data processing devices, and more particularly to systems and methods for
synchronizing operations among a plurality of independently-clocked
digital data processing devices. The invention is embodied in a system
for synchronizing operations among a plurality of devices, in relation to
information that is provided by a common source. One embodiment of the
invention enables synchronizing of audio playback as among two or more
audio playback devices that receive audio information from a common
information source, or channel.

[0003] More generally, the invention relates to the field of arrangements
that synchronize output generated by a number of output generators,
including audio output, video output, combinations of audio and video, as
well as other types of output as will be appreciated by those skilled in
the art, provided by a common channel. Generally, the invention will find
utility in connection with any type of information for which synchrony
among independently-clocked devices is desired.

BACKGROUND OF THE INVENTION

[0004] There are a number of circumstances under which it is desirable to
maintain synchrony of operations among a plurality of
independently-clocked digital data processing devices in relation to, for
example, information that is provided thereto by a common source. For
example, systems are being developed in which one audio information
source can distribute audio information in digital form to a number of
audio playback devices for playback. The audio playback devices receive
the digital information and convert it to analog form for playback. The
audio playback devices may be located in the same room or they may be
distributed in different rooms in a residence such as a house or an
apartment, in different offices in an office building, or the like. For
example, in a system installed in a residence, one audio playback device
may be located in a living room, while another audio playback device is
be located in a kitchen, and yet other audio playback devices may be
located in various bedrooms of a house. In such an arrangement, the audio
information that is distributed to various audio playback devices may
relate to the same audio program, or the information may relate to
different audio programs. If the audio information source provides audio
information relating to the same audio program to two or more audio
playback devices at the same time, the audio playback devices will
generally contemporaneously play the same program. For example, if the
audio information source provides audio information to audio playback
devices located in the living room and kitchen in a house at the same
time, they will generally contemporaneously play the same program.

[0005] One problem that can arise is to ensure that, if two or more audio
playback devices are contemporaneously attempting to play back the same
audio program, they do so simultaneously. Small differences in the audio
playback devices' start times and/or playback speeds can be perceived by
a listener as an echo effect, and larger differences can be very
annoying. Differences can arise because for a number of reasons,
including delays in the transfer of audio information over the network.
Such delays can differ as among the various audio playback devices for a
variety of reasons, including where they are connected into the network,
message traffic and other reasons as will be apparent to those skilled in
the art.

[0006] Another problem arises from the following. When an audio playback
device converts the digital audio information from digital to analog
form, it does so using a clock that provides timing information.
Generally, the audio playback devices that are being developed have
independent clocks, and, if they are not clocking at precisely the same
rate, the audio playback provided by the various devices can get out of
synchronization.

SUMMARY OF THE INVENTION

[0007] The invention provides a new and improved system and method for
synchronizing operations among a number of digital data processing
devices that are regulated by independent clocking devices. Generally,
the invention will find utility in connection with any type of
information for which synchrony among devices connected to a network is
desired. The invention is described in connection with a plurality of
audio playback devices that receive digital audio information that is to
be played back in synchrony, but it will be appreciated that the
invention can find usefulness in connection with any kind of information
for which coordination among devices that have independent clocking
devices would find utility.

[0008] In brief summary, the invention provides, in one aspect, a system
for maintaining synchrony of operations among a plurality of devices that
have independent clocking arrangements. The system includes a task
distribution device that distributes tasks to a synchrony group
comprising a plurality of devices that are to perform the tasks
distributed by the task distribution device in synchrony. The task
distribution device distributes each task to the members of the synchrony
group over a network. Each task is associated with a time stamp that
indicates a time, relative to a clock maintained by the task distribution
device, at which the members of the synchrony group are to execute the
task. Each member of the synchrony group periodically obtains from the
task distribution device an indication of the current time indicated by
its clock, determines a time differential between the task distribution
device's clock and its respective clock and determines therefrom a time
at which, according to its respective clock, the time stamp indicates
that it is to execute the task.

[0009] In one embodiment, the tasks that are distributed include audio
information for an audio track that is to be played by all of the devices
comprising the synchrony group synchronously. The audio track is divided
into a series of frames, each of which is associated with a time stamp
indicating the time, relative to the clock maintained by an audio
information channel device, which, in that embodiment, serves as the task
distribution device, at which the members of the synchrony group are to
play the respective frame. Each member of the synchrony group, using a
very accurate protocol, periodically obtains the time indicated by the
audio information channel device, and determines a differential between
the time as indicated by its local clock and the audio information
channel device's clock. The member uses the differential and the time as
indicated by the time stamp to determine the time, relative to its local
clock, at which it is to play the respective frame. The members of the
synchrony group do this for all of the frames, and accordingly are able
to play the frames in synchrony.

BRIEF DESCRIPTION OF THE DRAWINGS

[0010] This invention is pointed out with particularity in the appended
claims. The above and further advantages of this invention may be better
understood by referring to the following description taken in conjunction
with the accompanying drawings, in which:

[0012] FIG. 2 schematically depicts a functional block diagram of a
synchrony group utilizing a plurality of zone players formed within the
networked audio system depicted in FIG. 1;

[0013] FIG. 2A schematically depicts two synchrony groups, illustrating
how a member of one synchrony group can provide audio information to the
members of another synchrony group;

[0014] FIG. 3 depicts an functional block diagram of a zone player for use
in the networked audio system depicted in FIG. 1; and

[0015] FIG. 4 is useful in understanding an digital audio information
framing methodology useful in the network audio system depicted in FIG.
1.

DETAILED DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT

[0016] FIG. 1 depicts an illustrative network audio system 10 constructed
in accordance with the invention. With reference to FIG. 1, the network
audio system 10 includes a plurality of zone players 11(1) through 11(N)
(generally identified by reference numeral 11(n)) interconnected by a
local network 12, all of which operate under control of one or more user
interface modules generally identified by reference numeral 13. One or
more of the zone players 11(n) may also be connected to one or more audio
information sources, which will generally be identified herein by
reference numeral 14(n)(s), and/or one or more audio reproduction
devices, which will generally be identified by reference numeral
15(n)(r). In the reference numeral 14(n)(s), index "n" refers to the
index "n" of the zone player 11(n) to which the audio information source
is connected, and the index "s" (s=1, . . . , Sn) refers to the
"s-th" audio information source connected to that "n-th" zone player
11(n). Thus, if, for example, a zone player 11(n) is connected to four
audio information sources 14(n)(1) through 14(n)(4), the audio
information sources may be generally identified by reference numeral
14(n)(s), with Sn=4. It will be appreciated that the number of audio
information sources Sn may vary as among the various zone players
11(n), and some zone players may not have any audio information sources
connected thereto. Similarly, in the reference numeral 15(n)(r), index
"n" refers to the index "n" of the zone player 11(n) to which the audio
reproduction device is connected, and the index "r" (r=1, . . . ,
Rn) refers to the "r-th" audio information source connected to that
"n-th" zone player 11(n). In addition to the audio information sources
14(n)(s), the network audio system 10 may include one or more audio
information sources 16(1) through 16(M) connected through appropriate
network interface devices (not separately shown) to the local network 12.
Furthermore, the local network may include one or more network interface
devices (also not separately shown) that are configured to connect the
local network 12 to other networks, including a wide area network such as
the Internet, the public switched telephony network (PSTN) or other
networks as will be apparent to those skilled in the art, over which
connections to audio information sources may be established.

[0017] The zone players 11(n) associated with system 10 may be distributed
throughout an establishment such as residence, an office complex, a
hotel, a conference hall, an amphitheater or auditorium, or other types
of establishments as will be apparent to those skilled in the art or the
like. For example, if the zone players 11(n) and their associated audio
information source(s) and/or audio reproduction device(s) are distributed
throughout a residence, one, such as zone player 11(1) and its associated
audio information source(s) and audio reproduction device(s) may be
located in a living room, another may be located in a kitchen, another
may be located in a dining room, and yet others may be located in
respective bedrooms, to selectively provide entertainment in those rooms.
On the other hand, if the zone players 11(n) and their associated audio
information source(s) and/or audio reproduction device(s) are distributed
throughout an office complex, one may, for example, be provided in each
office to selectively provide entertainment to the employees in the
respective offices. Similarly, if the zone players 11(n) and associated
audio information source(s) and/or audio reproduction device(s) are used
in a hotel, they may be distributed throughout the rooms to provide
entertainment to the guests. Similar arrangements may be used with zone
players 11(n) and associated audio information source(s) and/or audio
reproduction device(s) used in an amphitheater or auditorium. Other
arrangements in other types of environments will be apparent to those
skilled in the art. In each case, the zone players 11(n) can be used to
selectively provide entertainment in the respective locations, as will be
described below.

[0018] The audio information sources 14(n)(s) and 16(m) may be any of a
number of types of conventional sources of audio information, including,
for example, compact disc ("CD") players, AM and/or FM radio receivers,
analog or digital tape cassette players, analog record turntables and the
like. In addition, the audio information sources 14(n)(s) and 16(m) may
comprise digital audio files stored locally on, for example, personal
computers (PCs), personal digital assistants (PDAs), or similar devices
capable of storing digital information in volatile or non-volatile form.
As noted above, the local network 12 may also have an interface (not
shown) to a wide area network, over which the network audio system 10 can
obtain audio information. Moreover, one or more of the audio information
sources 14(n)(s) may also comprise an interface to a wide area network
such as the Internet, the public switched telephony network (PSTN) or any
other source of audio information. In addition, one or more of the audio
information sources 14(n)(s) and 16(m) may comprise interfaces to radio
services delivered over, for example, satellite. Audio information
obtained over the wide area network may comprise, for example, streaming
digital audio information such as Internet radio, digital audio files
stored on servers, and other types of audio information and sources as
will be appreciated by those skilled in the art. Other arrangements and
other types of audio information sources will be apparent to those
skilled in the art.

[0019] Generally, the audio information sources 14(n)(s) and 16(m) provide
audio information associated with audio programs to the zone players for
playback. A zone player that receives audio information from an audio
information source 14(n)(s) that is connected thereto can provide
playback and/or forward the audio information, along with playback timing
information, over the local network 12 to other zone players for
playback. Similarly, each audio information source 16(m) that is not
directly connected to a zone player can transmit audio information over
the network 12 to any zone player 11(n) for playback. In addition, as
will be explained in detail below, the respective zone player 11(n) can
transmit the audio information that it receives either from an audio
information source 14(n)(s) connected thereto, or from an audio
information source 16(m), to selected ones of the other zone players
11(n'), 11(n''), . . . (n not equal to n', n'', . . . ) for playback by
those other zone players. The other zone players 11(n'), 11(n''), . . .
to which the zone player 11(n) transmits the audio information for
playback may be selected by a user using the user interface module 13. In
that operation, the zone player 11(n) will transmit the audio information
to the selected zone players 11(n'), 11(n''), . . . over the network 12.
As will be described below in greater detail, the zone players 11(n),
11(n'), 11(n''), . . . operate such that the zone players 11(n'),
11(n''), . . . synchronize their playback of the audio program with the
playback by the zone player 11(n), so that the zone players 11(n),
11(n'), 11(n'') provide the same audio program at the same time.

[0020] Users, using user interface module 13, may also enable different
groupings or sets of zone players to provide audio playback of different
audio programs synchronously. For example, a user, using a user interface
module 13, may enable zone players 11(1) and 11(2) to play one audio
program, audio information for which may be provided by, for example, one
audio information source 14(1)(1). The same or a different user may,
using the same or a different user interface module 13, enable zone
players 11(4) and 11(5) to contemporaneously play another audio program,
audio information for which may be provided by a second audio information
source, such as audio information source 14(5)(2). Further, a user may
enable zone player 11(3) to contemporaneously play yet another audio
program, audio information for which may be provided by yet another audio
information source, such as audio information source 16(1). As yet
another possibility, a user may contemporaneously enable zone player
11(1) to provide audio information from an audio information source
connected thereto, such as audio information source 14(1)(2), to another
zone player, such as zone player 11(6) for playback.

[0021] In the following, the term "synchrony group" will be used to refer
to a set of one or more zone players that are to play the same audio
program synchronously. Thus, in the above example, zone players 11(1) and
11(2) comprise one synchrony group, zone player 11(3) comprises a second
synchrony group, zone players 11(4) and 11(5) comprise a third synchrony
group, and zone player 11(6) comprises yet a fourth synchrony group.
Thus, while zone players 11(1) and 11(2) are playing the same audio
program, they will play the audio program synchronously. Similarly, while
zone players 11(4) and 11(5) are playing the same audio program, they
will play the audio program synchronously. On the other hand, zone
players that are playing different audio programs may do so with
unrelated timings. That is, for example, the timing with which zone
players 11(1) and 11(2) play their audio program may have no relationship
to the timing with which zone player 11(3), zone players 11(4) and 11(5),
and zone player 11(6) play their audio programs. It will be appreciated
that, since "synchrony group" is used to refer to sets of zone players
that are playing the same audio program synchronously, zone player 11(1)
will not be part of zone player 11(6)'s synchrony group, even though zone
player 11(1) is providing the audio information for the audio program to
zone player 11(6).

[0022] In the network audio system 10, the synchrony groups are not fixed.
Users can enable them to be established and modified dynamically.
Continuing with the above example, a user may enable the zone player
11(1) to begin providing playback of the audio program provided thereto
by audio information source 14(1)(1), and subsequently enable zone player
11(2) to join the synchrony group. Similarly, a user may enable the zone
player 11(5) to begin providing playback of the audio program provided
thereto by audio information source 14(5)(2), and subsequently enable
zone player 11(4) to join that synchrony group. In addition, a user may
enable a zone player to leave a synchrony group and possibly join another
synchrony group. For example, a user may enable the zone player 11(2) to
leave the synchrony group with zone player 11(1), and join the synchrony
group with zone player 11(6). As another possibility, the user may enable
the zone player 11(1) to leave the synchrony group with zone player 11(2)
and join the synchrony group with zone player 11(6). In connection with
the last possibility, the zone player 11(1) can continue providing audio
information from the audio information source 14(1)(1) to the zone player
11(2) for playback thereby.

[0023] A user, using the user interface module 13, can enable a zone
player 11(n) that is currently not a member of a synchrony group to join
a synchrony group, after which it will be enabled to play the audio
program that is currently being played by that synchrony group.
Similarly, a user, also using the user interface module 13, can enable a
zone player 11(n) that is currently a member of one synchrony group, to
disengage from that synchrony group and join another synchrony group,
after which that zone player will be playing the audio program associated
with the other synchrony group. For example, if a zone player 11(6) is
currently not a member of any synchrony group, it, under control of the
user interface module 13, can become a member of a synchrony group, after
which it will play the audio program being played by the other members of
the synchrony group, in synchrony with the other members of the synchrony
group. In becoming a member of the synchrony group, zone player 11(6) can
notify the zone player that is the master device for the synchrony group
that it wishes to become a member of its synchrony group, after which
that zone player will also transmit audio information associated with the
audio program, as well as timing information, to the zone player 11(6).
As the zone player 11(6) receives the audio information and the timing
information from the master device, it will play the audio information
with the timing indicated by the timing information, which will enable
the zone player 11(6) to play the audio program in synchrony with the
other zone player(s) in the synchrony group.

[0024] Similarly, if a user, using the user interface module 13, enables a
zone player 11(n) associated with a synchrony group to disengage from
that synchrony group, and if the zone player 11(n) is not the master
device of the synchrony group, the zone player 11(n) can notify the
master device, after which the master device can terminate transmission
of the audio information and timing information to the zone player 11(n).
If the user also enables the zone player 11(n) to begin playing another
audio program using audio information from an audio information source
14(n)(s) connected thereto, it will acquire the audio information from
the audio information source 14(n)(s) and initiate playback thereof. If
the user enables another zone player 11(n') to join the synchrony group
associated with zone player 11(n), operations in connection therewith can
proceed as described immediately above.

[0025] As yet another possibility, if a user, using the user interface
module 13, enables a zone player 11(n) associated with a synchrony group
to disengage from that synchrony group and join another synchrony group,
and if the zone player is not the master device of the synchrony group
from which it is disengaging, the zone player 11(n) can notify the master
device of the synchrony group from which it is disengaging, after which
that zone player will terminate transmission of audio information and
timing information to the zone player 11(n) that is disengaging.
Contemporaneously, the zone player 11(n) can notify the master device of
the synchrony group that it (that is, zone player 11(n)) is joining,
after which the master device can begin transmission of audio information
and timing information to that zone player 11(n). The zone player 11(n)
can thereafter begin playback of the audio program defined by the audio
information, in accordance with the timing information so that the zone
player 11(n) will play the audio program in synchrony with the master
device.

[0026] As yet another possibility, a user, using the user interface module
13, may enable a zone player 11(n) that is not associated with a
synchrony group, to begin playing an audio program using audio
information provided to it by an audio information source 14(n)(s)
connected thereto. In that case, the user, also using the user interface
module 13 or a user interface device that is specific to the audio
information source 14(n)(s), can enable the audio information source
14(n)(s) to provide audio information to the zone player 11(n). After the
zone player 11(n) has begun playback, or contemporaneously therewith, the
user, using the user interface module 13, can enable other zone players
11(n'), 11(n''), . . . to join zone player 11(n)'s synchrony group and
enable that zone player 11(n) to transmit audio information and timing
information thereto as described above, to facilitate synchronous
playback of the audio program by the other zone players 11(n'), 11(n'') .
. . .

[0027] A user can use the user interface module 13 to control other
aspects of the network audio system 10, including but not limited to the
selection of the audio information source 14(n)(s) that a particular zone
player 11(n) is to utilize, the volume of the audio playback, and so
forth. In addition, a user may use the user interface module 13 to turn
audio information source(s) 14(n)(s) on and off and to enable them to
provide audio information to the respective zone players 11(n).

[0028] Operations performed by the various devices associated with a
synchrony group will be described in connection with FIG. 2, which
schematically depicts a functional block diagram of a synchrony group in
the network audio system 10 described above in connection with FIG. 1.
With reference to FIG. 2, a synchrony group 20 includes a master device
21 and zero or more slave devices 22(1) through 22 (G) (generally
identified by reference numeral 22(g)), all of which synchronously play
an audio program provided by an audio information channel device 23. Each
of the master device 21, slave devices 22(g) and audio information
channel device 23 utilizes a zone player 11(n) depicted in FIG. 1,
although it will be clear from the description below that a zone player
may be utilized both for the audio information channel device for the
synchrony group 20, and the master device 21 or a slave device 22(g) of
the synchrony group 20. As will be described below in more detail, the
audio information channel device 23 obtains the audio information for the
audio program from an audio information source, adds playback timing
information, and transmits the combined audio and playback timing
information to the master device 21 and slave devices 22(g) over the
network 12 for playback. The playback timing information that is provided
with the audio information, together with clock timing information
provided by the audio information channel device 23 to the various
devices 21 and 22(g) as will be described below, enables the master
device 21 and slave devices 22(g) of the synchrony group 20 to play the
audio information simultaneously.

[0029] The master device 21 and the slave devices 22(g) receive the audio
and playback timing information, as well as the clock timing information,
that are provided by the audio information channel device 23, and play
back the audio program defined by the audio information. The master
device 21 is also the member of the synchrony group 20 that communicates
with the user interface module 13 and that controls the operations of the
slave devices 22(g) in the synchrony group 20. In addition, the master
device 21 controls the operations of the audio information channel device
23 that provides the audio and playback timing information for the
synchrony group 20. Generally, the initial master device 21 for the
synchrony group will be the first zone player 11(n) that a user wishes to
play an audio program. However, as will be described below, the zone
player 11(n) that operates as the master device 21 can be migrated from
one zone player 11(n) to another zone player 11(n'), which preferably
will be a zone player that is currently operating as a slave device 22(g)
in the synchrony group.

[0030] In addition, under certain circumstances, as will be described
below, the zone player 11(n) that operates as the audio information
channel device 23 can be migrated from one zone player to another zone
player, which also will preferably will be a zone player that is
currently operating as a member of the synchrony group 20. It will be
appreciated that the zone player that operates as the master device 21
can be migrated to another zone player independently of the migration of
the audio information channel device 23. For example, if one zone player
11(n) is operating as both the master device 21 and the audio information
channel device 23 for a synchrony group 20, the master device 21 can be
migrated to another zone player 11(n') while the zone player 11(n) is
still operating as the audio information channel device 23. Similarly, if
one zone player 11(n) is operating as both the master device 21 and the
audio information channel device 23 for a synchrony group 20, the audio
information channel device 23 can be migrated to another zone player
11(n') while the zone player 11(n) is still operating as the master
device 21. In addition, if one zone player 11(n) is operating as both the
master device 21 and the audio information channel device 23 for a
synchrony group 20, the master device 21 can be migrated to another zone
player 11(n') and the audio information channel device can be migrated to
a third zone player 11(n'').

[0031] The master device 21 receives control information from the user
interface module 13 for controlling the synchrony group 20 and provides
status information indicating the operational status of the synchrony
group to the user interface module 13. Generally, the control information
from the user interface module 13 enables the master device 21 to, in
turn, enable the audio information channel device 23 to provide audio and
playback timing information to the synchrony group to enable the devices
21 and 22(g) that are members of the synchrony group 20 to play the audio
program synchronously. In addition, the control information from the user
interface module 13 enables the master device 21 to, in turn, enable
other zone players to join the synchrony group as slave devices 22(g) and
to enable slave devices 22(g) to disengage from the synchrony group.
Control information from the user interface module 13 can also enable the
zone player 11(n) that is currently operating as the master device 21 to
disengage from the synchrony group, but prior to doing so that zone
player will enable the master device 21 to transfer from that zone player
11(n) to another zone player 11(n'), preferably to a zone player 11(n')
that is currently a slave device 22(g) in the synchrony group 20. The
control information from the user interface module 13 can also enable the
master device 21 to adjust its playback volume and to enable individual
ones of the various slave devices 22(g) to adjust their playback volumes.
In addition, the control information from the user interface module 13
can enable the synchrony group 20 to terminate playing of a current track
of the audio program and skip to the next track, and to re-order tracks
in a play list of tracks defining the audio program that is to be played
by the synchrony group 20.

[0032] The status information that the master device 21 may provide to the
user interface module 13 can include such information as a name or other
identifier for the track of the audio work that is currently being
played, the names or other identifiers for upcoming tracks, the
identifier of the zone player 11(n) that is currently operating as the
master device 21, and identifiers of the zone players that are currently
operating as slave devices 22(g). In one embodiment, the user interface
module 13 includes a display (not separately shown) that can display the
status information to the user.

[0033] It will be appreciated that the zone player 11(n) that is operating
as the audio information channel device 23 for one synchrony group may
also comprise the master device 21 or any of the slave devices 22(g) in
another synchrony group. This may occur if, for example, the audio
information source that is to provide the audio information that is to be
played by the one synchrony group is connected to a zone player also
being utilized as the master device or a slave device for the other
synchrony group. This will be schematically illustrated below in
connection with FIG. 2A. Since, as noted above, the zone player 11(n)
that is operating as the audio information channel device 23 for the
synchrony group 20 may also be operating as a master device 21 or slave
device 22(g) for another synchrony group, it can also be connected to one
or more audio reproduction devices 15(n)(r), although that is not
depicted in FIG. 2. Since the master device 21 and slave devices 22(g)
are all to provide playback of the audio program, they will be connected
to respective audio reproduction devices 15(n)(r). Furthermore, it will
be appreciated that one or more of the zone players 11(n) that operate as
the master device 21 and slave devices 22(g) in synchrony group 20 may
also operate as an audio information channel device for that synchrony
group or for another synchrony group and so they may be connected to one
or more audio information sources 14(n)(s), although that is also not
depicted in FIG. 2. In addition, it will be appreciated that a zone
player 11(n) can also operate as a audio information channel device 23
for multiple synchrony groups.

[0034] If the audio information channel device 23 does not utilize the
same zone player as the master device 21, the master device 21 controls
the audio information channel device by exchanging control information
over the network 12 with the audio information channel device 23. The
control information is represented in FIG. 2 by the arrow labeled
CHAN_DEV_CTRL_INFO. The control information that the master device 21
provides to the audio information channel device 23 will generally depend
on the nature of the audio information source that is to provide the
audio information for the audio program that is to be played and the
operation to be enabled by the control information. If, for example, the
audio information source is a conventional compact disc, tape, or record
player, broadcast radio receiver, or the like, which is connected to a
zone player 11(n), the master device 21 may merely enable the zone player
serving as the audio information channel device 23 to receive the audio
information for the program from the audio information source. It will be
appreciated that, if the audio information is not in digital form, the
audio information channel device 23 will convert it to digital form and
provide the digitized audio information, along with the playback timing
information, to the master device 21 and slave devices 22(g).

[0035] On the other hand, if the audio information source is, for example,
a digital data storage device, such as may be on a personal computer or
similar device, the master device 21 can provide a play list to the audio
information channel device 23 that identifies one or more files
containing the audio information for the audio program. In that case, the
audio information channel device 23 can retrieve the files from the
digital data storage device and provide them, along with the playback
timing information, to the master device 21 and the slave devices 22(g).
It will be appreciated that, in this case, the audio information source
may be directly connected to the audio information channel device 23, as,
for example, an audio information source 14(n)(s), or it may comprise an
audio information source 16(m) connected to the network 12. As a further
alternative, if the audio information source is a source available over
the wide area network, the master device 21 can provide a play list
comprising a list of web addresses identifying the files containing the
audio information for the audio program that is to be played, and in that
connection the audio information channel device 23 can initiate a
retrieval of the files over the wide area network. As yet another
alternative, if the audio information source is a source of streaming
audio received over the wide area network, the master device 21 can
provide a network address from which the streaming audio can be received.
Other arrangements by which the master device 21 can control the audio
information channel device 23 will be apparent to those skilled in the
art.

[0036] The master device 21 can also provide control information to the
synchrony group's audio information channel device 23 to enable a
migration from one zone player 11(n) to another zone player 11(n'). This
may occur if, for example, the audio information source is one of audio
information sources 16 or a source accessible over the wide area network
via the network 12. The master device 21 can enable migration of the
audio information channel device 23 for several reasons, including, for
example, to reduce the loading of the zone player 11(n), to improve
latency of message transmission in the network 12, and other reasons as
will be appreciated by those skilled in the art.

[0037] As noted above, the audio information channel device 23 provides
audio and playback timing information for the synchrony group to enable
the master device 21 and slave devices 22(g) to play the audio program
synchronously. Details of the audio and playback timing information will
be described in detail below in connection with FIGS. 3 and 4, but, in
brief, the audio information channel device 23 transmits the audio and
playback timing information in messages over the network 12 using a
multi-cast message transmission methodology. In that methodology, the
audio information channel device 23 will transmit the audio and playback
timing information in a series of messages, with each message being
received by all of the zone players 11(n) comprising the synchrony group
20, that is, by the master device 21 and the slave devices 22(g). Each of
the messages includes a multi-cast address, which the master device 21
and slave devices 22(g) will monitor and, when they detect a message with
that address, they will receive and use the contents of the message. The
audio and playback timing information is represented in FIG. 2 by the
arrow labeled "AUD+PBTIME_INFO," which has a single tail, representing a
source for the information at the audio information channel device 23,
and multiple arrowheads representing the destinations of the information,
with one arrowhead extending to the master device 21 and other arrowheads
extending to each of the slave devices 22(g) in the synchrony group 20.
The audio information channel device 23 may make use of any convenient
multi-cast message transmission methodology in transmitting the audio and
playback timing information to the synchrony group 20. As will be
described in detail in connection with FIG. 4, the audio and playback
timing information is in the form of a series of frames, with each frame
having a time stamp. The time stamp indicates a time, relative to the
time indicated by a clock maintained by the audio information channel
device 23, at which the frame is to be played. Depending on the size or
sizes of the messages used in the selected multi-cast message
transmission methodology and the size or sizes of the frames, a message
may contain one frame, or multiple frames, or, alternatively, a frame may
extend across several messages.

[0038] The audio information channel device 23 also provides clock time
information to the master device 21 and each of the slave devices 22(g)
individually over network 12 using a highly accurate clock time
information transmission methodology. The distribution of the clock time
information is represented in FIG. 2 by the arrows labeled "AICD_CLK_INF
(M)" (in the case of the clock time information provided to the master
device 21) and "AICD_CLK_INF (SI)" through "AICD_CLK_INF (SG)"
(in the case of audio information channel device clock information
provided to the slave devices 22(g)). In one embodiment, the master
device 21 and slave devices 22(g) make use of the well-known SNTP (Simple
Network Time Protocol) to obtain current clock time information from the
audio information channel device 23. The SNTP makes use of a unicast
message transfer methodology, in which one device, such as the audio
information channel device 23, provides clock time information to a
specific other device, such as the master device 21 or a slave device
22(g), using the other device's network, or unicast, address. Each of the
master device 21 and slave devices 22(g) will periodically initiate SNTP
transactions with the audio information channel device 23 to obtain the
clock time information from the audio information channel device 23. As
will be described below in more detail, the master device 21 and each
slave device 22(g) make use of the clock time information to determine
the time differential between the time indicated by the audio information
channel device's clock and the time indicated by its respective clock,
and use that time differential value, along with the playback time
information associated with the audio information and the respective
device's local time as indicated by its clock to determine when the
various frames are to be played. This enables the master device 21 and
the slave devices 22(g) in the synchrony group 20 to play the respective
frames simultaneously.

[0039] As noted above, the control information provided by the user to the
master device 21 through the user interface module 13 can also enable the
master device 21 to, in turn, enable another zone player 11(n') to join
the synchrony group as a new slave device 22(g). In that operation, the
user interface module 13 will provide control information, including the
identification of the zone player 11(n') that is to join the synchrony
group to the master device 21. After it receives the identification of
the zone player 11(n') that is to join the synchrony group, the master
device 21 will exchange control information, which is represented in FIG.
2 by the arrows labeled SLV_DEV_CTRL_INF (S1) through
SLV_DEV_CTRL_INF (SG) group slave control information, over the
network 12 with the zone player 11(d) that is identified in the control
information from the user interface module 13. The control information
that the master device 21 provides to the new zone player 11(n') includes
the network address of the zone player 11(n) that is operating as the
audio information channel device 23 for the synchrony group, as well as
the multi-cast address that the audio information channel device 23 is
using to broadcast the audio and playback timing information over the
network. The zone player that is to operate as the new slave device
22(g') uses the multi-cast address to begin receiving the multi-cast
messages that contain the audio information for the audio program being
played by the synchrony group.

[0040] It will be appreciated that, if the zone player 11(n) that is
operating as the master device 21 for the synchrony group 20 is also
operating the audio information channel device 23, and if there are no
slave devices 22(g) in the synchrony group 20, the audio information
channel device 23 may not be transmitting audio and playback timing
information over the network. In that case, if the new slave device
22(g') is the first slave device in the synchrony group, the zone player
11(n) that is operating as both the master device 21 and audio
information channel device 23, can begin transmitting the audio and
playback timing information over the network 12 when the slave device
22(g') is added to the synchrony group 20. The zone player 11(n) can
maintain a count of the number of slave devices 22(g) in the synchrony
group 20 as they join and disengage, and, if the number drops to zero, it
can stop transmitting the audio and playback timing information over the
network 12 to reduce the message traffic over the network 12.

[0041] The new slave device 22(g') added to the synchrony group 20 uses
the network address of the audio information channel device 23 for
several purposes. In particular, the new slave device 22(g') will, like
the master device 21 (assuming the zone player 11(n) operating as the
master device 21 is not also the audio information channel device 23),
engage in SNTP transactions with the audio information channel device 23
to obtain the clock timing information from the audio information channel
device 23. In addition, the new slave device 22(g') can notify the audio
information channel device 23 that it is a new slave device 22(g') for
the synchrony group 20 and provide the audio information channel device
23 with its network address. As will be described below, in one
embodiment, particularly in connection with audio information obtained
from a source, such as a digital data storage device, which can provide
audio information at a rate that is faster than the rate at which it will
be played, the audio information channel device 23 will buffer audio and
timing information and broadcast it over the network 12 to the synchrony
group 20 generally at a rate at which it is provided by the source.
Accordingly, when a new slave device 22(g') joins the synchrony group 20,
the playback timing information may indicate that the audio information
that is currently being broadcast by the audio information channel device
23 using the multi-cast methodology is to be played back some time in the
future. To reduce the delay with which the new slave device 22(g') will
begin playback, the audio information channel device 23 can also
retransmit previously transmitted audio and timing information that it
had buffered to the new slave device 22(g') using the unicast network
address of the slave device 22(g').

[0042] The master device 21 can also use the slave device control
information exchanged with the slave devices 22(g) for other purposes.
For example, the master device 21 can use the slave device control
information to initiate a migration of the master from its zone player
11(n) to another zone player 11(n'). This may occur for any of a number
of reasons, including, for example, that the master device 21 is
terminating playback by it of the audio program and is leaving the
synchrony group 20, but one or more of the other devices in the synchrony
group is to continue playing the audio program. The master device 21 may
also want to initiate a migration if it is overloaded, which can occur
if, for example, the zone player 11(n) that is the master device 21 for
its synchrony group is also operating as an audio information channel
device 23 for another synchrony group.

[0043] The user can also use the user interface module 13 to adjust
playback volume by the individual zone players 11(n) comprising the
synchrony group. In that operation, the user interface module 13 provides
information identifying the particular device whose volume is to be
adjusted, and the level at which the volume is to be set to the master
device 21. If the device whose volume is to be adjusted is the master
device 21, the master device 21 can adjust its volume according to the
information that it receives from the user interface module 13. On the
other hand, if the device whose volume is to be adjusted is a slave
device 22(g), the master device 21 can provide group slave control
information to the respective slave device 22(g), to enable it to adjust
its volume.

[0044] The user can also use the user interface module 13 to enable a
synchrony group 20 to cancel playing of the track in an audio program
that is currently being played, and to proceed immediately to the next
track. This may occur, for example, if the tracks for the program is in
the form of a series of digital audio information files, and the user
wishes to cancel playback of the track that is defined by one of the
files. In that case, when the master device 21 receives the command to
cancel playback of the current track, it will provide channel device
control information to the audio information channel device 23 so
indicating. In response, the audio information channel device 23 inserts
control information into the audio and playback timing information, which
will be referred to as a "resynchronize" command. In addition, the audio
information channel device 23 will begin transmitting audio information
for the next track, with timing information to enable it to be played
immediately. The resynchronize command can also enable playback of a
track to be cancelled before it has been played. Details of these
operations will be described below.

[0045] As noted above, there may be multiple synchrony groups in the
network audio system 10, and further that, for example, a zone player
11(n) may operate both as a master device 21 or a slave device 22(g) in
one synchrony group, and as the audio information channel device 23
providing audio and playback timing information and clock timing
information for another synchrony group. An illustrative arrangement of
this will be described in connection with FIG. 2A. With reference to FIG.
2A, that FIG. depicts elements of two synchrony groups, identified by
reference numerals 20(1) and 20(2), respectively. For clarity, FIG. 2A
does not show a number of elements, the presence of which would be
evident from FIGS. 1 and 2 as described above. For example, FIG. 2A does
not depict the audio information sources from which audio information is
obtained for the synchrony groups or the audio reproduction devices that
are used to produce sound for the master and slave devices, which are
depicted in both FIGS. 1 and 2. In addition, FIG. 2A does not depict
arrows that represent control information provided by the respective
master devices to the slave devices in the respective synchrony groups,
or to the audio information channel devices that provide audio and timing
information for the respective synchrony groups, which are depicted in
FIG. 2. In addition, FIG. 2A does not depict the arrows that represent
the clock timing information provided by the audio information channel
devices to the respective members of the respective synchrony groups,
which are also depicted in FIG. 2. As will be noted below, however, FIG.
2A does depict arrows representing the audio and playback timing
information provided by the respective audio information channel devices
for the respective synchrony groups 20(1), 20(2), to the master and slave
devices comprising the respective synchrony groups 20(1), 20(2).

[0046] Each synchrony group 20(1), 20(2) comprises elements of a number of
zone players. A functional block diagram of a zone player will be
described below in connection with FIG. 3. Synchrony group 20(1) includes
a master device 21(1) and "K" slave devices 22(1)(1) through 22(K)(1)
(the index "1" in reference numeral 21(1) and the last index in reference
numeral 22(1)(1) through 21(K)(1) corresponds to the index of the
synchrony group 20(1) to which they belong) utilize zone players 11(1)
and 11(K+1) respectively. Similarly, synchrony group 20(2) includes a
master device 21(2) and "L" slave devices 22(1)(2) through 22(L)(2) that
utilize zone players 11(K+2) through 11(K+L+2). In the illustrative
arrangement depicted in FIG. 2A, both synchrony groups 20(1) and 20(2)
are controlled by the user interface module 13, which can provide control
information to, and receive status information from, the master devices
21(1) and 21(2) independently. It will be appreciated that separate user
interface modules may be provided to provide control information to, and
receive status information from, the respective master devices 21(1),
21(2).

[0047] As noted above, the slave device 22(1)(2) in synchrony group 20(2)
utilizes zone player 11(K+3). In the illustrative arrangement depicted in
FIG. 2A, the audio information channel device 23(1) that provides audio
and playback timing information to the master and slave devices 21(1),
22(1)(1), . . . , 22(K)(1) of synchrony group 20(1) also utilizes zone
player 11(K+3). As noted above, this may occur if, for example, the audio
information source that is to provide audio information to be played by
the synchrony group 20(1) is connected to the zone player 11(K+3). Thus,
when the master device 21(1) of synchrony group 20(1) exchanges channel
device control information with the audio information channel device
23(1), it is effectively exchanging channel device control information
with the zone player 11(K+3). Similarly, when the master and slave
devices 21(1), 22(1)(1), . . . , 22(K)(1) of synchrony group 20(1)
receive audio and playback timing information, as well as clock timing
information, from the audio information channel device 23(1), they are
effectively receiving the information from the zone player 11(K+3). FIG.
2A depicts a multi-headed arrow representing audio and playback timing
information transmitted by the zone player 11(K+3), as audio information
channel device 23(1), to the master and slave devices 21(1), 22(1)(1), .
. . , 11(K)(1) comprising synchrony group 20(1).

[0048] On the other hand, in the illustrative arrangement depicted in FIG.
2A, the synchrony group 20(2) utilizes a zone player 11(K+L+3) as its
audio information channel device 23(2). As with synchrony group 20(1),
when the master device 21(2) of synchrony group 20(2) exchanges channel
device control information with the audio information channel device
23(2), it is effectively exchanging channel device control information
with the zone player 11(K+L+3). Similarly, when the master and slave
devices 21(2), 22(1)(2), . . . , 22(L)(2) of synchrony group 20(2)
receive audio and playback timing information, as well as clock timing
information, from the audio information channel device 23(2), they are
effectively receiving the information from the zone player 11(K+L+3).
FIG. 2A depicts a multi-headed arrow representing audio and playback
timing information transmitted by the zone player 11(K+3) as audio
information channel device 23(2) to the master and slave devices 21(2),
22(1)(2), . . . , 22(L)(2) comprising synchrony group 20(2).

[0049] In the illustrative arrangement depicted in FIG. 2A, zone player
11(K+L+3), which is the audio information channel device 23(2) for
synchrony group 20(2), is not shown as being either a master or a slave
device in another synchrony group. However, it will be appreciated that
zone player 11(K+L+3) could also be utilized as the master device or a
slave device for another synchrony group. Indeed, it will be appreciated
that the zone player that is utilized as the audio information channel
device for synchrony group 20(2) may also be a zone player that is
utilized as the master device 21(1) or a slave device 22(1)(1), . . . ,
22(K)(1) in the synchrony group 20(1).

[0050] A zone player 11(n) that is utilized as a member of one synchrony
group may also be utilized as the audio information channel device for
another synchrony group if the audio information source that is to supply
the audio information that is to be played by the other synchrony group
is connected to that zone player 11(n). A zone player 11(n) may also be
utilized as the audio information channel device for the other synchrony
group if, for example, the audio information source is an audio
information source 16(m) (FIG. 1) that is connected to the network 12 or
an audio information source that is available over a wide area network
such as the Internet. The latter may occur if, for example, the zone
player 11(n) has sufficient processing power to operate as the audio
information channel device and it is in an optimal location in the
network 12, relative to the zone players comprising the other synchrony
group (that is the synchrony group for which it is operating as audio
information channel device) for providing the audio and playback timing
information to the members of the other synchrony group. Other
circumstances under which the zone player 11(n) that is utilized as a
member of one synchrony group may also be utilized as the audio
information channel device for another synchrony group will be apparent
to those skilled in the art.

[0051] As was noted above, the master device 21 for a synchrony group 20
may be migrated from one zone player 11(n) to another zone player 11(n').
As was further noted above, the audio information channel device 23 for a
synchrony group 20 may be migrated from one zone player 11(n) to another
zone player 11(n'). It will be appreciated that the latter may occur if,
for example, the audio information source that provides the audio program
for the synchrony group is not connected to the zone player 11(n) that is
operating as the audio information channel device 23, but instead is one
of the audio information sources 16(m) connected to the network 12 or a
source available over a wide area network such as the Internet.
Operations performed during a migration of an audio information channel
device 23 from one zone player 11(n) to another zone player 11(n') will
generally depend on the nature of the audio information that is being
channeled by the audio information channel device 23. For example, if the
audio information source provides streaming audio, the zone player 11(n)
that is currently operating as the audio information channel device 23
for the synchrony group 20, can provide the following information to the
other zone player 11(n') that is to become the audio information channel
device 23 for the synchrony group 20:

[0052] (a) the identification of the source of the streaming audio
information,

[0053] (b) the time stamp associated with the frame that the zone player
11(n) is currently forming, and

[0054] (c) the identifications of the zone players that are operating as
the master device 21 and slave devices 22(g) comprising the synchrony
group 20.

After the zone player 11(n') receives the information from the zone
player 11(n), it will begin receiving the streaming audio from the
streaming audio information source identified by the zone player 11(n),
assemble the streaming audio information into frames, associate each
frame with a time stamp, and transmit the resulting audio and playback
timing information over the network 12. The zone player 11(n') will
perform these operations in the same manner as described above, except
that, instead of using the time indicated by its digital to analog
converter clock 34 directly in generating the time stamps for the frames,
the initial time stamp will be related to the value of the time stamp
that is provided by the zone player 11(n) (reference item (b) above),
with the rate at which the time stamps are incremented corresponding to
the rate at which its (that is, the zone player 11(n')'s) clock
increments. In addition, the zone player 11(n') will notify the zone
players that are operating as the master device 21 and slave devices
22(g) of the synchrony group 20 that it is the new audio information
channel device 23 for the synchrony group 20, and provide the multi-cast
address that it will be using to multi-cast the audio and playback timing
information, as well as its unicast network address. After the members of
the synchrony group 20 receive the notification from the zone player
11(n') indicating that it is the new audio information channel device 23
for the synchrony group 20, they will receive the audio and playback
timing information from the zone player 11(n') instead of the zone player
11(n), using the multi-cast address provided by the zone player 11(n').
In addition, they can utilize the zone player 11(n')'s unicast network
address to obtain current time information therefrom. It will be
appreciated that the zone player 11(n') will determine its current time
in relation to the time stamp that is provided by the zone player 11(n)
(reference item (b) above) or the current time information that it
received from the zone player 11(n) using the SNTP protocol as described
above.

[0055] Generally similar operations can be performed in connection with
migrating the audio information channel device from one zone player 11(n)
to another zone player 11(n') if the audio information is from one or
more audio information files, such as may be the case if the audio
information comprises MP3 or WAV files that are available from sources
such as sources 16(m) connected to the network 12 or over from sources
available over a wide area network such as the Internet, except for
differences to accommodate the fact that the audio information is in
files. In that case, the zone player 11(n) that is currently operating as
the audio information channel device 23 for the synchrony group 20 can
provide the following information to the zone player 11(n') that is to
become the audio information channel device 23 for the synchrony group
20:

[0056] (d) a list of the audio information files containing the audio
information that is to be played;

[0057] (e) the identification of the file for which the zone player 11(n)
is currently providing audio and playback timing information, along with
the offset into the file for which the current item of audio and playback
timing information is being generated and the time stamp that the zone
player 11(n) is associating with that frame, and

[0058] (f) the identifications of the zone players that comprise the
master device 21 and slave devices 22(g) comprising the synchrony group
20.

After the zone player 11(n') receives the information from the zone
player 11(n), it will begin retrieving audio information from the file
identified in item (e), starting at the identified offset. In addition,
the zone player 11(n') can assemble the retrieved audio information into
frames, associate each frame with a time stamp and transmit the resulting
audio and playback timing information over the network 12. The zone
player 11(n') will perform these operations in the same manner as
described above, except that, instead of using the time indicated by its
digital to analog converter clock 34 directly in generating the time
stamps for the frames, the value of the initial time stamp will be
related to the time stamp that is provided by the zone player 11(n)
(reference item (e) above), with the rate at which the time stamps are
incremented corresponding to the rate at which its (that is, the zone
player 11(n')'s) clock increments. In addition, the zone player 11(n')
will notify the zone players that are operating as the master device 21
and slave devices 22(g) of the synchrony group 20 that it is the new
audio information channel device 23 for the synchrony group 20, and
provide the multi-cast address that it will be using to multi-cast the
audio and playback timing information, as well as its unicast network
address. After the members of the synchrony group 20 receive the
notification from the zone player 11(n') indicating that it is the new
audio information channel device 23 for the synchrony group 20, they will
receive the audio and playback timing information from the zone player
11(n') instead of the zone player 11(n), using the multi-cast address
provided by the zone player 11(n'). In addition, they can utilize the
zone player 11(n')'s unicast network address to obtain current time
information therefrom. It will be appreciated that the zone player 11(n')
will determine its current time in relation to the time stamp that is
provided by the zone player 11(n) (reference item (b) above) or the
current time information that it received from the zone player 11(n)
using the SNTP protocol as described above. The zone player 11(n') will
process successive audio information files in the list that it receives
from the zone player 11(n) (reference item (d)).

[0059] Operations performed by the zone players 11(n) and 11(n') in
connection with migration of the audio information channel device 23 for
other types of audio information will be apparent to those skilled in the
art. In any case, preferably, the zone player 11(n) will continue
operating as an audio information channel device 23 for the synchrony
group 20 for at least a brief time after it notifies the zone player
11(n') that it is to become audio information channel device for the
synchrony group, so that the zone player 11(n') will have time to notify
the zone players in the synchrony group 20 that it is the new audio
information channel device 23 for the synchrony group.

[0060] Before proceeding further in describing operations performed by the
network audio system 10, it would be helpful to provide a detailed
description of a zone player 11(n) constructed in accordance with the
invention. FIG. 3 depicts a functional block diagram of a zone player
11(n) constructed in accordance with the invention. All of the zone
players in the network audio system 10 may have similar construction.
With reference to FIG. 3, the zone player 11(n) includes an audio
information source interface 30, an audio information buffer 31, a
playback scheduler 32, a digital to analog converter 33, an audio
amplifier 35, an audio reproduction device interface 36, a network
communications manager 40, and a network interface 41, all of which
operate under the control of a control module 42. The zone player 11(n)
also has a device clock 43 that provides timing signals that control the
general operations of the zone player 11(n). In addition, the zone player
11(n) includes a user interface module interface 44 that can receive
control signals from the user interface module 13 (FIGS. 1 and 2) for
controlling operations of the zone player 11(n), and provide status
information to the user interface module 13.

[0061] Generally, the audio information buffer 31 buffers audio
information, in digital form, along with playback timing information. If
the zone player 11(n) is operating as the audio information channel
device 23 (FIG. 2) for a synchrony group 20, the information that is
buffered in the audio information buffer 31 will include the audio and
playback timing information that will be provided to the devices 21 and
22(g) in the synchrony group 20. If the zone player 11(n) is operating as
the master device 21 or a slave device 22(g) for a synchrony group, the
information that is buffered in the audio information buffer 31 will
include the audio and playback timing information that the zone player
11(n) is to play.

[0062] The audio information buffer 31 can receive audio and playback
timing information from two sources, namely, the audio information source
interface 30 and the network communications manager 40. In particular, if
the zone player 11(n) is operating as the audio information channel
device 23 for a synchrony group 20, and if the audio information source
is a source 14(n)(s) connected to the zone player 11(n), the audio
information buffer 31 will receive and buffer audio and playback timing
information from the audio information source interface 30. On the other
hand, if the zone player 11(n) is operating as the audio information
channel device 23 for a synchrony group 20, and if the audio information
source is a source 16(m) connected to the network 12, or a source
available over the wide area network, the audio information buffer 31
will receive and buffer audio and playback timing information from the
network communications manager 40. It will be appreciated that, if the
zone player 11(n) is not a member of the synchrony group, the zone player
11(n) will not play this buffered audio and playback timing information.

[0063] On yet another hand, if the zone player 11(n) is operating as the
master device 21 or a slave device 22(g) in a synchrony group, and if the
zone player 11(n) is not also the audio information channel device 23
providing audio and playback timing information for the synchrony group
20, the audio information buffer 31 will receive and buffer audio and
playback timing information from the network communications manager 40.

[0064] The audio information source interface 30 connects to the audio
information source(s) 14(n)(s) associated with the zone player 11(n).
While the zone player 11(n) is operating as audio information channel
device 23 for a synchrony group 20, and if the audio information is to be
provided by a source 14(n)(s) connected to the zone player 11(n), the
audio information source interface 30 will selectively receive audio
information from one of the audio information source(s) 14(n)(s) to which
the zone player is connected and store the audio information in the audio
information buffer 21. If the audio information from the selected audio
information source 14(n)(s) is in analog form, the audio information
source interface 30 will convert it to digital form. The selection of the
audio information source 14(n)(s) from which the audio information source
interface 30 receives audio information is under control of the control
module 42, which, in turn, receives control information from the user
interface module through the user interface module interface 44. The
audio information source interface 30 adds playback timing information to
the digital audio information and buffers the combined audio and playback
timing information in the audio information buffer 21.

[0065] More specifically, as noted above, the audio information source
interface 30 receives audio information from an audio information source
14(n)(s), converts it to digital form if necessary, and buffers it along
with playback timing information in the audio information buffer 21. In
addition, the audio information source interface 30 will also provide
formatting and scheduling information for the digital audio information,
whether as received from the selected audio information source 14(n)(s)
or as converted from an analog audio information source. As will be made
clear below, the formatting and scheduling information will control not
only playback by the zone player 11(n) itself, but will also enable other
zone players 11(n'), 11(n''), . . . that may be in a synchrony group for
which the zone player 11(n) is the master device, to play the audio
program associated with the audio information in synchrony with the zone
player 11(n).

[0066] In one particular embodiment, the audio information source
interface 30 divides the audio information associated with an audio work
into a series of frames, with each frame comprising digital audio
information for a predetermined period of time. As used herein, an audio
track may comprise any unit of audio information that is to be played
without interruption. On the other hand, an audio program may comprise a
series of one or more audio tracks that are to be played in succession.
It will be appreciated that the tracks comprising the audio program may
also be played without interruption, or alternatively playback between
tracks may be interrupted by a selected time interval. FIG. 4
schematically depicts an illustrative framing strategy used in connection
with one embodiment of the invention for a digital audio stream
comprising an audio work. More specifically, FIG. 4 depicts a framed
digital audio stream 50 comprising a sequence of frames 51(1) through
51(F) (generally identified by reference numeral 51(f)). Each frame
51(f), in turn, comprises a series of audio samples 52(f)(1) through
52(f)(S) (generally identified by reference numeral 52(f)(s)) of the
audio track. Preferably all of the frames will have the same number "S"
of audio samples, although it will be appreciated from the following that
that is primarily for convenience. On the other hand, it will be
appreciated that, the number of audio samples may differ from "S"; this
may particularly be the case if the frame 51(f) contains the last audio
samples for the digital audio stream for a particular audio work. In that
case, the last frame 51(F) will preferably contain samples 52(F)(1)
through 52(F)(x), where "x" is less than "S." Generally, it is desirable
that the number of samples be consistent among all frames 51(f), and in
that case padding, which will not be played, can be added to the last
frame 51(F).

[0067] Associated with each frame 51(f) is a header 55(f) that includes a
number of fields for storing other information that is useful in
controlling playback of the audio samples in the respective frame 51(f).
In particular, the header 55(f) associated with a frame 51(f) includes a
frame sequence number field 56, an encoding type field 57, a sampling
rate information field 58, a time stamp field 60, an end of track flag
61, and a length flag field 62. The header 55(f) may also include fields
(not shown) for storing other information that is useful in controlling
playback. Generally, the frame sequence number field 56 receives a
sequence number "f" that identifies the relative position of the frame
51(f) in the sequence of frames 51(1) . . . 51(f) . . . 51(F) containing
the digital audio stream 50. The encoding type field 57 receives a value
that identifies the type of encoding and/or compression that has been
used in generating the digital audio stream. Conventional encoding or
compression schemes include, for example, the well-known MP3 and WAV
encoding and/or compression schemes, although it will be appreciated that
other schemes may be provided for as well. The sampling rate information
field 58 receives sampling rate information that indicates the sampling
rate for the audio samples 52(f)(s). As will be apparent to those skilled
in the art, the sampling rate determines the rate at which the zone
player 11(n) is to play the audio samples 52(f)(s) in the frame, and, as
will be described below, determines the period of the digital to analog
converter clock 34.

[0068] The condition of the end of work flag 61 indicates whether the
frame 51(f) contains the last digital audio samples for the audio track
associated with the framed digital audio work 50. If the frame 51(f) does
not contain the audio samples that are associated with the end of the
digital audio stream 50 for a respective audio work, the end of work flag
will be clear. On the other hand, if the frame 51(f) does contain the
audio samples that are associated with the end of the digital audio
stream 50 for a respective audio work, the end of work flag 61 will be
set. In addition, since the number of valid audio samples 52(F)(s) in the
frame 51(F), that is, the samples that are not padding, may be less than
"S," the default number of audio samples in a frame 51(f), the length
flag field 62 will contain a value that identifies the number of audio
samples in 52(F)(s) in the last frame 51(F) of the audio work 50. If, as
noted above, the frames have a consistent number "S" of samples, the
samples 52(F)(x+1) through 52(F)(S) will contain padding, which will not
be played.

[0069] The time stamp field 60 stores a time stamp that identifies the
time at which the zone player 11(n) is to play the respective frame. More
specifically, for each frame of a framed digital audio stream 50 that is
buffered in the audio information buffer 21, the audio information source
interface 30, using timing information from the digital to analog
converter clock 34, will determine a time at which the zone player 11(n)
is to play the respective frame, and stores a time stamp identifying the
playback time in the time stamp field 60. The time stamp associated with
each frame will later be used by the playback scheduler 32 to determine
when the portion of the digital audio stream stored in the frame is to be
coupled to the digital to analog converter 33 to initiate play back. It
will be appreciated that the time stamps that are associated with frames
in sequential frames 51(1), 51(2), . . . , 51(F), will be such that they
will be played back in order, and without an interruption between the
sequential frames comprising the digital audio stream 50. It will further
be appreciated that, after a time stamp has been determined for the first
frame, stored in frame 51(1), of a digital audio stream 50, the audio
information source interface 30 can determine time stamps for the
subsequent frame 51(2), 51(3), . . . , 51(F) in relation to the number of
samples "S" in the respective frames and the sample rate. The time stamps
will also preferably be such that frames will be played back after some
slight time delay after they have been buffered in the audio information
buffer 21; the purpose for the time delay will be made clear below.

[0070] Returning to FIG. 3, in addition to dividing the digital audio
information into frames, the audio information source interface 30 also
aggregates and/or divides the frames 51(f) as necessary into packets,
each of which will be of a length that would fit into a message for
transmission over the network, and associates each packet with a packet
sequence number. For example, if a packet will accommodate multiple
frames 51(f), 51(f+1), . . . 51(f+y-1), it will aggregate them into a
packet and associate them with a packet number, for example p(x). If the
entire frames 51(f) and 51(f+y-1) was accommodated in packet p(x), where
"x" is the sequence number, which will occur if the size of a packet is
an exact multiple of the frame size, the next packet, p(x+1) will begin
with frame 51(f+y) and will include frames 51(f+y), . . . , 51(f+2y-1).
Subsequent packets p(x+2), . . . will be formed in a similar manner. On
the other hand, if the packet length will not accommodate an exact
multiple of the frame size, the last frame in the packet will be
continued at the beginning of the next packet.

[0071] If the audio information source interface 30 is aware of track
boundaries, which may be the case if the tracks are divided into files,
the packets will reflect the track boundaries, that is, the packets will
not contain frames from two tracks. Thus, if the last frames associated
with a track are insufficient to fill a packet, the packet will contain
padding from the last frame associated with the track to the end of the
packet, and the next packet will begin with the first frames associated
with the next track.

[0072] In one embodiment, the audio information source interface 30 stores
the packets in the audio information buffer 31 in a ring buffer. As is
conventional, a ring buffer includes a series of storage locations in the
buffer. Each entry will be sufficient to store one packet. Four pointers
are used in connection with the ring buffer, a first pointer pointing to
the beginning of the ring buffer, a second pointer pointing to the end of
the ring buffer, an third "write" pointer pointing to the entry into
which a packet will be written and a fourth "read" pointer pointing to
the entry from which packet will be read for use in playback. When a
packet is read from the ring buffer for playback, it will be read from
the entry pointed to by the read pointer. After the packet has been read,
the read pointer will be advanced. If the read pointer points beyond the
end of the ring buffer, as indicated by the end pointer, it will be reset
to point to the entry pointed to by the beginning pointer, and the
operations can be repeated.

[0073] On the other hand, when the audio information source interface 30
stores a packet in the ring buffer, first determine whether the entry
pointed to by the write pointer points to the same entry as the entry
pointed to by the read pointer. If the write pointer points to the same
entry as the entry pointed to by the read pointer, the entry contains at
least a portion of a packet that has not yet been read for playback, and
the audio information source interface 30 will delay storage of the
packet until the entire packet has been read and the read pointer
advanced. After the read pointer has been advanced, the audio information
source interface 30 can store the packet in the entry pointed to by the
write pointer. After the packet has been stored, the audio information
source interface 30 will advance the write pointer. If the write pointer
points beyond the end of the ring buffer, as indicated by the end
pointer, it will be reset to point to the entry pointed to by the
beginning pointer, and the operations can be repeated.

[0074] As noted above, the zone player 11(n) can operate both as an audio
information channel device 23 and a member of the synchrony group 20 of
which it is a member. In that case, the audio information buffer 31 can
contain one ring buffer. On the other hand, the zone player 11(n) can
operate as an audio information channel device 23 for one synchrony group
20(1) (FIG. 2A) and a member of another synchrony group 20(2). In that
case, the audio information buffer 31 would maintain two ring buffers,
one for the audio and timing information associated with synchrony group
20(1), and the other for the audio and timing information associated with
synchrony group 20(2). It will be appreciated that, in the latter case,
the zone player 11(n) will only use the audio and timing information that
is associated with synchrony group 20(2) for playback.

[0075] The playback scheduler 32 schedules playback of the audio
information that is buffered in the audio information buffer 31 that is
to be played by the zone player 11(n). Accordingly, under control of the
playback scheduler 32, the digital audio information that is buffered in
the audio information buffer 21 that is to be played by the zone player
11(n) is transferred to the digital to analog converter 33 for playback.
As noted above, if the zone player 11(n) is operating as an audio
information channel device 23 for a synchrony group 20 for which it is
not a member, the playback scheduler 32 will not schedule the digital
audio information that is to be played by that synchrony group 20 for
playback. The playback scheduler 32 only schedules the digital audio
information, if any, that is buffered in the audio information buffer 31
that is associated with a synchrony group for which the zone player 11(n)
is a member, whether as master device 21 or a slave device 22(g).

[0076] Essentially, the playback scheduler 32 makes use of the read
pointer associated with the circular buffer that contains the audio and
playback timing information that is to be played by the zone player
11(n). The playback scheduler 32 retrieves the packet information from
the entry of the ring buffer pointed to by the read pointer, and then
advances the ring pointer as described above. The playback scheduler 32
determines the boundaries of the frames in the packet and uses the time
stamps in the time stamp fields 60 associated with the respective frame
51(f), along with timing information provided by the zone player 11(n)'s
digital to analog converter clock 34, to determine when the respective
frame is to be transferred to the digital to analog converter 33.
Generally, when the time stamp associated with a buffered digital audio
information frame corresponds to the current time as indicated by the
digital to analog converter clock 34, the playback scheduler 32 will
enable the respective frame to be transferred to the digital to analog
converter 33.

[0077] The digital to analog converter 33, also under control of the
digital to analog converter clock 34, converts the buffered digital audio
information to analog form, and provides the analog audio information to
the audio amplifier 35 for amplification. The amplified analog
information, in turn, is provided to the audio reproduction devices
15(n)(r) through the audio reproduction device interface 36. The audio
reproduction devices 15(n)(r) transform the analog audio information
signal to sound thereby to provide the audio program to a listener. The
amount by which the audio amplifier 35 amplifies the analog signal is
controlled by the control module 42, in response to volume control
information provided by the user through the user interface module 13.

[0078] The network communications manager 40 controls network
communications over the network 12, and the network interface 41
transmits and receives message packets over the network 12. The network
communications manager 40 generates and receives messages to facilitate
the transfer of the various types of information described above in
connection with FIG. 2, including the channel device control information,
slave device control information, audio and playback timing information
and the audio information channel device's clock timing information. In
connection with the channel device control information and the slave
device control information, the network communications manager 40 will
generate messages for transfer over the network 12 in response to control
information from the control module 42. Similarly, when the network
communications manager 40 receives messages containing channel device
control information and slave device control information, the network
communications manager will provide the information to the control module
42 for processing.

[0079] With regards to the audio information channel device's clock timing
information, as noted above, the master device 21 and slave devices 22(g)
of the synchrony group 20 obtain the clock timing information from the
audio information channel device 23 using the well-known SNTP. If the
zone player 11(n) is operating as the audio information channel device 23
for a synchrony group, during the SNTP operation, it will provide its
current time, particularly a current time as indicated by its digital to
analog converter clock 34. On the other hand, if the zone player 11(n) is
operating as the master device 21 or slave device 22(g) of a synchrony
group 20, it will receive the clock timing information from the audio
information channel device 23. After the respective device 21, 22(g) has
obtained the audio information channel device's clock timing information,
it will generate a differential time value ΔT representing the
difference between the time T indicated by its digital to analog
converter clock 34 and the current time information from the audio
information channel device 23. The differential time value will be used
to update the time stamps for the frames of the digital audio stream 50
(FIG. 4) that are received from the audio information channel device.

[0080] With regards to the audio and playback timing information,
operations performed by the network communications manager 40 will depend
on whether

[0081] (i) the audio and playback timing information has been buffered in
the audio information buffer 31 for transmission, as audio information
channel device 23, over the network 12 to the master device 21 and/or
slave devices 22(g) of a synchrony group, or

[0082] (ii) the audio and playback timing information has been received
from the network 12 to be played by the zone player 11(n) as either the
master device 21 for a synchrony group or a slave device in a synchrony
group.

It will be appreciated that the network communications manager 40 may be
engaged in both (i) and (ii) contemporaneously, since the zone player
11(n) may operate both as the audio information channel device 23(1) for
a synchrony group 20(1) (reference FIG. 2A) of which it is not a member,
and a member of another synchrony group 20(2) for which another zone
player 11(n') is the audio information channel device 23(2). With
reference to item (i) above, after a packet that is to be transmitted has
been buffered in the respective ring buffer, the network communications
manager 40 retrieves the packet, packages it into a message and enables
the network interface 41 to transmit the message over the network 12. If
the control module 42 receives control information from the user
interface module 13 (if the master device 21 is also the audio
information channel device 23 for the synchrony group 20) or from the
master device (if the master device 21 is not the audio information
channel device 23 for the synchrony group 20) that would require the
transmission of a "resynchronize" command as described above, the control
module 42 of the audio information channel device 23 enables the network
communications manager 40 to insert the command into a message containing
the audio and playback timing information. Details of the operations
performed in connection with the "resynchronize" command will be
described below. As noted above, the "resynchronize" command is used if
the user enables a synchrony group to terminate the playback of a track
that is currently being played, or cancel playback of a track whose
playback has not begun.

[0083] On the other hand, with reference to item (ii) above, if network
interface 41 receives a message containing a packet containing frames of
audio and playback timing information that the zone player 11(n) is to
play either as a master device 21 or a slave device for a synchrony group
20, the network interface 41 provides the audio and playback timing
information to the network communications manager 40. The network
communications manager 40 will determine whether the packet contains a
resynchronize command and, if so, notify the control module 42, which
will enable operations to be performed as described below. In any case,
the network communications manager 40 will normally buffer the various
frames comprising the audio and playback timing information in the audio
information buffer 31, and in that operation will generally operate as
described above in connection with the audio information source interface
30. Before buffering them, however, the network communications manager 40
will update their time stamps using the time differential value described
above. It will be appreciated that the network communications manager 40
will perform similar operations whether the messages that contain the
packets were multi-cast messages or unicast messages as described above

[0084] The updating of the time stamps by the master device 21 and the
slave devices 22(g) in the synchrony group 20 will ensure that they all
play the audio information synchronously. In particular, after the
network communications manager 40 has received a frame 51(f) from the
network interface 41, it will also obtain, from the digital to analog
converter clock 34, the zone player 11(n)'s current time as indicated by
its digital to analog converter clock 34. The network communications
manager 40 will determine a time differential value that is the
difference between the slave device's current clock time, as indicated by
its digital to analog converter 34, and the audio information channel
device's time as indicated by the audio information channel device's
clock timing information. Accordingly, if the master or slave device's
current time has a value TS and the audio information channel
device's current time, as indicated by the clock timing information, has
a value TC, the time differential value ΔT=TS-TC. If
the current time of the master or slave device in the synchrony group 20,
as indicated by its digital to analog converter clock 34, is ahead of the
audio information channel device's clock time as indicated by the clock
timing information received during the SNTP operation, the time
differential value will have a positive value. On the other hand, if the
master or slave device's current time is behind the audio information
channel device's clock time, the time differential value ΔT will
have a negative value. If the zone player 11(n) obtains clock timing
information from the audio information channel device 23 periodically
while it is a member of the synchrony group 20, the network
communications manager 40 can generate an updated value for the time
differential value ΔT when it receives the clock timing information
from the audio information channel device 23, and will subsequently use
the updated time differential value.

[0085] The network communications manager 40 uses the time differential
value ΔT that it generates from the audio information channel
device timing information and zone player 11(n)'s current time to update
the time stamps that will be associated with the digital audio
information frames that the zone player 11(n) receives from the audio
information channel device. For each digital audio information frame that
is received from the audio information channel device, instead of storing
the time stamp that is associated with the frame as received in the
message in the audio information buffer 21, the network communications
manager 40 will store the updated time stamp with the digital audio
information frame. The updated time stamp is generated in a manner so
that, when the zone player 11(n), as a member of the synchrony group
plays back the digital audio information frame, it will do so in
synchrony with other devices in the synchrony group.

[0086] More specifically, after the zone player 11(n)'s network interface
41 receives a message containing a packet that, in turn, contains one or
more frames 51(f), it will provide the packet to the network
communications manager 40. For each frame 51(f) in the packet that the
network communications manager 40 receives from the network interface 41,
the network communications manager 40 will add the time differential
value ΔT to the frame's time stamp, to generate the updated time
stamp for the frame 51(f), and store the frame 51(f), along with the
header 55(f) with the updated time stamp in the audio information buffer
31. Thus, for example, if a frame's time stamp has a time value TF,
the network communications manager 40 will generate an updated time stamp
TUF having a time value TUF=TF+ΔT. Since
time value TUF according to the slave device's digital to
analog converter clock 34 is simultaneous to the time value TF
according to the audio information channel device's digital to analog
converter clock 34, the zone player 11(n) device will play the digital
audio information frame at the time determined by the audio information
channel device 23. Since all of the members of the synchrony group 20
will perform the same operations, generating the updated time stamps
TUF for the various frames 51(f) in relation to their
respective differential time values, all of the zone players 11(n) in the
synchrony group 20 will play them synchronously. The network
communications manager 40 will generate updated time stamps TUF
for all of the time stamps 60 in the packet, and then store the packet in
the audio information buffer 31.

[0087] It will be appreciated that, before storing a packet in the audio
information buffer 21, the network communications manager 40 can compare
the updated time stamps TUF associated with the frames in the
packet to the slave device's current time as indicated by its digital to
analog converter clock 34. If the network communications manager 40
determines the time indicated by the updated time stamps of frames 51(f)
in the packet are earlier than the zone player's current time, it can
discard the packet instead of storing it in the audio information buffer
21, since the zone player 11(n) will not play them. That is, if the
updated time stamp has a time value TUF that identifies a time
that is earlier than the zone player's current time TS as indicated
by the zone player's digital to analog converter clock 34, the network
communications manager 40 can discard the packet.

[0088] If the zone player 11(n) is operating as the master device 21 of a
synchrony group 20, when the user, through the user interface module 13,
notifies the zone player 11(n) that another zone player 11(n') is to join
the synchrony group 20 as a slave device 22(g), the control module 42 of
the zone player 11(n) enables the network communications manager 40 to
engage in an exchange of messages, described above in connection with
FIG. 2, to enable the other zone player 11(n') to join the synchrony
group 20 as a slave device. As noted above, during the message exchange,
the messages generated by the network communications manager 40 of the
zone player 11(n) will provide the network communications manager of the
zone player 11(n') that is to join the synchrony group 20 with
information such as the multi-cast address being used by the audio
information channel device 23 that is providing the audio program to the
synchrony group 20, as well as a unicast network address for the audio
information channel device 23. After receiving that information, the
network communications manager and network interface of the zone player
11(n') that is to join the synchrony group 20 can begin receiving the
multi-cast messages containing the audio program for the synchrony group,
engage in SNTP transactions with the audio information channel device 23
to obtain the latter's current time, and also enable the audio
information channel device 23 to send the zone player 11(n') frames 51(f)
that it had previously broadcast using the unicast message transmission
methodology as described above.

[0089] On the other hand, if the network communications manager 40 and
network interface 41 of the zone player 11(n) receive a message over the
network 12 indicating that it is to become a slave device 22(g) of a
synchrony group for which another zone player 11(n') is the master
device, the network communications manager 40 for zone player 11(n) will
provide a notification to the control module 42 of zone player 11(n).
Thereafter, the control module 42 of zone player 11(n) can enable the
network communications manager 40 of zone player 11(n) to perform the
operations described above to enable it to join the synchrony group 20.

[0090] As noted above, the user, using user interface module 13, can
enable the synchrony group to terminate playback of a track of an audio
program that is currently being played. After playback of a track that is
currently being played has been terminated, playback will continue in a
conventional manner with the next track that has been buffered in the
audio information buffer 31. It will be appreciated that that could be
the next track that is on the original play list, or a previous track. In
addition, the user can enable the synchrony group 20 to cancel playback
of a track that it has not yet begun to play, but for which buffering of
packets has begun in the synchrony group 20. Both of these operations
make use of the "resynchronize" command that the master device 21 of the
synchrony group 20 can enable the audio information channel device 23 to
include in the multi-cast message stream that it transmits to the
synchrony group 20. Generally, in response to receipt of the
resynchronize command, the members of the synchrony group 20 flush the
ring buffer containing the packets that they are to play in the future.
In addition, if the members of the synchrony group provide separate
buffers for their respective digital to analog converters 33, the members
will also flush those buffers as well. After the audio information
channel device transmits a packet containing the resynchronize command:

[0091] (i) in the case of the use of the resynchronize command to
terminate playing of a track that is currently being played, the audio
information channel device 23 will begin multi-casting packets for the
next track, to begin play immediately, and will continue through the play
list in the manner described above; and

[0092] (ii) in the case of the use of the resynchronize command to cancel
play of a track for which buffering has begun, but which is to be played
in the future, the audio information channel device 23 will begin
multi-casting packets for the track after the track that has been
cancelled, to be played beginning at the time the cancelled track was to
begin play, and will also continue through the play list in the manner
described above.

It will be appreciated that,

[0093] (a) in the first case (item (i) directly above), the resynchronize
command can enable the read pointer to be set to point to the entry in
the circular buffer into which the first packet for the next track will
be written, which will correspond to the entry to which the write pointer
points, but

[0094] (b) in the second case (item (ii) directly above), the
resynchronize command can enable the write pointer for the circular
buffer to be set to point to the entry that contains the first packet for
the track whose play is being cancelled.

It will further be appreciated that, if a track is cancelled for which
buffering has not begun, the resynchronize command will generally not be
necessary, since the audio information channel device 23 for the
synchrony group 20 need only delete that track from the play list.

[0095] Operations performed in connection with use of the resynchronize
command to cancel playback of a track that is currently being played will
be described in connection with Packet Sequence A below, and operations
performed in connection with the use of the resynchronize command to
cancel playback of a track that is has not yet begun to play, but for
which buffering of packets has begun, will be described in connection
with Packet Sequence B below.

[0097] Packet Sequence A comprises a sequence of six packets, identified
by packet 57 through packet 62, that the audio information channel device
23 multi-casts in respective messages to the members of a synchrony group
20. It will be appreciated that the series of messages that the audio
information channel device 23 may multi-cast to the synchrony group 20
may include a messages prior to the packet 57, and may also include
messages after packet 62. Each packet comprises a packet header, which is
symbolized by lines (A1.0), (A2.0), . . . (A6.0) in Packet Sequence A,
and will generally also include information associated with at least a
portion of a frame. In the packets represented in Packet Sequence A, each
packet includes information associated with a plurality of frames.
Depending on the lengths of the packets, each packet may contain
information associated with a portion of a frame, an entire frame, or
multiple frames. In the illustration represented by Packet Sequence A, it
is assumed that each packet may contain information associated with
multiple frames. In addition, it is assumed that a packet does not
necessarily contain information associated with an integral number of
frames; in that case, a packet may contain information associated with a
portion of a frame, and the next packet will contain the information
associated with the rest of a frame.

[0098] The frames and associated header playback timing information
contained in the various packets are symbolized by lines (A1.1), (A1.2),
. . . , (A1.4), (A2.1), . . . (A6.4) of Packet Sequence A. Thus, for
example, line (A1.2) of packet 57 represents the one-hundredth frame,
that is, frame 51(100) (reference FIG. 4), of the track whose audio
information is being transmitted in the sequence of packets that includes
packet 57. The frame 51(100) is to be played at an illustrative time,
according to the audio information channel device's digital to analog
converter clock, of "time=0:00:01," and the frame is encoded and/or
compressed using the well-known MP3 encoding and compression methodology.
In that case, the legend"time=0:00:01" represents the time stamp that
would be included in field 60 (FIG. 4) of the header associated with the
frame 50(100) as multi-cast by the audio information channel device for
the synchrony group. It will be appreciated that the playback time and
encoding/compression methodology will be referred in the header 55(100)
that is associated with the frame 51(100). It will also be appreciated
that the header may also contain additional information as described
above.

[0099] Similarly, line (A1.3) of packet 57 represents the one-hundred and
first frame, that is, frame 51(101), of the track whose audio information
is being transmitted in the sequence of packets that includes packet 57.
The frame 51(101) is to be played at an illustrative time, according to
the audio information channel device's digital to analog converter clock,
of "0:00:02," and the frame is also encoded and/or compressed using the
MP3 encoding and compression methodology. Line (A1.4) of packet 57
represents similar information, although it will be appreciated that,
depending on the length of packet 57, the line may not represent the
information for an entire frame 51(102) and/or its associated header. If
the length of packet 57 is not sufficient to accommodate the information
for the entire frame 51(102) and/or associated header, the information
will continue in packet 58, as represented by line (A2.1) in Packet
Sequence A. Similarly, if the length of packet 56 was not sufficient to
contain the information for an entire frame 51(99) preceding frame
51(100), packet 57 (lines (A1.0) through 1.4) may contain any information
from frame 51(99) that packet 56 was unable to accommodate.

[0100] As noted above, when the master device 21 or a slave device 22(g)
in the synchrony group 20 receives the packet 57, its respective network
communications manager 40 will update the time stamps associated with the
various frames 51(f) as described above before buffering the respective
frames in the respective audio information buffer 31.

[0101] Packets 58 and 59 contain information that is organized along the
lines described above in connection with packet 57.

[0102] Packet 60 also contains, as represented by lines (A4.1) and (A4.2),
information that is organized along the lines of the information
represented by lines (Ax.1) and (Ax.2) ("x" equals an integer) described
above in connection with packets 57 through 59. On the other hand, packet
60 contains a resynchronize command, as represented by line (A4.3).
Packet 60 also may contain padding, as represented by line 4.4, following
the resynchronize command. As noted above, the master device 21 of a
synchrony group 20 will enable the audio information channel device 23
that is providing audio information to the synchrony group 20 to
multi-cast a message containing the resynchronize command when it
receives notification from the user interface module 13 that the user
wishes to cancel playback of a track that is currently being played. In
the example depicted in Packet Sequence A, as will be described below,
the audio information channel device 23 receives notification from the
master device 21 that the user wishes to cancel playback of a track at a
time corresponding to "time=0:00:07" according to its digital to analog
converter clock 34, and, in line (A4.3) of packet 60 it will provide the
resynchronize command, followed by padding, if necessary.

[0103] As will be apparent from examining lines (A3.1) through (A3.4) of
packet 59 and lines (A4.1) and (A4.2) of packet 60, although the audio
information channel device 23 has received the notification from the
synchrony group's master device 21 to multi-cast the resynchronize
command at a time corresponding to "time=0:00:07" according to the clock
time indicated by its digital to analog converter clock 34, it (that is,
the audio information channel device 23) has already multi-cast messages
containing frames that are to be played at that time and subsequently.
That is, the audio information channel device 23 has, multi-cast in
packet 59, frames 51(106) through 51(108) that contain time stamps
"time=0:00:07," "time=0:00:08" and "time=0:00:09," respectively, and, in
packet 60, in addition to the continuation of frame 51(108), frame
51(109) that contains time stamp "time=0:00:10." (It will be appreciated
that the times indicated by the illustrative time stamps are for
illustration purposes only, and that in an actual embodiment the time
stamps may have different values and differentials.)

[0104] As noted above, the audio information channel device 23 multi-casts
a message containing a packet that, in turn, contains the resynchronize
command when it receives the notification from the master device 21 to do
so. In the example depicted in Packet Sequence A, the packet will be
multi-cast when the audio information channel device's digital to analog
converter clock time corresponds to "0:00:07." Subsequently, two things
happen. In one, aspect, when the master device 21 and slave devices 22(g)
receive the packet that contains the resynchronize command, they will
stop playing the audio program that they are playing.

[0105] In addition, the audio information channel device 23 will begin
transmitting frames containing audio information for the next track,
including therewith time stamps immediately following the digital to
analog converter clock time at which the packet including the
resynchronize command was transmitted. Accordingly, and with further
reference to Packet Sequence A, the audio information channel device 23
will multi-cast a message containing packet 61. As indicated above,
packet 61 contains, as represented in lines (A5.1) through (A5.3), frames
51(1) through 51(3), which are the first three frames of the next track
of the audio program that is to be played. It is also compressed and
encoded using the MP3 encoding and compression scheme, and it is
accompanied by time stamps "time=0:00:07," "time=0:00:08" and
"time=0:00:10." As noted above, the time stamp "time=0:00:07" corresponds
to the clock time at which the audio information channel device 23
multi-casts the resynchronize command, and, when the master device 21 and
slave devices 22(g) receive these frames, they would be expected to begin
playing them very shortly, if not immediately after the audio information
channel device 23 multi-casts the message containing the packet that, in
turn, contains the resynchronize command. Packet 61 also includes at
least a portion of the next frame, that is, frame 51(4), for that track.
In addition, Packet Sequence A depicted above further includes a
subsequent packet, namely, packet 62, that contains any necessary
continuation of frame 51(4), as well as three subsequent frames. If any
additional packets are required for the track, as well as for subsequent
tracks, they can be multi-cast in a similar manner.

[0106] As further noted above, the resynchronize command can also be used
to cancel playing of one or more tracks for which playback has begun.
This will be illustrated in connection with Packet Sequence B:

[0108] Packet Sequence B comprises a series of seven packets, identified
by packet 157 through 163, that the audio information channel device 23
multi-casts to the members of a synchrony group 20. As with Packet
Sequence A, it will be appreciated that the series of packets that the
audio information channel device 23 may multi-cast to the synchrony group
20 may include packets prior to the packet 157, and may also include
packets after packet 162. Each packet comprises a packet header, which is
symbolized by lines (B1.0), (B2.0), . . . (B7.0) in Packet Sequence B. As
in Packet Sequence A, each packet will also generally include information
associated with at least a portion of a frame 51(f) along with its
associated frame 55(f). As in the packets represented in Packet Sequence
A, each packet includes information associated with a plurality of
frames. Depending on the lengths of the packets, each packet may contain
information associated with a portion of a frame, an entire frame, or
multiple frames. Further, as with Packet Sequence A, it is assumed that
each packet may contain information associated with multiple frames. In
addition, it is assumed that a packet does not necessarily contain
information associated with an integral number of frames; in that case, a
packet may contain information associated with a portion of a frame, and
the next packet will contain the information associated with the rest of
a frame.

[0109] The structures of the packets represented by Packet Sequence B are
similar to those described above in connection with Packet Sequence A,
and will not be repeated here. Generally, Packet Sequence B
illustratively contains a sequence of packets that represent at least
portions of three tracks that may have been selected from, for example, a
play list. In particular, packets 157 through 159 represent frames from a
portion of one track, packets 160 and 161 represent frames from a second
track and packets 162 and 163 represent frames from a third track. The
play list indicated that the first, second and third tracks were to be
played in that order. With particular reference to Packet Sequence B, it
should be noted that line (B3.3) indicates that packet 159 includes an
indication that that packet contains the last frame for the track, and
line (B3.4) provides for padding to the end of the packet. The first
frame of the next track begins in packet 160.

[0110] In connection with the use of the resynchronize command to cancel
playback of a track, at least a portion of which the audio information
channel device 23 has multi-cast to the members of the synchrony group,
packet 161, in line (B5.3) represents a resynchronize command that
indicates that resynchronization is to occur after packet 159, that is,
immediately after the packet that contains the last frame of the first of
the three tracks represented by the packets in Packet Sequence B. It
should be noted that the resynchronize command is in the packet 161,
while the resynchronization is to occur at packet 160, that is, the
synchrony group is to not play the track starting with packet 160, but
instead is to begin playing the track frames for which begin with the
next packet, that is, packet 162. As with Packet Sequence A, in Packet
Sequence B the audio information channel device 23, in packet 162 and
163, multi-casts frames whose time stamps indicate that they are to be
played when the frames that were multi-cast in packets 160 and 161 were
to be played. By use of the resynchronize command and specifying a packet
in this manner, the audio information channel device can cancel playback
of a track for which playback has not yet begun.

[0111] It will be appreciated that the resynchronize command is generally
not necessary for cancelling play back of a track that the audio
information channel device 23 has not started multi-casting to the
synchrony group 20, since the audio information channel device 23 itself
can re-order the play list to accommodate the cancellation.

[0112] The invention provides a number of advantages. In particular, the
invention provides a network audio system in which a number of devices
share information can reproduce audio information synchronously,
notwithstanding the fact that packets, which may contain digital audio
information, transmitted over the network to the various zone players
connected thereto may have differing delays and the zone players operate
with independent clocks. Moreover, although the invention has been
described in connection with audio information, it will be appreciated
that the invention will find utility in connection with any type of
isochronous information for which synchrony among devices is desired. The
system is such that synchrony groups are created and destroyed
dynamically, and in such a manner as to avoid requiring a dedicated
device as the master device.

[0113] It will be appreciated that a number of changes and modifications
may be made to the network audio system 10 as described above. For
example, although the invention has been described as providing that the
audio information channel device 23 provides digital audio information to
the members synchrony group 20 that has been encoded using particular
types of encoding and compression methodologies, it will be appreciated
that the audio information channel device 23 can provide digital audio
information to various members of the synchrony group 20 that have been
encoded and compressed using different types of encoding and compression
methodologies, and, moreover, for which different sampling rates have
been used. For example, the audio information channel device 23 may
provide digital audio information to the master device 21 and slave
devices 22(1) through 22(g1) using the MP3 methodology at a
specified sampling rate, the digital audio information for the same
program to slave devices 22(g1+1) through 22(g2) using the WAV
methodology at one specified sampling rate, and to slave devices
22(g2+1) through 22(G) using the WAV methodology at another
specified sampling rate. In that case, the audio information channel
device 23 can specify the particular encoding and compression methodology
that has been used in the encoding type field 57 associated with each
frame and the sampling rate in the sampling rate field 58. Moreover,
since the encoding and compression type and sampling rate are specified
for each frame, the encoding and compression type and sampling rate can
be changed from frame to frame. The audio information channel device 23
may use different multi-cast addresses for the different encoding and
compression types and sampling rates, but it will be appreciated that
that would not be required.

[0114] It will be appreciated that two advantages of providing that the
encoding and compression methodology and the sampling rate is provided on
a frame-by-frame basis, instead of on, for example, a track-by-track
basis, is that that would facilitate a slave device joining the synchrony
group 20 at a frame mid-track, without requiring, for example, the master
device 21 or the audio information channel device 23 to notify it of the
encoding and compression methodology or the sampling rate.

[0115] Another modification is that, instead of the network communications
manager 40 of a member of a synchrony group 20 generating the updated
time stamp TUF for a digital audio information frame by adding
the time differential value ΔT to the time stamp TF associated
with a frame, the network communications manager 40 may instead generate
the updated time stamp TUF by subtracting the differential time
value ΔT from the member's current time TS as indicated by the
member's digital to analog converter clock 34 at the time at which the
digital audio information is received. It will be appreciated, however,
that there may be variable time delays in processing of messages by the
slave device's network communications manager 40, and so it may be
preferable to generate the time differential value ΔT using the
time stamp TF provided by the audio information channel device 23.

[0116] In addition, instead of the network communications manager 40 of a
member of a synchrony group generating an updated time stamp to reflect
the difference between the times indicated by the member's digital to
analog converter clock and the audio information channel device's digital
to analog converter clock, the network communications manager 40 can
generate the time differential value ΔT and provide it to the
member's playback scheduler 32. In that case, the member's network
communications manager 40 can store each digital audio information frame
along with the time stamp TF as received from the master device in
the audio information buffer 21. The playback scheduler 32 can utilize
the time differential value ΔT, and the time stamps TF
associated with the digital audio information frames, to determine when
the respective digital audio information frames are to be played. In
determining when a digital audio information frame is to be played, the
playback scheduler can add the time differential value to the time stamp
TF associated with the digital audio frame, and enable the digital
audio frame to be coupled to the digital to analog converter 33 when the
time indicated by the sum corresponds to the current time as indicated by
the slave device's digital to analog converter clock 34. Alternatively,
when the member's digital to analog converter clock 34 updates its
current time TS, the playback scheduler can generate an updated
current time T'S by subtracting the differential time value ΔT
from the current time TS, and using the updated current time
T'S to determine when to play a digital audio information frame.

[0117] As described above, the members of a synchrony group 20
periodically obtain the audio information channel device's current time
value and uses the current time value that it receives from the audio
information channel device to periodically update the time differential
value ΔT that it uses in updating the time stamps associated with
the various frames. It will be appreciated that, if the digital to analog
converter clock(s) associated with the member(s) of a synchrony group 20
are ensured to have the same rate as the digital to analog converter
clock, a member need only obtain the current time value from the audio
information channel device once, at the beginning of playback.

[0118] As another alternative, if the zone players are provided with
digital to analog converter clock 34 whose time and rate can be set by an
element such as the network communications manager 40, when a zone player
11(n) is operating as a member of a synchrony group 20, its network
communications manager 40 can use the various types of timing information
that it receives from the audio information channel device 23, including
the current time information and the playback timing information
indicated by the time stamps that are associated with the various frames
51(f) comprising the audio and playback timing information that it
receives, to adjust the synchrony group member's digital to analog
converter clock's time value and/or the clock rate that it uses for
playback. If the clock's time value is to be adjusted, when the synchrony
group member's network communications manager 40 initially receives the
current time information from the audio information channel device 23 for
the synchrony group 20, the network communications manager 40 can set the
synchrony group member's digital to analog converter clock 34 to the
current time value as indicated by the audio information channel device's
current time information. The network communications manager 40 can set
the clock 34 to the current time value indicated by the audio information
channel device's current time information once, or periodically as it
receives the current time information.

[0119] Alternatively or in addition, the synchrony group member's network
communications manager 40 can use one or both of the current time
information and/or the playback timing information in the time stamps
associated with the respective frames 51(f) to adjust the clock rate of
the clock 34 that it uses for playback. For example, when the synchrony
group member's network communications manager 40 receives a frame
51(fx) having a time stamp having a time value Tfx, it can
generate the updated time value TUfx=Tfx+ΔT as
described above, and store the frame with the time stamp with the updated
time value in the audio information buffer 30. In addition, since both
the number of samples in a frame and the sampling rate, which determines
the rate at which the frame is to be played, are known to the network
communications manager 40, it can use that information, along with the
updated time value TUFx that is to be used for frame
51(fx) to generate an expected updated time value TEfx+1
that is expected for the updated time stamp of the next frame
51(fx+1). After the synchrony group member's network communications
manager 40 receives the next frame 51(fx+1), it can generate the
updated time value TUfx+1 and compare that value to the
expected updated time value TEfx+1. If the two time values do
not correspond, or if the difference between them is above a selected
threshold level, the clock that is used by the audio information channel
device 23 to generate the time stamps is advancing at a different rate
than the synchrony group member's digital to analog converter clock 34,
and so the network communications manager 40 can adjust the rate of the
digital to analog converter clock 34 to approach that of the clock used
by the audio information channel device 23 so that the differential time
value ΔT is constant. On the other hand, if the two time values do
correspond, then the time differential value ΔT is constant, or the
difference is below a threshold level, and the network communications
manager 40 need not change the clock rate of the digital to analog
converter clock 34. It will be appreciated that, if the clock rate is to
be adjusted, the rate adjustment can be fixed, or it can vary based on,
for example, the difference between the updated time value
TUfx+1 and the expected updated time value TEfx+1.

[0120] It will also be appreciated that, if no rate adjustment is
performed for one frame 51(fx+1), the synchrony group member's
network communications manager 40 can generate an expected updated time
value TEfx+2 that is expected for the updated time stamp of the
next frame 51(fx+2) using the updated time value TUFx
determined for frame 51(fx), along with the number of samples in a
frame and the sampling rate, and compare the expected updated time value
TEfx+2 to the updated time value TUfx+2 that it
generates when it receives frame 51(fx+2). At that point, if the
network communications manager 41 determines that two time values do not
correspond, or if the difference between them is above a selected
threshold level, it can adjust the rate of the digital to analog
converter clock 34. Similar operations can be performed if no rate
adjustment is performed for several successive frames 51(fx+1),
51(fx+2), . . . . This will accommodate the possibility that the
rate differential between the clock 34 and the clock used by the audio
information channel device 23 in generating the time stamps have rates
that differ by an amount sufficiently small that it cannot be detected
using time stamps of two or more successive frames.

[0121] Instead or in addition to adjusting the clock rate as described
above, the synchrony group member's network communications manager 40 can
perform similar operations in connection with adjusting the clock rate in
connection with the current time information that it receives from the
audio information channel device 23.

[0122] Furthermore, although the network audio system 10 has been
described such that the master device 21 of a synchrony group 20 can, in
response to control information provided thereto by a user through the
user interface module 13, provide a notification to a zone player 11(n)
that it is to become a member of its synchrony group 20 as a slave device
22(g), it will be appreciated that the user interface module 13 can
provide the notification directly to the zone player 11(n) that is to
become a member of the synchrony group 20. In that case, the zone player
11(n) can notify the master device 21 that it is to become a slave device
22(g) in the synchrony group 20, after which the master device 21 can
provide information regarding the synchrony group 20, including the
multi-cast and unicast addresses of the audio information channel device
and other information as described above.

[0123] Similarly, although the network audio system 10 has been described
such that the master device 21 of a synchrony group 20 can, in response
to control information provided thereto by a user through the user
interface module 13, provide a command to a slave device 22(g) to enable
the slave device 22(g) to adjust its volume, it will be appreciated that
the user interface module 13 can provide control information directly to
the slave device 22(g) to enable the slave device 22(g) to adjust its
volume.

[0124] In addition, although the network audio system 10 has been
described such that each frames 51(f) is associated with a frame sequence
number (reference field 56, FIG. 4), it will be appreciated that, if the
packets described above in connection with Packet Sequence A and Packet
Sequence B are provided with packet sequence numbers, the frame sequence
numbers need not be provided, since the packet sequence numbers can
suffice for defining the frame sequencing.

[0125] Furthermore, although the network audio system 10 has been
described such that the zone players 11(n) are provided with an audio
amplifier 35 for amplifying the analog signal provided by the respective
digital to analog converters 33, it will be appreciated that a zone
player may be provided that does not itself include an audio amplifier.
In that case, the analog signal may be coupled to an external amplifier
for amplification as necessary before being provided to the audio
reproduction device(s) 15(n)(r). It will be appreciated that a single
zone player 11(n) may be provided with multiple audio amplifiers and
audio reproduction device interfaces, and, if necessary, multiple digital
to analog converters 33, to provide audio programs for corresponding
numbers of synchrony groups.

[0126] Similarly, although the zone players 11(n) have been described such
that they may be connected to one or more audio information sources, it
will be appreciated that an audio information source may form part of and
be integrated into a zone player 11(n). For example, a zone player may
include a compact disk player, cassette tape player, broadcast radio
receiver, or the like, that has been integrated into it. In addition, as
noted above, an individual zone player 11(n) may be connected to multiple
audio information sources and may contemporaneously operate as the audio
information channel device 23 for multiple synchrony groups.

[0127] In addition, although FIG. 1 shows the network audio system 10 as
including one user interface module 13, it will be appreciated that the
system 10 may include a plurality of user interface modules. Each user
interface module be useful for controlling all of the zone players as
described above, or alternatively one or more of the user interface
modules may be useful for controlling selected subsets of the zone
players.

[0128] Moreover, it will be appreciated that, although the invention has
been described in connection with audio information, it will be
appreciated that the invention will find utility in connection with any
type of information for which synchrony among devices connected to a
network is desired.

[0129] As noted above, while a zone player 11(n) is operating as audio
information channel device 23 for a synchrony group 20, when the zone
player 11(n)'s audio information source interface 30 or network
communications manager 40 stores digital audio information frames based
on audio information from an audio information source 14(n)(s) in the
audio information buffer 31, it will provide time stamps for the
respective frames to schedule them for playback after some time delay
after they have been buffered in the audio information buffer 31. The
delay is provided so that, for other zone players 11(n'), 11(n''), . . .
that are operating as members of a synchrony group, there will be
sufficient time for the audio and playback timing information to be
transferred over the network 12 to those other zone players 11(n'),
11(n''), . . . so that it can be processed and played by them at the
appropriate time as described above. The time period that is selected for
the time delay may be fixed or variable, and in either case may be based
on a number of factors. If the time period selected for the time delay is
fixed, it may be based on, for example, factors such as an estimate of
the maximum latency in the network 12, the estimated maximum loading of
the various components comprising the zone players 11(n), and other
estimates as will be appreciated by those skilled in the art.

[0130] The time delay may be the same for audio information from all types
of audio information sources, and may be constant over the entire period
that the synchrony group 20 is playing an audio work. Alternatively,
different time delays may be utilized based on various criteria. For
example, if the audio information is to be played independently of
information associated with other types of media, the time delay may be
selected to be relatively long, on the order of a significant fraction of
a second, or longer. On the other hand, if the audio information is to be
played contemporaneously with, for example, video information, which may
be supplied by, for example, a video disk, video tape cassette, over
cable, satellite, or broadcast television, which may not be buffered or
which may be displayed independently of the network audio system 10, it
may be undesirable to provide for such a lengthy delay, since the time
delay of the audio playback, in relation to the video display, may be
noticeable. In that case, the zone player 11(n) may provide for a much
shorter time delay. In one embodiment, the time delay provided for audio
information to be played concurrently with video information is selected
to be generally on the order of fifty milliseconds, which would barely,
if at all, be perceptible to someone viewing the video. Other desirable
time delays for information from other types of sources will be apparent
to those skilled in the art.

[0131] As yet a further possibility, the zone player 11(n), when operating
as an audio information channel device 23 for a synchrony group 20, can
dynamically determine the time delay based on a number of conditions in
the network audio system 10, including, for example, the message transfer
latency in network 12, the loading of microprocessors or other components
that are used in the various zone players 11(n'), 11(n''), . . . that may
comprise a synchrony group 20, as well as other factors. For example, if
the audio information channel device 23 determines that the latency in
the network 12 has increased beyond a selected threshold, the audio
information channel device 23 can adjust the delay to increase the
likelihood that the members of the synchrony group 20 will be able to
receive the packets and process the frames so that they will be able to
play them at the appropriate times. Similarly, if the audio information
channel device 23 is notified that a member of the synchrony group 20 to
which it provides audio information requires additional time to receive
and process the frames that it transmits, the audio information channel
device 23 can adjust the delay accordingly. It will be appreciated that,
to reduce or minimize possible discontinuities in the audio playback by
the members of the synchrony group, the audio information channel device
23 can, instead of adjusting the time delay during a particular audio
track, adjust the time delay between tracks, during silent periods of a
track or otherwise as will be appreciated by those skilled in the art. In
addition, the audio information channel device 23 can use conventional
audio compression methodologies to facilitate a speeding up and/or
slowing down of playback of an audio track while it is in the process of
providing additional time delay. Generally, the members of the synchrony
group 20 can provide notifications to the audio information channel
device 23 if they determine that they will need an additional time delay,
and the audio information channel device 23 can adjust the time delay in
accordance with the notifications from the members of the synchrony group
20.

[0132] It will be appreciated that a system in accordance with the
invention can be constructed in whole or in part from special purpose
hardware or a general purpose computer system, or any combination
thereof, any portion of which may be controlled by a suitable program.
Any program may in whole or in part comprise part of or be stored on the
system in a conventional manner, or it may in whole or in part be
provided in to the system over a network or other mechanism for
transferring information in a conventional manner. In addition, it will
be appreciated that the system may be operated and/or otherwise
controlled by means of information provided by an operator using operator
input elements (not shown) which may be connected directly to the system
or which may transfer the information to the system over a network or
other mechanism for transferring information in a conventional manner.

[0133] The foregoing description has been limited to a specific embodiment
of this invention. It will be apparent, however, that various variations
and modifications may be made to the invention, with the attainment of
some or all of the advantages of the invention. It is the object of the
appended claims to cover these and such other variations and
modifications as come within the true spirit and scope of the invention.