# US 10,120,638 B2 · Synchronizing operations among a plurality of independently clocked digital data processing devices

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,120,638 B2
- Document ID: US10120638B2
- Status: Granted
- Kind: B2
- Application number: 15/081,911
- Filed: 2016-03-27
- Published: 2016-07-21
- Granted: 2018-11-06
- Earliest claimed: 2003-07-28
- Assignees: Sonos, Inc.
- Applicants: Sonos, Inc
- Inventors: Nicholas A. J. Millington; Michael Ericson
- Web page: https://patentgrep.com/patent/US10120638B2

## CPC

- G06F 3/165: {Management of the audio stream, e.g. setting of volume, audio stream path}
- G05B 15/02: electric
- G06F 1/00: Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00 (architectures of general purpose stored program computers G06F15/76)
- G06F 1/12: Synchronisation of different clock signals {provided by a plurality of clock generators}
- G06F 3/048: Interaction techniques based on graphical user interfaces [GUI]
- G06F 3/0482: Interaction with lists of selectable items, e.g. menus
- G06F 3/0484: for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F 3/04842: Selection of displayed objects or displayed text elements (G06F3/0482 takes precedence)
- G06F 3/04847: Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
- G06F 3/16: Sound input; Sound output (speech processing G10L)
- G06F 3/162: {Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs}
- G06F 3/167: {Audio in a user interface, e.g. using voice commands for navigating, audio feedback}
- G06F 16/2322: {using timestamps}
- G06F 16/60: of audio data
- G06F 16/63: Querying
- G06F 16/635: Filtering based on additional data, e.g. user or group profiles
- G06F 16/638: Presentation of query results
- G06F 16/639: {using playlists}
- G06F 16/68: Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F 17/00: Digital computing or data processing equipment or methods, specially adapted for specific functions (information retrieval, database structures or file system structures therefor G06F16/00)
- G11B 20/10527: {Audio or video recording; Data buffering arrangements (G11B20/12 - G11B20/18 take precedence)}
- H03G 3/00: Gain control in amplifiers or frequency changers
- H03G 3/20: Automatic control ({H03G3/005 takes precedence;} combined with volume compression or expansion H03G7/00)
- H04H 20/103: {Transmitter-side switching}
- H04H 20/26: Arrangements for switching distribution systems
- H04J 3/0644: {External master-clock}
- H04J 3/0664: {unidirectional timestamps}
- H04L 12/2854: {Wide area networks, e.g. public data networks}
- H04L 65/1069: Session establishment or de-establishment
- H04L 65/1094: Inter-user-equipment sessions transfer or sharing
- H04L 65/60: Network streaming of media packets
- H04L 65/61: for supporting one-way streaming services, e.g. Internet radio
- H04L 65/611: for multicast or broadcast (systems for broadcast or conference H04L12/18; arrangements for broadcast or distribution combined with broadcast H04H20/00; arrangements for broadcast applications with a direct linkage to broadcast information or to broadcast space-time H04H60/00; selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS], H04W4/06)
- H04L 65/612: for unicast
- H04L 65/613: for the control of the source by the destination (control signals issued by the client directed to the server or network components specially adapted for selective content distribution H04N21/637)
- H04L 65/75: Media network packet handling
- H04L 65/80: Responding to QoS
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L 67/12: specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L 67/55: Push-based network services
- H04L 69/28: Timers or timing mechanisms used in protocols
- H04N 5/04: Synchronising (for television systems using pulse code modulation H04N7/56)
- H04N 9/7904: {using intermediate digital signal processing}
- H04N 21/4307: {Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen}
- H04N 21/43076: {of the same content streams on multiple devices, e.g. when family members are watching the same movie on different devices}
- H04N 21/43615: {Interfacing a Home Network, e.g. for connecting the client to a plurality of peripherals (home Audio Video Interoperability [HAVI] data switching networks H04L12/2805)}
- H04R 3/12: for distributing signals to two or more loudspeakers {(specially adapted for hearing aids H04R25/407)}
- H04R 27/00: Public address systems (circuits for preventing acoustic reaction H04R3/02; circuits for distributing signals to loudspeakers H04R3/12; {monitoring or testing arrangements for public address systems H04R29/007}; amplifiers H03F)
- H04W 56/0015: {one node acting as a reference for the others}
- H04W 84/20: Leader-follower arrangements
- G11B 2020/10592: {specifically adapted for recording or reproducing multichannel signals}
- H04H 2201/20: digital audio broadcasting [DAB]
- H04R 2227/003: Digital PA systems using, e.g. LAN or internet
- H04R 2227/005: Audio distribution systems for home, i.e. multi-room use
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G05B: CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS (systems for controlling or regulating non-electric variables G05D; systems for regulating electric or magnetic variables G05F; control devices or systems insofar as characterised by mechanical features only G05G)
- G11B: INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER (recording measured values in a way that does not require playback through a transducer G01D9/00; recording or playback apparatus using mechanically marked tape, e.g. punched paper tape, or using unit records, e.g. punched or magnetically marked cards G06K; transferring data from one type of record carrier to another G06K1/18; circuits for coupling output of reproducer to radio receiver H04B1/20; gramophone pick-ups or like acoustic electromechanical transducers or circuits therefor H04R)
- H03G: CONTROL OF AMPLIFICATION
- H04H: BROADCAST COMMUNICATION (multiplex communication H04J; pictorial communication aspects of broadcast systems H04N)
- H04J: MULTIPLEX COMMUNICATION (transmission in general H04B; peculiar to transmission of digital information H04L5/00; systems for the simultaneous or sequential transmission of more than one television signal H04N7/08; in exchanges H04Q11/00; stereophonic systems H04S)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04R: LOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; ELECTRIC HEARING AIDS; PUBLIC ADDRESS SYSTEMS (producing sounds with frequency not determined by supply frequency G10K)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Example systems, apparatus, and methods receive audio information including a plurality of frames from a source device, wherein each frame of the plurality of frames includes one or more audio samples and a time stamp indicating when to play the one or more audio samples of the respective frame. In an example, the time stamp is updated for each of the plurality of frames using a time differential value determined between clock information received from the source device and clock information associated with the device. The updated time stamp is stored for each of the plurality of frames, and the audio information is output based on the plurality of frames and associated updated time stamps. A number of samples per frame to be output is adjusted based on a comparison between the updated time stamp for the frame and a predicted time value for play back of the frame.

## Claims

### Claim 1

A first digital data processing device included in a synchrony group comprising the first digital data processing device and a second digital data processing device, the first digital data processing device comprising:
an interface configured to receive multimedia information for playback in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device, wherein the multimedia information is arranged as a plurality of frames, each frame including one or more samples and an indication of when to play the one or more samples in the frame in synchrony with playback of the one or more samples by each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device;
an information buffer configured to store the plurality of frames for play back by the first digital data processing device, wherein the first digital data processing device is configured to receive clock information from a source device and determine a time differential value between the received clock information and clock information associated with the first digital data processing device, the time differential value to be applied with the indication of when to play the one or more samples in each of the plurality of frames to generate an updated indication of when to play the one or more samples in each of the plurality of frames stored in the information buffer; and
an output configured to play back the one or more samples in each of the plurality of frames from the information buffer according to each frame's updated indication of when to play the one or more samples in the frame in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device, wherein the first digital data processing device is configured to adjust, based on at least the received clock information, a number of samples that are played in a time period.

### Claim 2 (depends on 1)

The first digital data processing device of claim 1, wherein for an individual frame, the first digital data processing device is further configured to adjust, independent of another device in the synchrony group and based on at least the received clock information and the indication of when to play the one or more samples in the individual frame, the number of samples that are to be played.

### Claim 3 (depends on 1)

The first digital data processing device of claim 1, further comprising a network communications manager configured to receive the plurality of frames from an audio information source.

### Claim 4 (depends on 1)

The first digital data processing device of claim 1, wherein the first digital data processing device is configured as a master execution device configured to control distribution of information among the synchrony group.

### Claim 5 (depends on 1)

The first digital data processing device of claim 1, further comprising a user interface configured to control the first digital data processing device.

### Claim 6 (depends on 1)

The first digital data processing device of claim 1, wherein the first digital data processing device is configured to enable another digital data processing device to join the synchrony group.

### Claim 7 (depends on 1)

The first digital data processing device of claim 1, wherein the first digital data processing device is configured to transfer an ability to control the first digital data processing device such that another digital data processing device becomes a master execution device of the synchrony group.

### Claim 8

A method performed by a first digital data processing device included in a synchrony group of comprising the first digital data processing device and a second digital data processing device, the method comprising:
receiving, via an interface of the first digital data processing device, multimedia information for playback in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device, wherein the multimedia information is arranged as a plurality of frames, and wherein each frame includes one or more samples and an indication of when to play the one or more samples in the frame in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device;
storing the plurality of frames in an information buffer for play back by the first digital data processing device in synchrony with playback of the plurality of frames by each digital data processing device in the synchrony comprising the first digital data processing device and the second digital data processing device;
receiving clock information from a source device;
determining a time differential value between the received clock information and clock information associated with the first digital data processing device;
playing back the plurality of frames in synchrony with playback of the plurality of frames by each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device via an output of the first digital data processing device, wherein playing back the plurality of frames comprises for an individual frame, (i) generating an updated indication of when to play the one or more samples in the frame based on the time differential value and the indication of when to play the one or more samples in the frame and (ii) playing back the one or more samples in the frame from the information buffer according to the updated indication in synchrony with playback of the one or more samples in the frame by each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device; and
while playing back the plurality of frames via the output in synchrony with playback of the plurality of frames by each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device, adjusting a number of samples played per time period based on at least the received clock information.

### Claim 9 (depends on 8)

The method claim 8, wherein for an individual frame, adjusting a number of samples played per time period based on at least the received clock information comprises, independent of another device in the synchrony group, adjusting the number of samples played per time period based on at least the received clock information and the indication of when to play the one or more samples in the individual frame.

### Claim 10 (depends on 8)

The method claim 8, further comprising:
receiving the plurality of frames from an audio information source via a network communications manager of the first digital data processing device.

### Claim 11 (depends on 8)

The method claim 8, wherein the first digital data processing device is configured as a master execution device configured to control distribution of information among the synchrony group.

### Claim 12 (depends on 8)

The method claim 8, wherein the first digital data processing device comprises a user interface configured to control the digital data processing device.

### Claim 13 (depends on 8)

The method claim 8, further comprising:
the first digital data processing device enabling another digital data processing device to join the synchrony group.

### Claim 14 (depends on 8)

The method claim 8, further comprising:
the first digital data processing device transferring an ability to control the first digital data processing device to another digital data processing device, wherein after the first digital data processing device transfers the ability to control the first digital data processing device to the another digital data processing device, the another digital data processing device becomes a master execution device for the synchrony group.

### Claim 15

Tangible, non-transitory computer-readable media comprising instructions stored therein, wherein the instructions, when executed by one or more processors, cause a first digital data processing device to perform a method, wherein the first digital data processing device is included in a synchrony group comprising the first digital data processing device and a second digital data processing device, and wherein the method comprises:
receiving, via an interface of the first digital data processing device, multimedia information for the first digital data processing device to playback in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device, wherein the multimedia information is arranged as a plurality of frames, and wherein each frame includes one or more samples and an indication of when to play the one or more samples in the frame in synchrony with playback of the one or more samples by each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device;
storing the plurality of frames in an information buffer for play back by the digital data processing device in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device;
receiving clock information from a source device;
determining a time differential value between the received clock information and clock information associated with the digital data processing device;
playing back the plurality of frames in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device via an output of the first digital data processing device, wherein playing back the plurality of frames comprises for an individual frame, (i) generating an updated indication of when to play the one or more samples in the frame based on the time differential value and the indication of when to play the one or more samples in the frame and (ii) playing back the one or more samples in the frame from the information buffer according to the updated indication in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device; and
while playing back the plurality of frames via the output in synchrony with each digital data processing device of the synchrony group comprising the first digital data processing device and the second digital data processing device, adjusting a number of samples played per time period based on at least the received clock information.

### Claim 16 (depends on 15)

The tangible, non-transitory computer-readable media of claim 15, wherein for an individual frame, adjusting a number of samples played per time period based on at least the received clock information comprises, independent of another device in the synchrony group, adjusting the number of sample played per time period based on at least the received clock information and the indication of when to play the one or more samples in the individual frame.

### Claim 17 (depends on 15)

The tangible, non-transitory computer-readable media of claim 15, wherein the method further comprises:
receiving the plurality of frames from an audio information source via a network communications manager of the first digital data processing device.

### Claim 18 (depends on 15)

The tangible, non-transitory computer-readable media of claim 15, wherein the first digital data processing device is configured as a master execution device configured to control distribution of information among the synchrony group.

### Claim 19 (depends on 15)

The tangible, non-transitory computer-readable media of claim 15, wherein the first digital data processing device comprises a user interface configured to control the first digital data processing device.

### Claim 20 (depends on 15)

The tangible, non-transitory computer-readable media of claim 15, wherein the method further comprises:
the first digital data processing device enabling another digital data processing device to join the synchrony group.

### Claim 21 (depends on 15)

The tangible, non-transitory computer-readable media of claim 15, wherein the method further comprises:
the first digital data processing device transferring an ability to control the first digital data processing device to another digital data processing device, wherein after the first digital data processing device transfers the ability to control the first digital data processing device to the another digital data processing device, the another digital data processing device becomes a master execution device of the synchrony group.
