A method is provided for synchronizing clocks on a plurality of audio playback devices. The method includes receiving a broadcast/multicast acknowledgement packet from a synchronization agent at a first audio playback device of the plurality of audio playback devices. A first timestamp representing a time when the acknowledgement packet was received by the first audio playback device is recorded. A broadcast/multicast timestamp packet is received from a time server at the first audio playback device. The timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent. A local clock time on the first audio playback device is updated based on the first timestamp and the second timestamp. The method enables clock synchronization among the plurality of audio playback devices for synchronized playback of streamed audio via the plurality of audio playback devices.
|
16. A non-transitory computer readable storage medium including a set of instructions for execution by a processor, the set of instructions, when executed, causes the processor to:
receive a broadcast/multicast acknowledgement packet via the network interface from a synchronization agent;
record a first timestamp representing a time when the acknowledgement packet was received;
receive a broadcast/multicast timestamp packet from a time server, wherein the timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent;
update a local clock time based on the first timestamp and the second timestamp; and
using the updated local clock time to enable synchronized playback of the audio content among a plurality of audio playback devices.
8. An audio system comprising:
a time server;
a synchronization agent; and
a plurality of audio playback devices for providing synchronized playback of audio content, wherein each audio playback device of the plurality is configured to:
receive a broadcast/multicast acknowledgement packet from a synchronization agent;
record a first timestamp representing a time when the acknowledgement packet was received;
receive a broadcast/multicast timestamp packet from the time server, wherein the timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent;
update a local clock time based on the first timestamp and the second timestamp, such that the local clock time corresponds to that of the other audio playback devices; and
using the updated local clock time to render the audio content in synchrony with the other audio playback devices.
1. A method for synchronizing clocks on a plurality of audio playback devices, the method comprising:
receiving a broadcast/multicast acknowledgement packet from a synchronization agent at a first audio playback device of the plurality of audio playback devices;
receiving the broadcast/multicast acknowledgement packet at a time server;
recording a first timestamp representing a time when the acknowledgement packet was received by the first audio playback device;
receiving a broadcast/multicast timestamp packet from the time server at the first audio playback device, wherein the timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent; and
updating a local clock time on the first audio playback device based on the first timestamp and the second timestamp,
wherein the method enables clock synchronization among the plurality of audio playback devices for synchronized playback of audio content via the plurality of audio playback devices, and
wherein the synchronization agent and the time server are separate and discrete devices that are configured to communicate over a local area network.
18. An audio playback device comprising:
a digital-to-analog converter configured to receive an audio stream comprising a digital representation of audio content via a network and convert to analog form;
an electro-acoustic transducer;
a network interface;
a processor coupled to the digital-to-analog converter, the electro-acoustic transducer, and the network interface; and
instructions stored on a non-transitory computer-readable media that, when executed, cause the processor to:
receive a broadcast/multicast acknowledgement packet via the network interface from a synchronization agent;
record a first timestamp representing a time when the acknowledgement packet was received by the playback device;
receive a broadcast/multicast timestamp packet via the network interface from a time server, wherein the timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent;
update a local clock time based on the first timestamp and the second timestamp, such that the local clock time corresponds to that of at least one other audio playback device on the network; and
using the updated local clock time to render the audio content in synchrony with the at least one other audio playback devices.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
recording a third timestamp representing a time when the acknowledgement packet was received by the second audio playback device;
receiving the broadcast/multicast timestamp packet from the time server at the second audio playback device; and
updating a local clock time on the second audio playback device based on the third timestamp and the second timestamp such that local clock time on the second audio playback device is the same as the local clock time on the first audio playback device.
9. The audio system of
10. The audio system of
11. The audio system of
12. The audio system of
13. The audio system of
14. The audio system of
17. The non-transitory computer readable storage medium of
19. The audio playback device of
|
This disclosure relates to clock synchronization for audio playback devices.
All examples and features mentioned below can be combined in any technically possible way.
In one aspect, a method is provided for synchronizing clocks on a plurality of audio playback devices. The method includes receiving a broadcast/multicast acknowledgement packet from a synchronization agent at a first audio playback device of the plurality of audio playback devices. A first timestamp representing a time when the acknowledgement packet was received by the first audio playback device is recorded. A broadcast/multicast timestamp packet is received from a time server at the first audio playback device. The timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent. A local clock time on the first audio playback device is updated based on the first timestamp and the second timestamp. The method enables clock synchronization among the plurality of audio playback devices for synchronized playback of streamed audio via the plurality of audio playback devices.
Implementations may include one of the following features, or any combination thereof.
In some implementations, the broadcast/multicast acknowledgement packet includes a Dynamic Host Configuration Protocol (DHCP) message.
In certain implementations, the broadcast/multicast timestamp packet includes a Dynamic Host Configuration Protocol (DHCP) message.
In some cases, the method includes sending a network broadcast/multicast excitement packet to excite the synchronization agent.
In certain cases, the excitement packet includes a DHCP discover packet.
In some examples, sending the network broadcast/multicast excitement packet includes sending a first network excitement packet from the first audio playback device.
In some implementations, a broadcast/multicast acknowledgement packet is received from a synchronization agent at a second audio playback device of the plurality of audio playback devices, and a third timestamp representing a time when the acknowledgement packet was received by the second audio playback device is recorded. The broadcast/multicast timestamp packet from the time server is received at the second audio playback device, and a local clock time on the second audio playback device is updated based on the third timestamp and the second timestamp such that local clock time on the second audio playback device is the same as the local clock time on the first audio playback device.
In another aspect, an audio system includes a time server, a synchronization agent, and a plurality of audio playback devices for providing synchronized playback of streamed audio. Each audio playback device of the plurality is configured to: receive a broadcast/multicast acknowledgement packet from a synchronization agent; record a first timestamp representing a time when the acknowledgement packet was received; and receive a broadcast/multicast timestamp packet from the time server, wherein the timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent; and update a local clock time based on the first timestamp and the second timestamp, such that the local clock time corresponds to that of the other audio playback devices.
Implementations may include one of the above and/or below features, or any combination thereof.
In some implementations, each of the audio playback devices are further configured to send a network broadcast/multicast excitement packet via the network interface to excite the synchronization agent.
In certain implementations, the time server, the synchronization agent, and the plurality of audio playback devices are coupled via in a network using a logical bus topology in which network packets are presented to all of the network devices at substantially the same time.
In some cases, the network is selected from the group consisting of: an Ethernet network, a WiFi network, and combinations thereof.
In certain cases, the audio system also includes an audio server for distributing the streamed audio and control data to the plurality of audio playback device, wherein the control data includes an indication when to play the content of the streamed audio.
In some examples, one of the plurality of audio playback devices serves as the time server.
In certain examples, the synchronization agent includes a network access point (e.g., a network router).
According to another aspect, a non-transitory computer readable storage medium includes a set of instructions for execution by a processor. The set of instructions, when executed, causes the processor to: receive a broadcast/multicast acknowledgement packet via the network interface from a synchronization agent; record a first timestamp representing a time when the acknowledgement packet was received; receive a broadcast/multicast timestamp packet from a time server, wherein the timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent; and update a local clock time based on the first timestamp and the second timestamp.
Implementations may include one of the above and/or below features, or any combination thereof.
In some implementations, the instructions further cause the processor to send a network broadcast/multicast excitement packet to excite a synchronization agent.
In yet another aspect, an audio playback device includes a digital-to-analog converter configured to receive an audio stream including a digital representation of audio content via a network and convert to analog form. The audio playback device also includes an electro-acoustic transducer; and a network interface. A processor is coupled to the digital-to-analog converter, the electro-acoustic transducer, and the network interface. The device also includes instructions stored on a non-transitory computer-readable media that, when executed, cause the processor to: receive a broadcast/multicast acknowledgement packet via the network interface from a synchronization agent; record a first timestamp representing a time when the acknowledgement packet was received by the playback device; receive a broadcast/multicast timestamp packet via the network interface from a time server, wherein the timestamp packet includes a second timestamp representing a time when the time server received the acknowledgement packet from the synchronization agent; and update a local clock time based on the first timestamp and the second timestamp, such that the local clock time corresponds to that of at least one other audio playback device on the network.
Implementations may include one of the above and/or below features, or any combination thereof.
In some implementations, the instructions further cause the processor to send a network broadcast/multicast excitement packet via the network interface to excite a synchronization agent.
An audio distribution system that has a number of audio playback devices can be configured such that to provide synchronized playback of stream audio content. When the audio playback devices are part of a network, the synchronization of the respective internal clocks of the individual audio playback devices can be based on a series of broadcast/multicast network communications between the audio playback devices, a time server, and a synchronization agent. Synchronization of the internal clocks of the audio playback devices helps to enable the synchronized playback of audio content; i.e., such that all playback devices control playback of the audio content according to the same time reference.
Audio distribution system 100,
One use of system 100 is to play an audio stream over one or more of the audio playback devices in group 112. The sources of digital audio provide access to content such as audio streams that move over network 116 to the audio playback devices. The sources of such audio streams can include, for example, Internet radio stations and user defined playlists. Each of such digital audio sources maintains a repository of audio content which can be chosen by the user to be played over one or more of the audio playback devices. Such digital audio sources can include Internet-based music services such as Pandora®, Spotify® and vTuner®, for example. Network attached storage devices such as digital audio source 130, and media server applications such as may be found on a mobile computing device, can also be sources of audio data. In a non-limiting example, the user selects the audio source and the playback devices via PC 126 and/or mobile device 128.
When a user has chosen to have an audio stream played on more than one of the audio playback devices, in order for the music to be properly synchronized such that the same tracks are playing synchronously on all of the audio playback devices there needs to be appropriate and sufficient coordination among all of the audio playback devices. One manner in which such coordination can be accomplished is to use one of the audio playback devices to control the distribution of audio data to all of the other audio playback devices that are being used to play content. This device which controls audio data distribution to the other active playback devices can be considered a master device, and the rest of the active devices (i.e., the rest of the playback devices that are being used to play content) can be considered to be slave devices. In addition to an audio stream, the master device also provides control data (e.g., via a control data stream) to the slave devices. The control data includes timing information which enables the slave devices to synchronize playback of the streamed audio content with the master device. In one example, the control data includes a “play at” time, which corresponds to a time when the playback devices are to begin playback of the streamed audio data. Devices joining the playback group after playback has started may also use the “play at” time to determine where in the stream to begin playback in order to sync up with the playback devices in the group.
To help ensure that the playback of the audio content is and remains synchronized, the respective internal clocks of the individual playback devices are synchronized. In principle, such clocks comprise an oscillator and a counter. With reference to
The functionality of the time server 210 may be provided by one of the audio playback devices (110-1-110-n). For example, in some cases, the time server 210 may be the master device, or any one of the slave devices, in a synchronized group of audio playback devices 110. The functionality of the synchronization agent 212 may be provided by a network access point, such as router 114 (
Referring to
The synchronization agent receives the excitement packet (step 322), and replies (step 324) with a broadcast/multicast packet acknowledging the excitement packet. Since the acknowledgement packet is a broadcast/multicast packet, all devices in the network will receive it. Upon receiving the acknowledgement packet, all of the playback devices record (326) their timestamp (tack) when that event happened. Similarly, the time server also records (step 328) its timestamp (Tack) when it receives the acknowledgement packet. Next, as a response to the acknowledgement packet, the time server sends (step 330) another broadcast/multicast packet that contains the timestamp (Tack) when it received the acknowledgement packet from the synchronization agent.
Next, the audio playback devices receive (step 332) the timestamp packet from the time server, and, at step 334, each of the audio playback devices compute their respective time error using the following expression:
Time Error=Tack−tack
This time error is used to adjust the individual device's respective internal clocks, such that the local clock time corresponds to that of the other audio playback devices.
An embodiment of this method can use Dynamic Host Configuration Protocol (DHCP) discover packets to excite the network DHCP server (here, the synchronization agent). If those packets are sent using the flag BROADCAST set, the DHCP server will reply to the discover request using a broadcast packet that can be used as the acknowledge packet. The results of this method have shown that synchronization between the time server and audio playback devices can be better than 30 microseconds, which is sufficient for audio applications.
Any new device seeking to join the group will perform the same steps to synchronize its clock to the time server.
An exemplary audio playback device 110 will now be described in greater detail with reference to
The assigned entities can be associated with different ones of the digital audio sources such that a single audio playback device 110 can provide for single press access to various different digital audio sources. In one example, the assigned entities include at least (i) user-defined playlists of digital music and (ii) Internet radio stations. In another example, the digital audio sources include a plurality of Internet radio sites, and the assigned entities include individual radio stations provided by those Internet radio sites.
Notably, the preset indicators 418 operate in the same manner, at least from a user's perspective, regardless of which entities are assigned and which of the digital audio sources provide the assigned entities. That is, each preset indicator 418 can provide for single press access to its assigned entity whether that entity is a user-defined playlist of digital music provided by an NAS device or an Internet radio station provided by an Internet music service.
With reference to
The network interface 420 provides for communication between the audio playback device 110, the remote server (item 140,
In some cases, the network interface 420 may also include a network media processor 434 for supporting Apple AirPlay® (a proprietary protocol stack/suite developed by Apple Inc., with headquarters in Cupertino, Calif., that allows wireless streaming of audio, video, and photos, together with related metadata between devices). For example, if a user connects an AirPlay® enabled device, such as an iPhone or iPad device, to the LAN 118, the user can then stream music to the network connected audio playback devices 110 via Apple AirPlay®. A suitable network media processor is the DM870 processor available from SMSC of Hauppauge, N.Y. The network media processor 434 provides network access (i.e., the Wi-Fi network and/or Ethernet connection can be provided through the network media processor 434) and AirPlay® audio. AirPlay® audio signals are passed to the processor 422, using the I2S protocol (an electrical serial bus interface standard used for connecting digital audio devices), for downstream processing and playback. Notably, the audio playback device 110 can support audio-streaming via AirPlay® and/or DLNA's UPnP protocols, and all integrated within one device.
All other digital audio coming from network packets comes straight from the network media processor 434 through a USB bridge 436 to the processor 422 and runs into the decoders, DSP, and eventually is played back (rendered) via the electro-acoustic transducer(s) 415.
The network interface 420 can also include a Bluetooth low energy (BTLE) system-on-chip (SoC) 438 for Bluetooth low energy applications (e.g., for wireless communication with a Bluetooth enabled controller (not shown). A suitable BTLE SoC is the CC2540 available from Texas Instruments, with headquarters in Dallas, Tex.
Streamed data pass from the network interface 420 to the processor 422. The processor 422 can execute instructions within the audio playback device (e.g., for performing, among other things, digital signal processing, decoding, and equalization functions), including instructions stored in the memory 428. The processor 422 may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor 422 may provide, for example, for coordination of other components of the audio playback device 110, such as control of user interfaces, applications run by the audio playback device 110. A suitable processor is the DA921 available from Texas Instruments.
The processor 422 provides a processed digital audio signal to the audio hardware 424 which includes one or more digital-to-analog (D/A) converters for converting the digital audio signal to an analog audio signal. The audio hardware 424 also includes one or more amplifiers which provide amplified analog audio signals to the electroacoustic transducer(s) 415 for playback. In addition, the audio hardware 424 may include circuitry for processing analog input signals to provide digital audio signals for sharing with other devices in the acoustic system 100.
The memory 428 may include, for example, flash memory and/or non-volatile random access memory (NVRAM). In some implementations, instructions (e.g., software) are stored in memory 428. The instructions, when executed by one or more processing devices (e.g., the processor 422), perform one or more processes, such as those described above (e.g., with respect to
A number of implementations have been described. Nevertheless, it will be understood that additional modifications may be made without departing from the scope of the inventive concepts described herein, and, accordingly, other implementations are within the scope of the following claims.
For example, the concepts described above work not only with dedicated speaker packages, such as illustrated in
Elliot, Michael William, Mendes, Paulo Souza
Patent | Priority | Assignee | Title |
10681480, | Sep 02 2016 | Bose Corporation | Multiple room communication system and method |
11038937, | Mar 06 2020 | Sonos, Inc.; Sonos, Inc | Hybrid sniffing and rebroadcast for Bluetooth networks |
11068020, | May 10 2017 | Canon Kabushiki Kaisha | Synchronization signal output apparatus, control method, and non-transitory computer-readable storage medium |
11405439, | Mar 06 2020 | Sonos, Inc. | Hybrid sniffing and rebroadcast for Bluetooth networks |
11916991, | Mar 06 2020 | Sonos, Inc. | Hybrid sniffing and rebroadcast for Bluetooth mesh networks |
Patent | Priority | Assignee | Title |
5087980, | Jan 25 1988 | 955011 ONTARIO LIMITED D B A SOUNDMASTER GROUP | Synchronization of recordings |
5530859, | May 10 1993 | Apple Inc | System for synchronizing a midi presentation with presentations generated by other multimedia streams by means of clock objects |
5655144, | May 10 1993 | Apple Inc | Audio synchronization system |
5951690, | Dec 09 1996 | STMicroelectronics, Inc | Synchronizing an audio-visual stream synchronized to a clock with a video display that is synchronized to a different clock |
5987106, | Jun 24 1997 | ATI Technologies ULC | Automatic volume control system and method for use in a multimedia computer system |
6134379, | Mar 20 1997 | CERBERUS BUSINESS FINANCE, LLC, AS COLLATERAL AGENT | Method and apparatus for synchronizing devices in an audio/video system |
6285405, | Oct 14 1998 | Cisco Technology, Inc | System and method for synchronizing data signals |
6631410, | Mar 16 2000 | Sharp Kabushiki Kaisha | Multimedia wired/wireless content synchronization system and method |
7023833, | Sep 10 1999 | TUMBLEWEED HOLDINGS LLC | Baseband wireless network for isochronous communication |
7391791, | Dec 17 2001 | IMPLICIT NETWORKS, INC | Method and system for synchronization of content rendering |
7483538, | Mar 02 2004 | Apple, Inc; Apple Inc | Wireless and wired speaker hub for a home theater system |
7539889, | Dec 30 2005 | D&M HOLDINGS, INC | Media data synchronization in a wireless network |
7643894, | May 09 2002 | CLEARONE INC | Audio network distribution system |
7917082, | May 06 2002 | TUNNEL IP LLC | Method and apparatus for creating and managing clusters of mobile audio devices |
7996700, | Dec 30 2005 | D&M HOLDINGS, INC | Media data synchronization in a wireless network |
8234395, | Jul 28 2003 | Sonos, Inc | System and method for synchronizing operations among a plurality of independently clocked digital data processing devices |
8238376, | Apr 13 2005 | Sony Corporation; Sony Electronics Inc. | Synchronized audio/video decoding for network devices |
8588949, | Jul 28 2003 | Sonos, Inc. | Method and apparatus for adjusting volume levels in a multi-zone system |
8707077, | Sep 23 2011 | IMAGINATION TECHNOLOGIES, LTD | Method and apparatus for time synchronisation in wireless networks |
8930006, | Mar 12 2008 | Genelec Oy | Data transfer method and system for loudspeakers in a digital sound reproduction system |
8942252, | Dec 17 2001 | IMPLICIT NETWORKS, INC | Method and system synchronization of content rendering |
9195258, | Jul 28 2003 | Sonos, Inc | System and method for synchronizing operations among a plurality of independently clocked digital data processing devices |
9213357, | Jul 28 2003 | Sonos, Inc | Obtaining content from remote source for playback |
20020031196, | |||
20020067909, | |||
20020131398, | |||
20030050989, | |||
20040008661, | |||
20040136375, | |||
20060013208, | |||
20070142944, | |||
20100115119, | |||
20110002429, | |||
20150098576, | |||
20150215715, | |||
20150271745, | |||
20150271772, | |||
20150326331, | |||
WO76272, | |||
WO108366, | |||
WO3058830, | |||
WO9601540, | |||
WO9856135, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 31 2016 | Bose Corporation | (assignment on the face of the patent) | / | |||
Mar 31 2016 | MENDES, PAULO SOUZA | Bose Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 038161 | /0910 | |
Mar 31 2016 | ELLIOT, MICHAEL WILLIAM | Bose Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 038161 | /0910 |
Date | Maintenance Fee Events |
Apr 26 2021 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Dec 23 2024 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 24 2020 | 4 years fee payment window open |
Apr 24 2021 | 6 months grace period start (w surcharge) |
Oct 24 2021 | patent expiry (for year 4) |
Oct 24 2023 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 24 2024 | 8 years fee payment window open |
Apr 24 2025 | 6 months grace period start (w surcharge) |
Oct 24 2025 | patent expiry (for year 8) |
Oct 24 2027 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 24 2028 | 12 years fee payment window open |
Apr 24 2029 | 6 months grace period start (w surcharge) |
Oct 24 2029 | patent expiry (for year 12) |
Oct 24 2031 | 2 years to revive unintentionally abandoned end. (for year 12) |