IP Library Granted Patent US 10,952,170
Granted Patent B2
US 10,952,170 · App. 16/029,149 · Granted Mar 16, 2021

Systems and methods for synchronizing multiple electronic devices

Inventors: Michael J. Daley (Santa Clara, CA); Travis Bolinger (Lafayette, CO); Heath O'Neal (Broomfield, CO)
Assignee: GOOGLE TECHNOLOGY HOLDINGS LLC
H04W56/0015H04H20/08H04H20/18H04H20/38H04H20/61H04H60/88H04N21/242H04N21/43H04W56/0065H04H20/57H04H20/63H04H60/80
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,952,170
App. No.
16/029,149
Granted
Mar 16, 2021
Kind
B2
Abstract

Embodiments are provided for syncing multiple electronic devices for collective audio playback. According to certain aspects, a master device connects ( 218 ) to a slave device via a wireless connection. The master device calculates ( 224 ) a network latency via a series of network latency pings with the slave device and sends ( 225 ) the network latency to the slave device. Further, the master devices sends ( 232 ) a portion of an audio file as well as a timing instruction including a system time to the slave device. The master device initiates ( 234 ) playback of the portion of the audio file and the slave devices initiates ( 236 ) playback of the portion of the audio file according to the timing instruction and a calculated system clock offset value.

Claims (73)

1. A method comprising:

joining, by an audio playback device, an audio playback group, wherein the audio playback group includes a master device that provides information for playback of audio content by the audio playback group;

receiving, by the audio playback device from the master device, a timing signal and timing information associated with audio data to be played by the audio playback device in a slave role as part of the audio playback group;

playing, by the audio playback device via a first audio output component of the audio playback device, the audio data at a time based on the timing signal, the timing information, and a clock of the audio playback device;

receiving, by the audio playback device, a user input at a user interface of the audio playback device, the user input associated with modifying playback of the audio data;

transmitting, by the audio playback device to the master device, a playback command request based on the user input received at the user interface, wherein the master device (i) modifies playback of the audio data via a second audio output component of the master device according to the playback command request, and (ii) transmits, to the audio playback device, a playback command based on the playback command request received from the audio playback device;

receiving, by the audio playback device from the master device, the playback command based on the playback command request; and

modifying, by the audio playback device, playback of the audio data via the first audio output component based on the playback command received from the master device such that the audio data is played back, in synchrony, via the first audio output component of the audio playback device and via the second audio output component of the master device.

2. The method of claim 1 ,

wherein modifying the playback of the audio data via the first audio output component based on the playback command is performed in synchrony with the master device modifying the playback of the audio data via the second audio output component of the master device according to the playback command request.

3. The method of claim 1 ,

wherein the user input at the user interface of the audio playback device comprises a user activation of a pause button,

wherein the playback command is a pause command, and

wherein modifying the playback of the audio data via the first audio output component based on the playback command includes pausing the playback of the audio data in synchrony with the master device pausing the playback of the audio data.

4. The method of claim 1 , further comprising:

receiving, by the audio playback device from the master device, a second playback command based on an additional user input at the master device; and

modifying, by the audio playback device, the playback of the audio data based on the second playback command.

5. The method of claim 4 ,

wherein the user input at the user interface of the audio playback device comprises a user activation of a pause/play button on the user interface of the audio playback device,

wherein the playback command is a pause command,

wherein modifying the playback of the audio data via the first audio output component based on the playback command includes pausing the playback of the audio data in synchrony with the master device pausing the playback of the audio data,

wherein the second playback command is a play command,

wherein modifying the playback of the audio data via the first audio output component based on the second playback command includes resuming the playback of the audio data via the first audio output component in synchrony with the master device resuming the playback of the audio data, and

wherein modifying the playback of the audio data based on the second playback command is performed additionally based on a difference between the clock of the audio playback device and a clock of the master device.

6. The method of claim 1 , further comprising:

joining, by a second audio playback device, the audio playback group; and

transmitting, by the audio playback device to the second audio playback device, the playback command request based on the user input.

7. The method of claim 6 ,

wherein modifying the playback of the audio data via the first audio output component based on the playback command is performed in synchrony with the master device modifying the playback of the audio data based on the playback command request and in synchrony with the second audio playback device modifying playback of audio data based on the playback command request.

8. The method of claim 1 , further comprising:

joining, by a second audio playback device, the audio playback group; and

transmitting, by the master device to the second audio playback device, the playback command.

9. The method of claim 8 ,

wherein the audio playback device does not send the playback command request to the second audio playback device.

10. The method of claim 8 ,

wherein modifying the playback of the audio data via the first audio output component based on the playback command is performed in synchrony with the master device adjusting the playback of the audio data based on the playback command and in synchrony with the second audio playback device modifying playback of audio data based on the playback command.

11. An audio playback device comprising:

a communication component for connecting the audio playback device to a master device to form an audio playback group for playback of audio;

a user interface;

a first audio output component; and

a controller module interfaced with the communication component, the user interface, and the first audio output component, and configured to:

receive, from the master device via the communication component, a timing signal and timing information associated with audio data to be played by the audio playback device in a slave role as part of the audio playback group,

cause the first audio output component to output the audio data at a time based on the timing signal, the timing information, and a clock of the audio playback device,

receive, via the user interface, a selection corresponding to a playback command associated with modifying playback of the audio data,

transmit, to the master device via the communication component, a playback command request corresponding to the playback command, wherein the master device (i) modifies playback of the audio data via a second audio output component of the master device according to the playback command request, and (ii) transmits, to the audio playback device, the playback command based on the playback command request received from the audio playback device,

receive, from the master device via the communication component, the playback command based on the playback command request, and

cause the first audio output component to modify playback of the audio data based on the playback command received from the master device such that the audio data is played back, in synchrony, via the first audio output component of the audio playback device and via the second audio output component of the master device.

12. The audio playback device of claim 11 , wherein the playback command is a pause command, and wherein to cause the first audio output component to modify the playback of the audio data, the controller module is configured to:

cause the first audio output component to pause the playback of the audio data in synchrony with the master device pausing the playback of the audio data.

13. The audio playback device of claim 11 , wherein the controller module is further configured to:

receive, from the master device via the communication component, an additional playback command corresponding to a user selection at the master device, and

cause the first audio output component to modify the playback of the audio data based on the additional playback command.

14. The audio playback device of claim 11 , wherein the controller module is further configured to:

detect that an additional audio playback device joined the audio playback group, and

transmit, to the additional audio playback device via the communication component, the playback command request.

15. The audio playback device of claim 11 , wherein the controller module causes the first audio output component to modify the playback of the audio data in synchrony with the master device modifying the playback of the audio data based on the playback command and in synchrony with an additional audio playback device of the audio playback group modifying playback of audio data based on the playback command.

16. A non-transitory computer-readable storage medium configured to store instructions, the instructions when executed by a processor causing the processor to perform operations comprising:

joining, by an audio playback device, an audio playback group including a master device, the audio playback group configured for playback of audio content;

receiving, by the audio playback device from the master device, a timing signal and timing information associated with audio data to be played by the audio playback device in a slave role as part of the audio playback group;

initiating playback, by the audio playback device via a first audio output component of the audio playback device, of the audio data at a time based on the timing signal, the timing information, and a clock of the audio playback device;

receiving, at the audio playback device, a selection corresponding to a playback command associated with modifying playback of the audio data;

sending, by the audio playback device to the master device, a playback command request corresponding to the playback command, wherein the master device (i) modifies playback of the audio data via a second audio output component of the master device according to the playback command request, and (ii) transmits, to the audio playback device, the playback command based on the playback command request received from the audio playback device;

receiving, by the audio playback device from the master device, the playback command based on the playback command request; and

performing, by the audio playback device, the playback command received from the master device to modify the playback of the audio data via the first audio output component such that the audio data is played back, in synchrony, via the first audio output component of the audio playback device and via the second audio output component of the master device.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the playback command is a pause command, and wherein performing the playback command comprises:

performing the pause command to pause the playback of the audio data.

18. The non-transitory computer-readable storage medium of claim 16 , wherein the operations further comprise:

receiving, by the audio playback device from the master device, an additional playback command corresponding to a user selection at the master device; and

performing, by the audio playback device, the additional playback command to modify the playback of the audio data.

19. The non-transitory computer-readable storage medium of claim 16 , wherein the operations further comprise:

detecting that an additional audio playback device joined the audio playback group; and

sending, by the audio playback device to the additional audio playback device, the playback command request.

20. The non-transitory computer-readable storage medium of claim 16 , wherein performing the playback command received from the master device to modify the playback of the audio data is in synchrony with the master device modifying the playback of the audio data based on the playback command and in synchrony with an additional audio playback device of the audio playback group modifying playback of audio data based on the playback command.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2018
From: DALEY, MICHAEL J.; BOLINGER, TRAVIS; O'NEAL, HEATH
To: MOTOROLA MOBILITY LLC
Reel/Frame 046290/0587 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2018
From: MOTOROLA MOBILITY LLC
To: GOOGLE TECHNOLOGY HOLDINGS LLC
Reel/Frame 046290/0640 →
Continuity (5)
Continuation 15681193 · Aug 18, 2017
Continuation 15052503 · Feb 24, 2016
Continuation 13945493 · Jul 18, 2013
Provisional Application 61816972 · Apr 29, 2013
Related Publication 20180317190A1 · Nov 1, 2018