IP Library › Granted Patent US 12,731,618
Granted Patent B2
US 12,731,618 · App. 18/188,515 · Granted Sep 8, 2026

Audio caching for synchronous playback

Inventor: Hrishikesh Gossain (Santa Barbara, CA)
Assignee: Sonos, Inc.
G11B27/102G06F3/162G06F3/165H04R3/12H04R27/00H04R5/02H04R2227/005H04R2420/07H04S3/008H04S2400/01
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 12,731,618
App. No.
18/188,515
Granted
Sep 8, 2026
Kind
B2
Abstract

Disclosed embodiments include a playback device configured to: (i) maintain a cache comprising a plurality of tracks, wherein an individual track comprises a series of frames, and an individual frame comprises a portion of audio; (ii) after receiving a request to play a particular track, determining whether the particular track is in the cache at the playback device; (iii) when the particular track is in the cache at the playback device, (a) identify playback timing for each frame of the series of frames stored in the cache based at least in part on a current clock time of a clock at the playback device, and (b) play individual frames in the series of frames according to the playback timing for the individual frames; and (iv) when the particular track is not in the cache, obtain the particular track from an audio information source.

Claims (70)

1 . A first playback device comprising:

one or more processors;

tangible, non-transitory computer readable media; and

program instructions stored in the tangible, non-transitory computer readable media, wherein the program instructions are executable by the one or more processors such that the first playback device is configured to:

maintain a cache at the first playback device comprising a plurality of audio tracks, wherein an individual audio track comprises a series of frames, and wherein an individual frame comprises a portion of the individual audio track;

after receiving a request to play a particular audio track, determine whether the particular audio track is stored in the cache at the first playback device;

when the particular audio track is stored in the cache at the first playback device, (i) identify playback timing for each frame of the series of frames stored in the cache at the first playback device based at least in part on a current clock time of a clock at the first playback device, and (ii) play individual frames in the series of frames comprising the portions of the particular audio track according to the playback timing for the individual frames;

when the particular audio track is not stored in the cache at the first playback device, obtain the particular audio track from an audio information source;

wherein when the first playback device is configured as a group coordinator for a playback group comprising the first playback device and a second playback device, and wherein the program instructions executable by the one or more processors such that the first playback device is configured to identify playback timing for each frame of the series of frames stored in the cache at the first playback device based at least in part on the current clock time of the clock at the first playback device comprise program instructions executable by the one or more processors such that the first playback device is configured to:

for an individual frame, configure a playback time that is indicative of a future time relative to the current clock time of the clock at the first playback device; and

wherein when the particular audio track is stored in the cache at the first playback device, the program instructions comprise further program instructions executable by the one or more processors such that the first playback device is further configured to:

determine whether the particular audio track is stored in a cache at the second playback device;

when the particular audio track is stored in the cache at the second playback device, transmit the playback timing for the particular audio track to the second playback device; and

when the particular audio track is not stored in the cache at the second playback device, transmit the series of frames comprising the portions of the particular audio track and the corresponding playback timing from the first playback device to the second playback device.

2 . The first playback device of claim 1 , wherein the program instructions executable by the one or more processors such that the first playback device is configured to play individual frames in the series of frames comprising the portions of the particular audio track according to the playback timing for the individual frames comprise program instructions executable by the one or more processors such that the first playback device is configured to (i) when the particular audio track is stored in the cache at the second playback device, play the individual frames of the particular audio track stored in the cache at the first playback device in synchrony with the individual frames of the particular audio track stored in the cache at the second playback device based on the playback timing for the individual frames and the clock at the first playback device, and (ii) when the particular audio track is not stored in the cache at the second playback device, play the individual frames of the particular audio track stored in the cache at the first playback device in synchrony with the individual frames of the particular audio track transmitted from the first playback device to the second playback device based on the playback timing for the individual frames and the clock at the first playback device.

3 . The first playback device of claim 1 , wherein the program instructions executable by the one or more processors such that the first playback device is configured to obtain the particular audio track from the audio information source comprises program instructions executable by the one or more processors such that the first playback device is configured to request the particular audio track from an Internet-accessible audio information source, and wherein the program instructions comprise further program instructions executable by the one or more processors such that the first playback device is further configured to:

generate a series of frames for the particular audio track obtained from the Internet-accessible audio information source, wherein an individual frame comprises a portion of the particular audio track obtained from the Internet-accessible audio information source and corresponding playback timing for the individual frame, and wherein the corresponding playback timing for the individual frame is indicative of a future time relative to the current clock time of the clock at the first playback device;

transmit the series of frames comprising the portions of the particular audio track and corresponding playback timing from the first playback device to the second playback device; and

based on the playback timing for the individual frames and the clock at the first playback device, play the individual frames of the particular audio track in synchrony with the second playback device's playing of individual frames of the particular audio track transmitted from the first playback device to the second playback device.

4 . The first playback device of claim 1 , wherein when the first playback device is configured as a group member of the playback group comprising the first playback device and the second playback device, and wherein when the second playback device is configured as the group coordinator for the playback group, and wherein the program instructions executable by the one or more processors such that the first playback device is configured to identify playback timing for each frame of the series of frames stored in the cache at the first playback device based at least in part on a current clock time of a clock at the first playback device comprise program instructions executable by the one or more processors such that the first playback device is configured to:

for an individual frame of the particular audio track stored in the cache at the first playback device, configure updated playback timing for the individual frame based on (i) playback timing corresponding to the individual frame received from the second playback device and (ii) a difference between a clock time of a clock at the first playback device and a clock time of the clock at the second playback device.

5 . The first playback device of claim 4 , wherein the program instructions executable by the one or more processors such that the first playback device is configured to obtain the particular audio track from an audio information source comprise program instructions executable by the one or more processors such that the first playback device is configured to receive the particular audio track from the second playback device.

6 . The first playback device of claim 1 , wherein when the first playback device is in the playback group comprising the first playback device and the second playback device, and wherein the program instructions executable by the one or more processors such that the first playback device is configured to maintain the cache at the first playback device comprising the plurality of audio tracks comprise program instructions executable by the one or more processors such that the first playback device is configured to:

limit a number of audio tracks in the plurality of audio tracks to be less than a maximum number of audio tracks capable of being stored by a smaller of (i) a total number of audio tracks capable of being stored by the cache at the first playback device or (ii) a total number of audio tracks capable of being stored by the cache at the second playback device.

7 . The first playback device of claim 1 , wherein when the first playback device is in the playback group comprising the first playback device and the second playback device, and wherein the program instructions executable by the one or more processors such that the first playback device is configured to maintain the cache at the first playback device comprising the plurality of audio tracks comprise program instructions executable by the one or more processors such that the first playback device is configured to:

maintain the cache at the first playback device comprising the plurality of audio tracks such that the cache at the first playback device and the cache at the second playback device contain the same plurality of audio tracks.

8 . The first playback device of claim 7 , wherein the program instructions executable by the one or more processors such that the first playback device is configured to maintain the cache at the first playback device comprising the plurality of audio tracks such that the cache at the first playback device and the cache at the second playback device contain the same plurality of audio tracks comprise program instructions executable by the one or more processors such that the first playback device is configured to:

update the cache at the first playback device such that the cache at the first playback device and the cache at the second playback device contain the same plurality of audio tracks during a time period when network traffic on a network via which the first playback device and the second playback device are configured to communicate with each other is less than a threshold amount of network traffic on the network.

9 . The first playback device of claim 1 , wherein when the first playback device is configured as the group coordinator for the playback group comprising the first playback device and the second playback device, and wherein the program instructions executable by the one or more processors such that the first playback device is configured to maintain the cache at the first playback device comprising the plurality of audio tracks comprise program instructions executable by the one or more processors such that the first playback device is configured to:

when a third playback device is added to the playback group as a group member, transmit the plurality of audio tracks stored in the cache at the first playback device to the third playback device for storage in a cache at the third playback device; and

when the first playback device is removed from the playback group and added to a new playback group comprising the first playback device and a third playback device, wherein when the third playback device is configured as a group coordinator of the new playback group and when the first playback device is configured as a group member of the new playback group, update the cache at the first playback device such that the cache at the first playback device contains the same plurality of audio tracks in the cache at the third playback device.

10 . The first playback device of claim 1 , wherein when the first playback device is a member of a system comprising the first playback device and one more additional playback devices, wherein each of the one or more additional playback devices comprises a corresponding cache, and wherein the program instructions executable by the one or more processors such that the first playback device is configured to maintain the cache at the first playback device comprising the plurality of audio tracks comprise program instructions executable by the one or more processors such that the first playback device is configured to:

maintain the cache at the first playback device such that the cache at the first playback device and the corresponding cache at each of the one or more additional playback devices contain the same plurality of audio tracks.

11 . The first playback device of claim 1 , wherein the program instructions executable by the one or more processors such that the first playback device is configured to when the particular audio track is stored in the cache at the first playback device, play individual frames in the series of frames comprising the portions of the particular audio track according to the playback timing for the individual frames comprise program instructions executable by the one or more processors such that the first playback device is configured to:

cause an audio information source from where the particular audio track was originally obtained to be notified that the particular audio track has been played.

12 . Tangible, non-transitory computer readable media comprising program instructions stored therein, wherein the program instructions, when executed by one or more processors, cause a first playback device to perform functions comprising:

maintaining a cache at the first playback device comprising a plurality of audio tracks, wherein an individual audio track comprises a series of frames, and wherein an individual frame comprises a portion of the individual audio track;

after receiving a request to play a particular audio track, determining whether the particular audio track is stored in the cache at the first playback device;

when the particular audio track is stored in the cache at the first playback device, (i) identifying playback timing for each frame of the series of frames stored in the cache at the first playback device based at least in part on a current clock time of a clock at the first playback device, and (ii) playing individual frames in the series of frames comprising the portions of the particular audio track according to the playback timing for the individual frames;

when the particular audio track is not stored in the cache at the first playback device, obtaining the particular audio track from an audio information source;

wherein when the first playback device is configured as a group coordinator for a playback group comprising the first playback device and a second playback device, and wherein identifying playback timing for each frame of the series of frames stored in the cache at the first playback device based at least in part on the current clock time of the clock at the first playback device comprises:

for an individual frame, configuring a playback time that is indicative of a future time relative to the current clock time of the clock at the first playback device;

wherein when the particular audio track is stored in the cache at the first playback device, the functions further comprise:

determining whether the particular audio track is stored in a cache at the second playback device;

when the particular audio track is stored in the cache at the second playback device, transmitting the playback timing for the particular audio track to the second playback device; and

when the particular audio track is not stored in the cache at the second playback device, transmitting the series of frames comprising the portions of the particular audio track and the corresponding playback timing from the first playback device to the second playback device.

13 . The tangible, non-transitory computer-readable media of claim 12 , wherein when the particular audio track is stored in the cache at the first playback device, the functions further comprise:

when the particular audio track is stored in the cache at the second playback device, and wherein playing individual frames in the series of frames comprising the portions of the particular audio track according to the playback timing for the individual frames comprises playing the individual frames of the particular audio track stored in the cache at the first playback device in synchrony with the individual frames of the particular audio track stored in the cache at the second playback device based on the playback timing for the individual frames and the clock at the first playback device; and

when the particular audio track is not stored in the cache at the second playback device, and wherein playing individual frames in the series of frames comprising the portions of the particular audio track according to the playback timing for the individual frames comprises playing the individual frames of the particular audio track stored in the cache at the first playback device in synchrony with the individual frames of the particular audio track transmitted from the first playback device to the second playback device based on the playback timing for the individual frames and the clock at the first playback device.

14 . The tangible, non-transitory computer-readable media of claim 13 , wherein obtaining the particular audio track from an audio information source comprises requesting the particular audio track from an Internet-accessible audio information source, and wherein the functions further comprise:

generating a series of frames for the particular audio track obtained from the Internet-accessible audio information source, wherein an individual frame comprises a portion of the particular audio track obtained from the Internet-accessible audio information source and corresponding playback timing for the individual frame, and wherein the corresponding playback timing for the individual frame is indicative of a future time relative to the current clock time of the clock at the first playback device;

transmitting the series of frames comprising the portions of the particular audio track and corresponding playback timing from the first playback device to the second playback device; and

based on the playback timing for the individual frames and the clock at the first playback device, playing the individual frames of the particular audio track in synchrony with the second playback device's playing of individual frames of the particular audio track transmitted from the first playback device to the second playback device.

15 . The tangible, non-transitory computer-readable media of claim 12 , wherein when the first playback device is in the playback group comprising the first playback device and the second playback device, and wherein maintaining a cache at the first playback device comprising a plurality of audio tracks comprises one of:

limiting a number of audio tracks in the plurality of audio tracks to be less than a maximum number of audio tracks capable of being stored by a smaller of (i) a total number of audio tracks capable of being stored by the cache at the first playback device or (ii) a total number of audio tracks capable of being stored by the cache at the second playback device;

maintaining the cache at the first playback device comprising the plurality of audio tracks such that the cache at the first playback device and the cache at the second playback device contain the same plurality of audio tracks; or

updating the cache at the first playback device such that the cache at the first playback device and the cache at the second playback device contain the same plurality of audio tracks during a time period when network traffic on a network via which the first playback device and the second playback device are configured to communicate with each other is less than a threshold amount of network traffic on the network.

16 . The tangible, non-transitory computer-readable media of claim 12 , wherein when the particular audio track is stored in the cache at the first playback device, playing individual frames in the series of frames comprising the portions of the particular audio track according to the playback timing for the individual frames comprises:

causing an audio information source from where the particular audio track was originally obtained to be notified that the particular audio track has been played.

17 . A method performed by a first playback device, wherein the method comprises:

maintaining a cache at the first playback device, wherein the cache comprises a plurality of audio tracks, wherein an individual audio track comprises a series of frames, and wherein an individual frame comprises a portion of the individual audio track;

after receiving a request to play a particular audio track, determining whether the particular audio track is stored in the cache at the first playback device;

when the particular audio track is stored in the cache at the first playback device, (i) identifying playback timing for each frame of the series of frames stored in the cache at the first playback device based at least in part on a current clock time of a clock at the first playback device, and (ii) playing individual frames in the series of frames comprising the portions of the particular audio track according to the playback timing for the individual frames;

when the particular audio track is not stored in the cache at the first playback device, obtaining the particular audio track from an audio information source;

wherein when the first playback device is configured as a group coordinator for a playback group comprising the first playback device and a second playback device, and wherein identifying playback timing for each frame of the series of frames stored in the cache at the first playback device based at least in part on the current clock time of the clock at the first playback device comprises:

for an individual frame, configuring a playback time that is indicative of a future time relative to the current clock time of the clock at the first playback device;

wherein when the particular audio track is stored in the cache at the first playback device, the functions further comprise:

determining whether the particular audio track is stored in a cache at the second playback device;

when the particular audio track is stored in the cache at the second playback device, transmitting the playback timing for the particular audio track to the second playback device; and

when the particular audio track is not stored in the cache at the second playback device, transmitting the series of frames comprising the portions of the particular audio track and the corresponding playback timing from the first playback device to the second playback device.

Assignments (2)
SECURITY INTEREST Recorded Jan 30, 2026
From: SONOS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 074533/0615 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2023
From: GOSSAIN, HRISHIKESH
To: SONOS, INC.
Reel/Frame 063070/0435 →
Continuity (2)
Provisional Application 63325937 · Mar 31, 2022
Related Publication 20230317118A1 · Oct 5, 2023
References Cited (66)
US 5440644A · Farinelli et al. · 1995 [cited by applicant]
US 5761320A · Farinelli et al. · 1998 [cited by applicant]
US 5923902A · Inagaki · 1999 [cited by applicant]
US 6032202A · Lea et al. · 2000 [cited by applicant]
US 6256554B1 · DiLorenzo · 2001 [cited by applicant]
US 6404811B1 · Cvetko et al. · 2002 [cited by applicant]
US 6469633B1 · Wachter · 2002 [cited by applicant]
US 6522886B1 · Youngs et al. · 2003 [cited by applicant]
US 6611537B1 · Edens et al. · 2003 [cited by applicant]
US 6631410B1 · Kowalski et al. · 2003 [cited by applicant]
US 6757517B2 · Chang · 2004 [cited by applicant]
US 6778869B2 · Champion · 2004 [cited by applicant]
US 7130608B2 · Hollstrom et al. · 2006 [cited by applicant]
US 7130616B2 · Janik · 2006 [cited by applicant]
US 7143939B2 · Henzerling · 2006 [cited by applicant]
US 7236773B2 · Thomas · 2007 [cited by applicant]
US 7295548B2 · Blank et al. · 2007 [cited by applicant]
US 7391791B2 · Balassanian et al. · 2008 [cited by applicant]
US 7483538B2 · McCarty et al. · 2009 [cited by applicant]
US 7571014B1 · Lambourne et al. · 2009 [cited by applicant]
US 7630501B2 · Blank et al. · 2009 [cited by applicant]
US 7643894B2 · Braithwaite et al. · 2010 [cited by applicant]
US 7657910B1 · McAulay et al. · 2010 [cited by applicant]
US 7853341B2 · McCarty et al. · 2010 [cited by applicant]
US 7987294B2 · Bryce et al. · 2011 [cited by applicant]
US 8014423B2 · Thaler et al. · 2011 [cited by applicant]
US 8045952B2 · Qureshey et al. · 2011 [cited by applicant]
US 8103009B2 · McCarty et al. · 2012 [cited by applicant]
US 8234395B2 · Millington · 2012 [cited by applicant]
US 8483853B1 · Lambourne · 2013 [cited by applicant]
US 8942252B2 · Balassanian et al. · 2015 [cited by applicant]
US 9727303B2 · Millington · 2017 [cited by examiner]
US 11438688B2 · Jorgovanovic · 2022 [cited by examiner]
US 11653053B2 · Gharaat · 2023 [cited by examiner]
US 11876847B2 · McKenzie · 2024 [cited by examiner]
US 11900010B2 · Berger · 2024 [cited by examiner]
US 20010042107A1 · Palm · 2001 [cited by applicant]
US 20020022453A1 · Balog et al. · 2002 [cited by applicant]
US 20020026442A1 · Lipscomb et al. · 2002 [cited by applicant]
US 20020124097A1 · Isely et al. · 2002 [cited by applicant]
US 20030157951A1 · Hasty, Jr. · 2003 [cited by applicant]
US 20040024478A1 · Hans et al. · 2004 [cited by applicant]
US 20070142944A1 · Goldberg et al. · 2007 [cited by applicant]
EP 1389853A1 · 2004 [cited by applicant]
WO 200153994 · 2001 [cited by applicant]
WO 2003093950A2 · 2003 [cited by applicant]
AudioTron Quick Start Guide, Version 1.0, Mar. 2001, 24 pages. [cited by applicant]
AudioTron Reference Manual, Version 3.0, May 2002, 70 pages. [cited by applicant]
AudioTron Setup Guide, Version 3.0, May 2002, 38 pages. [cited by applicant]
Bluetooth. “Specification of the Bluetooth System: The ad hoc Scatternet for affordable and highly functional wireless connectivity,” Core, Version 1.0 A, Jul. 26, 1999, 1068 pages. [cited by applicant]
Bluetooth. “Specification of the Bluetooth System: Wireless connections made easy,” Core, Version 1.0 B, Dec. 1, 1999, 1076 pages. [cited by applicant]
Dell, Inc. “Dell Digital Audio Receiver: Reference Guide,” Jun. 2000, 70 pages. [cited by applicant]
Dell, Inc. “Start Here,” Jun. 2000, 2 pages. [cited by applicant]
“Denon 2003-2004 Product Catalog,” Denon, 2003-2004, 44 pages. [cited by applicant]
Jo et al., “Synchronized One-to-many Media Streaming with Adaptive Playout Control,” Proceedings of SPIE, 2002, pp. 71-82, vol. 4861. [cited by applicant]
Jones, Stephen, “Dell Digital Audio Receiver: Digital upgrade for your analog stereo,” Analog Stereo, Jun. 24, 2000 http://www.reviewsonline.com/articles/961906864.htm retrieved Jun. 18, 2014, 2 pages. [cited by applicant]
Louderback, Jim, “Affordable Audio Receiver Furnishes Homes With MP3,” TechTV Vault. Jun. 28, 2000 retrieved Jul. 10, 2014, 2 pages. [cited by applicant]
Palm, Inc., “Handbook for the Palm VII Handheld,” May 2000, 311 pages. [cited by applicant]
Presentations at WinHEC 2000, May 2000, 138 pages. [cited by applicant]
[cited by applicant]
U.S. Appl. No. 60/490,768, filed Jul. 28, 2003, entitled “Method for synchronizing audio playback between multiple networked devices,” 13 pages. [cited by applicant]
U.S. Appl. No. 60/825,407, filed Sep. 12, 2006, entitled “Controlling and manipulating groupings in a multi-zone music or media system,” 82 pages. [cited by applicant]
JPnP; “Universal Plug and Play Device Architecture,” Jun. 8, 2000; version 1.0; Microsoft Corporation; pp. 1-54. [cited by applicant]
Yamaha DME 64 Owner's Manual; copyright 2004, 80 pages. [cited by applicant]
Yamaha DME Designer 3.5 setup manual guide; copyright 2004, 16 pages. [cited by applicant]
Yamaha DME Designer 3.5 User Manual; Copyright 2004, 507 pages. [cited by applicant]