IP Library Granted Patent US 10,289,380
Granted Patent B2
US 10,289,380 · App. 16/181,342 · Granted May 14, 2019

Playback device

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,289,380
App. No.
16/181,342
Granted
May 14, 2019
Kind
B2
Abstract

A system is described 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.

Claims (97)

1. A method comprising:

a first zone player operating as a standalone zone player that is configured to play back audio individually rather than in synchrony with another zone player, wherein the first zone player comprises a local clock that provides a clock time of the first zone player;

while operating as a standalone zone player, receiving a request to enter into a synchrony group with at least a second zone player that is communicatively coupled with the first zone player over a local area network (LAN), wherein the second zone player comprises its own respective local clock that provides a respective clock time of the second zone player;

in response to receiving the request to enter into the synchrony group, entering into the synchrony group with the second zone player and transitioning from operating as a standalone zone player to operating as a slave zone player of the synchrony group that is configured to play back audio in synchrony with the second zone player;

while operating as the slave zone player of the synchrony group:

receiving a series of clock-information messages from the second zone player over the LAN, wherein individual respective clock-information messages in the series of clock-information messages include at least one respective reading of the clock time of the local clock of the second zone player;

based on the received series of clock-information messages, regularly adjusting the clock time of the local clock of the first zone player to track that of the local clock of the second zone player;

receiving, from the second zone player over the LAN, (a) audio information for at least a first audio track and (b) playback timing information associated with the audio information for the first audio track that comprises an indicator of a first future time, relative to the clock time of the local clock of the second zone player, at which the first and second zone players are to initiate synchronous playback of the audio information for the first audio track;

buffering the audio information for the first audio track; and

when the adjusted clock time of the local clock of the first zone player reaches the first future time, initiating synchronous playback of the audio information for the first audio track with the second zone player.

2. The method of claim 1 , wherein receiving the audio information and the playback timing information from the second zone player over the LAN comprises:

receiving the playback timing information in a separate communication from the audio information.

3. The method of claim 1 , wherein the audio information for the first audio track comprises a series of frames, wherein an individual frame includes a respective portion of the received audio information for the first audio track, and wherein the indicator of the first future time corresponds to a first frame in the series of frames.

4. The method of claim 3 , wherein the playback timing information further comprises, for an individual subsequent frame in the series of frames, an indicator of a respective future time, relative to the clock time of the local clock of the second zone player, at which the individual subsequent frame is to be synchronously played back by the first and second zone players, and wherein the method further comprises:

for an individual subsequent frame in the series of frames, playing back the individual subsequent frame when the clock time of the first zone player reaches the respective future time at which the individual subsequent frame is to be synchronously played back by the first and second zone players.

5. The method of claim 1 , further comprising:

based on one or both of the series of clock-information messages or the playback timing information received from the second zone player, adjusting a rate at which the first zone player plays back at least a portion of the audio information for the first audio track.

6. The method of claim 5 , wherein adjusting the rate at which the first zone player plays back the audio information for the first audio track based on the playback timing information received from the second zone player comprises:

determining an expected playback time of a given sample within the audio information for the first audio track;

comparing the expected playback time of the given sample within the audio information for the first audio track to a future playback time of the given sample as indicated by the playback timing information received from the second zone player and thereby determining that there is a difference in respective rates at which the audio information for the first audio track is being played back by the first and second zone players; and

adjusting the rate at which the first zone player plays back at least a portion of the audio information for the first audio track to compensate for the difference in the respective rates at which the audio information for the first audio track is being played back by the first and second zone players.

7. Tangible, non-transitory computer-readable media comprising instructions stored therein, wherein the instructions, when executed by one or more processors, cause a first zone player to perform a method comprising:

the first zone player operating as a standalone zone player that is configured to play back audio individually rather than in synchrony with another zone player, wherein the first zone player comprises a local clock that provides a clock time of the first zone player;

while operating as a standalone zone player, receiving a request to enter into a synchrony group with at least a second zone player that is communicatively coupled with the first zone player over a local area network (LAN), wherein the second zone player comprises its own respective local clock that provides a respective clock time of the second zone player;

in response to receiving the request to enter into the synchrony group, entering into the synchrony group with the second zone player and transitioning from operating as a standalone zone player to operating as a slave zone player of the synchrony group that is configured to play back audio in synchrony with the second zone player;

while operating as the slave zone player of the synchrony group:

receiving a series of clock-information messages from the second zone player over the LAN, wherein individual respective clock-information messages in the series of clock-information messages include at least one respective reading of the clock time of the local clock of the second zone player;

based on the received series of clock-information messages, regularly adjusting the clock time of the local clock of the first zone player to track that of the local clock of the second zone player;

receiving, from the second zone player over the LAN, (a) audio information for at least a first audio track and (b) playback timing information associated with the audio information for the first audio track that comprises an indicator of a first future time, relative to the clock time of the local clock of the second zone player, at which the first and second zone players are to initiate synchronous playback of the audio information for the first audio track;

buffering the audio information for the first audio track; and

when the adjusted clock time of the local clock of the first zone player reaches the first future time, initiating synchronous playback of the audio information for the first audio track with the second zone player.

8. The tangible, non-transitory computer-readable media of claim 7 , wherein receiving the audio information and the playback timing information from the second zone player over the LAN comprises:

receiving the playback timing information in a separate communication from the audio information.

9. The tangible, non-transitory computer-readable media of claim 7 , wherein the audio information for the first audio track comprises a series of frames, wherein an individual frame includes a respective portion of the received audio information for the first audio track, and wherein the indicator of the first future time corresponds to a first frame in the series of frames.

10. The tangible, non-transitory computer-readable media of claim 9 , wherein the playback timing information further comprises, for an individual subsequent frame in the series of frames, an indicator of a respective future time, relative to the clock time of the local clock of the second zone player, at which the individual subsequent frame is to be synchronously played back by the first and second zone players, and wherein the method further comprises:

for an individual subsequent frame in the series of frames, playing back the individual subsequent frame when the clock time of the first zone player reaches the respective future time at which the individual subsequent frame is to be synchronously played back by the first and second zone players.

11. The tangible, non-transitory computer-readable media of claim 7 , wherein the method further comprises:

based on one or both of the series of clock-information messages or the playback timing information received from the second zone player, adjusting a rate at which the first zone player plays back at least a portion of the audio information for the first audio track.

12. The tangible, non-transitory computer-readable media of claim 11 , wherein adjusting the rate at which the first zone player plays back the audio information for the first audio track based on the playback timing information received from the second zone player comprises:

determining an expected playback time of a given sample within the audio information for the first audio track;

comparing the expected playback time of the given sample within the audio information for the first audio track to a future playback time of the given sample as indicated by the playback timing information received from the second zone player and thereby determining that there is a difference in respective rates at which the audio information for the first audio track is being played back by the first and second zone players; and

adjusting the rate at which the first zone player plays back at least a portion of the audio information for the first audio track to compensate for the difference in the respective rates at which the audio information for the first audio track is being played back by the first and second zone players.

13. A first zone player comprising:

a network interface that is configured to provide an interconnection with at least one data network;

a local clock that provides a clock time of the first zone player;

at least one processor;

a tangible, non-transitory computer-readable medium comprising program instructions stored therein, wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising:

the first zone player operating as a standalone zone player that is configured to play back audio individually rather than in synchrony with another zone player;

while operating as a standalone zone player, receiving a request to enter into a synchrony group with at least a second zone player that is communicatively coupled with the first zone player over a local area network (LAN), wherein the second zone player comprises its own respective local clock that provides a respective clock time of the second zone player;

in response to receiving the request to enter into the synchrony group, entering into the synchrony group with the second zone player and transitioning from operating as a standalone zone player to operating as a slave zone player of the synchrony group that is configured to play back audio in synchrony with the second zone player;

while operating as the slave zone player of the synchrony group:

receiving a series of clock-information messages from the second zone player over the LAN, wherein individual respective clock-information messages in the series of clock-information messages include at least one respective reading of the clock time of the local clock of the second zone player;

based on the received series of clock-information messages, regularly adjusting the clock time of the local clock of the first zone player to track that of the local clock of the second zone player;

receiving, from the second zone player over the LAN, (a) audio information for at least a first audio track and (b) playback timing information associated with the audio information for the first audio track that comprises an indicator of a first future time, relative to the clock time of the local clock of the second zone player, at which the first and second zone players are to initiate synchronous playback of the audio information for the first audio track;

buffering the audio information for the first audio track; and

when the adjusted clock time of the local clock of the first zone player reaches the first future time, initiating synchronous playback of the audio information for the first audio track with the second zone player.

14. The first zone player of claim 13 , wherein receiving the request to enter into the synchrony group with at least the second zone player comprises:

receiving the request to enter into the synchrony group with at least the second zone player over the LAN from one or both of (a) a controller device that is communicatively coupled to the first zone player over the LAN or (b) the second zone player.

15. The first zone player of claim 13 , wherein entering into the synchrony group with the second zone player comprises:

receiving, from the second zone player over the LAN, a notification that the second zone player is to begin operating as a master zone player of the synchrony group and the first zone player is to begin operating as the slave zone player of the synchrony group.

16. The first zone player of claim 13 , wherein receiving the audio information and the playback timing information from the second zone player over the LAN comprises:

receiving the playback timing information in a separate communication from the audio information.

17. The first zone player of claim 13 , wherein receiving the audio information from the second zone player over the LAN comprises:

receiving a first portion of the audio information from the second zone player over the LAN before initiating synchronous playback of the audio information for the first audio track and receiving a second portion of the audio information from the second zone player over the LAN after initiating synchronous playback of the audio information for the first audio track.

18. The first zone player of claim 13 , wherein the audio information for the first audio track comprises a series of frames, wherein an individual frame includes a respective portion of the received audio information for the first audio track.

19. The first zone player of claim 18 , wherein the indicator of the first future time corresponds to a first frame in the series of frames.

20. The first zone player of claim 19 , wherein the playback timing information further comprises, for an individual subsequent frame in the series of frames:

an indicator of a respective future time, relative to the clock time of the local clock of the second zone player, at which the individual subsequent frame is to be synchronously played back by the first and second zone players.

21. The first zone player of claim 20 , wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising, while operating at the slave zone player of the synchrony group:

for an individual subsequent frame in the series of frames, playing back the individual subsequent frame when the clock time of the first zone player reaches the respective future time at which the individual subsequent frame is to be synchronously played back by the first and second zone players.

22. The first zone player of claim 13 , wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising, while operating at the slave zone player of the synchrony group:

based on one or both of the series of clock-information messages or the playback timing information received from the second zone player, adjusting a rate at which the first zone player plays back at least a portion of the audio information for the first audio track.

23. The first zone player of claim 22 , wherein adjusting the rate at which the first zone player plays back the audio information for the first audio track based on the playback timing information received from the second zone player comprises:

determining an expected playback time of a given sample within the audio information for the first audio track;

comparing the expected playback time of the given sample within the audio information for the first audio track to a future playback time of the given sample as indicated by the playback timing information received from the second zone player and thereby determining that there is a difference in respective rates at which the audio information for the first audio track is being played back by the first and second zone players; and

adjusting the rate at which the first zone player plays back at least a portion of the audio information for the first audio track to compensate for the difference in the respective rates at which the audio information for the first audio track is being played back by the first and second zone players.

24. The first zone player of claim 13 , wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising, while operating at the slave zone player of the synchrony group:

receiving, from the second zone player over the LAN, a command to terminate playback of the first audio track; and

in response to receiving the command to terminate, terminating playback of the audio information for the first audio track.

25. The first zone player of claim 24 , wherein at least a portion of the audio information for the first audio track is buffered at the first zone player at the time of receiving the command to terminate, and wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising, while operating at the slave zone player of the synchrony group:

in response to receiving the command to terminate, also discarding any audio information for the first audio track that is buffered at the first zone player.

26. The first zone player of claim 13 , wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising, while operating at the slave zone player of the synchrony group:

while still engaging in synchronous playback of the audio information for the first audio track, receiving, from the second zone player over the LAN, (a) audio information for a second audio track and (b) playback timing information associated with the audio information for the second audio track that comprises an indicator of a second future time, relative to the clock time of the local clock of the second zone player, at which the first and second zone players are to initiate synchronous playback of the audio information for the second audio track;

buffering the audio information for the second audio track; and

when the clock time of the local clock of the first zone player reaches the second future time, initiating synchronous playback of the audio information for the second audio track with the second zone player.

27. The first zone player of claim 13 , wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising, while operating at the slave zone player of the synchrony group:

receiving, from the second zone player over the LAN, a command to adjust an individual volume of the first zone player; and

in response to receiving the command, adjusting the individual volume of the first zone player.

28. The first zone player of claim 13 , wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising:

while operating as the slave zone player of the synchrony group, receiving, from the second zone player over the LAN, control information that enables the first zone player to begin operating as a master of the synchrony group; and

in response to receiving the control information, transitioning from operating as the slave zone player of the synchrony group to operating as the master of the synchrony group.

29. The first zone player of claim 13 , wherein the program instructions, when executed by the at least one processor, cause the first zone player to perform functions comprising:

while operating as the slave zone player of the synchrony group, receiving a request to disengage from the synchrony group;

in response to receiving the request to disengage from the synchrony group, disengaging from the synchrony group and transitioning from operating as the slave zone player of the synchrony group to operating as a standalone zone player.

30. The first zone player of claim 13 , wherein receiving the series of clock-information messages from the second zone player over the LAN comprises:

periodically requesting, from the second zone player, an indication of the clock time of the local clock of the second zone player; and

as a result of periodically requesting an indication of the clock time of the local clock of the second zone player, periodically receiving, from the second zone player over the LAN, one of the clock-information messages of the series of clock-information messages.

Assignments (3)
SECURITY AGREEMENT Recorded Oct 15, 2021
From: SONOS, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 058123/0206 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2021
From: MILLINGTON, NICHOLAS A.J.
To: RINCON NETWORKS, INC.
Reel/Frame 056117/0013 →
CHANGE OF NAME Recorded May 3, 2021
From: RINCON NETWORKS, INC.
To: SONOS, INC.
Reel/Frame 056122/0075 →