Synchronizing Operations Among a Plurality of Independently Clocked Digital Data Processing Devices
The present application is a continuation of U.S. application Ser. No. 14/564,544, filed Dec. 9, 2014, for “Systems And Methods For Synchronizing Operations Among A Plurality Of Independently Clocked Digital Data Processing Devices Without A Voltage Controlled Crystal Oscillator,” which is a continuation of U.S. application Ser. No. 14/176,808, filed Feb. 10, 2014, for “Systems and Methods for Synchronizing Operations Among a Plurality of Independently Clocked Digital Data Processing Devices Without a Voltage Controlled Crystal Oscillator,” which is a continuation of U.S. application Ser. No. 13/724,048, filed Dec. 21, 2012, for “Systems and Methods for Synchronizing Operations Among a Plurality of Independently Clocked Digital Data Processing Devices Without a Voltage Controlled Crystal Oscillator,” which is a continuation of U.S. application Ser. No. 13/204,511, filed Aug. 5, 2011, for “Systems and Methods for Synchronizing Operations Among a Plurality of Independently Clocked Digital Data Processing Devices Without a Voltage Controlled Crystal Oscillator,” which is a continuation of U.S. application Ser. No. 11/801,468, filed May 9, 2007, for “Systems and Methods for Synchronizing Operations Among a Plurality of Independently Clocked Digital Data Processing Devices Without a Voltage Controlled Crystal Oscillator,” which is a continuation-in-part of U.S. application Ser. No. 10/816,217 filed Apr. 1, 2004, for “System and Method For Synchronizing Operations Among a Plurality of Independently Clocked Digital Data Processing Devices,” which claims the benefit and priority of U.S. App. 60/490,768 filed Jul. 28, 2003, for “Method For Synchronizing Audio Playback Between Multiple Networked Devices.” U.S. application Ser. No. 11/801,468 also claims the benefit and priority of both (i) U.S. App. 60/860,964 filed Nov. 22, 2006, for “Systems and Methods for Synchronizing Operations Among a Plurality of Independently Clocked Digital Data Processing Devices that Independently Source Digital Data” and (ii) U.S. App. 60/876,455 filed Dec. 20, 2006, for “Systems and Methods for Synchronizing Operations Among a Plurality of Independently Clocked Digital Data Processing Devices that Independently Source Digital Data.” The entire contents of the Ser. No. 14/564,544; 14/176,808; 13/724,048; 13/204,511; 11/801,468; 10/816,217; 60/490,768; 60/860,964; and 60/876,455 applications are incorporated herein by reference. The present invention relates generally to digital content, and more particularly, to systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices without a voltage controlled crystal oscillator. Conventionally, playing the same digital content over multiple audio and/or audiovisual reproduction devices simultaneously or in synchrony is limited by the inherent differences in the frequencies or clock rates of the crystal oscillators influencing the rates in which the digital content is converted to analog content for playing over the respective audio and/or audiovisual reproduction devices. Previous approaches that solve this problem require expensive hardware and/or circuitry, which also requires additional space within the audio and/or audiovisual reproduction device. There is thus a need for systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices without a voltage controlled crystal oscillator. Exemplary systems and methods are provided that include a distribution device that maintains a clock rate and distributes a series of tasks to a group of execution devices (or synchrony group). Each task has a plurality of samples per frame associated with a time stamp indicating when the task is to be executed. An execution device executes the series of tasks at the times indicated and adjusts the number of samples per frame in relation to the clock rate maintained by the distribution device. The synchrony group may also be configured to adjust samples per frame in relation to a clock rate maintained by the distribution device. Referring to The exemplary network audio system 10 includes at least one zone player 11, interconnected by a local network 12, all of which may operate under the control of one or more user interface modules identified by reference numeral 13. The zone player 11 is sometimes referred to as a digital data processing device. One or more of the zone players 11 may also be connected to one or more audio information sources, which will generally be identified herein by reference numeral 14, and/or connected to one or more audio reproduction devices, which will generally be identified by reference numeral 15. It will be appreciated that the number of audio information sources may vary as among the various zone players 11, and some zone players may not have any audio information sources connected thereto. A plurality of zone players 11 associated with a network audio system 10 may be distributed throughout an establishment, such as residence, an office complex, a hotel, a conference hall, an amphitheater, auditorium, or other types of establishments as will be apparent to those skilled in the art. For example, a zone player 11 and its associated audio information source(s) and audio reproduction device(s) may be located in a living room, another zone player may be located in a kitchen, another zone player may be located in a dining room, and other′zone players may be located in bedrooms, to selectively provide entertainment in those rooms. The audio information sources 14 may be any of a number of types of conventional sources of audio information, including, for example, compact disc (“CD”) players, AM and/or FM radio receivers, analog or digital tape cassette players, analog record turntables and the like. In addition, the audio information sources 14 may comprise digital audio files stored locally on, for example, personal computers (PCs), personal digital assistants (PDAs), or similar devices capable of storing digital information in volatile or non-volatile form. The audio information sources 14 may also comprise an interface to a wide area network such as the Internet, or any other source of audio information, or an interface to radio services delivered over, for example, satellite. Audio information obtained over the wide area network may comprise, for example, streaming digital audio information such as Internet radio, digital audio files stored on servers, and other types of audio information and sources as will be appreciated by those skilled in the art. Generally, the audio information sources 14 provide audio information associated with audio programs to the zone players for playback. A zone player that receives audio information from an audio information source 14 that is connected thereto may provide playback and/or forward the audio information, along with playback timing information, over the local network 12 to other zone players for playback. Users, using user interface module 13, may also enable different groupings or sets of zone players to provide audio playback of different audio programs synchronously. Referring to The master execution device 21 and the slave devices 22( In addition, under certain circumstances, the audio information channel device 23 may be migrated from one zone player to another zone player, which also may be a zone player that is currently operating as a member of the synchrony group 20. It will be appreciated that the zone player that operates as the master execution device 21 may be migrated to another zone player independently of the migration of the audio information channel device 23. For example, if a first zone player is operating as both the master execution device 21 and the audio information channel device 23 for a synchrony group 20, the function of the master execution device 21 may be migrated to a second zone player while the first zone player is still operating as the audio information channel device 23. Similarly, if a first zone player is operating as both the master execution device 21 and the audio information channel device 23 for a synchrony group 20, the source function of the audio information channel device 23 may be migrated to a second zone player while the first zone player is still operating as the master execution device 21. In addition, if a first zone player is operating as both the master execution device 21 and the audio information channel device 23 for a synchrony group 20, the master execution device 21 may be migrated to a second zone player and the audio information channel device may be migrated to a third zone player. The master execution device 21 receives control information from the user interface module 13 for controlling the synchrony group 20 and provides status information indicating the operational status of the synchrony group 20 to the user interface module 13. Generally, the control information from the user interface module 13 causes the master execution device 21 to enable the audio information channel device 23 to provide audio and playback timing information to the synchrony group, allowing the devices 21 and 22( Referring to Generally, the audio information buffer 31 buffers audio information, in digital form, along with playback timing information. If the zone player 11 is operating as the audio information channel device 23 ( According to some embodiments, the audio information source interface 30 connects to the audio information source(s) 14 associated with the zone player 11. While the zone player 11 is operating as the audio information channel device 23 for a synchrony group 20, and if the audio information is to be provided by a source 14 connected to the zone player 11, the audio information source interface 30 will selectively receive audio information from one of the audio information source(s) 14 to which the zone player is connected and store the audio information in the audio information buffer 21. If the audio information from the selected audio information source 14 is in analog form, the audio information source interface 30 will convert it to digital form. The selection of the audio information source 14 from which the audio information source interface 30 receives audio information is under the control of the control module 42, which, in turn, receives control information from the user interface module through the user interface module interface 44. The audio information source interface 30 adds playback timing information to the digital audio information and buffers the combined audio and playback timing information in the audio information buffer 21. More specifically, the audio information source interface 30 receives audio information from an audio information source 14, converts it to digital form if necessary, and buffers it along with playback timing information in the audio information buffer 21. In addition, the audio information source interface 30 may also provide formatting and scheduling information for the digital audio information, whether as received from the selected audio information source 14 or as converted from an analog audio information source. The formatting and scheduling information will control not only playback by the zone player 11 itself, but will also enable other zone players that may be in a synchrony group for which the zone player 11 is the master execution device to play the audio program associated with the audio information in synchrony with the zone player 11. In one particular embodiment, the audio information source interface 30 divides the audio information associated with an audio work into a series of frames, with each frame comprising digital audio information for a predetermined period of time. As used herein, an audio track may comprise any unit of audio information that is to be played without interruption, or a series of one or more audio tracks that are to be played in succession. It will be appreciated that the tracks comprising the audio program may also be played without interruption, or alternatively playback between tracks may be interrupted by a selected time interval. Generally, the frame sequence number field 56 receives a number which will generically be the number “f,” from the range 1 through F as above, that identifies the relative position of the frame 51( Within each synchrony group member, for each frame of a framed digital audio stream 50 that is buffered in the audio information buffer 21, the audio information source interface 30, using timing information from the digital to analog converter clock 34, may determine a time at which the zone player 11 is to play the respective frame, and will store a time stamp identifying the playback time in the time stamp field 60. The time stamp associated with each frame is used by the playback scheduler 32 to determine when the portion of the digital audio stream stored in the frame is to be coupled to the digital to analog converter 33 to initiate play back. It will be appreciated that the time stamps that are associated with each of the frames in sequential frames will be such that they will be played back in order, and without an interruption between the sequential frames comprising the digital audio stream 50. It will further be appreciated that, after a time stamp has been determined for the first frame and stored in frame 51(1) of a digital audio stream 50, the audio information source interface 30 may determine time stamps for the subsequent frames in relation to the number of samples in the respective frames and the current inherent clock rate of the synchrony group member. The time stamps will also preferably be such that frames will be played back after some slight time delay after they have been buffered in the audio information buffer 21. In some embodiments, the zone players 11 are provided with a digital to analog converter clock 34 whose time may be set by an element such as the network communications manager 40. When a zone player 11 is operating as a member of a synchrony group 20, its network communications manager 40 may use the various types of timing information that it receives from the audio information channel device 23 to adjust the time value of the synchrony group member's digital to analog converter clock 34. If the clock's time value is to be adjusted, when the synchrony group member's network communications manager 40 initially receives the current time information from the audio information channel device 23 for the synchrony group 20, the network communications manager 40 may set the synchrony group member's digital to analog converter clock 34 to the current time value as indicated by the audio information channel device's current time information 23. The network communications manager 40 may set the digital to analog converter clock 34 to the current time value indicated by the audio information channel device's current time information once, or periodically as it receives the current time information. After the network communications manager 40 receives a frame 51( The network communications manager 40 may use the time differential value ΔT that it generates from the audio information channel device timing information and zone player 11's current time to update the time stamps that will be associated with the digital audio information frames that the zone player 11 receives from the audio information channel device. For each digital audio information frame that is received from the audio information channel device, instead of storing the time stamp that is associated with the frame as received in the message in the audio information buffer 21, the network communications manager 40 will store the updated time stamp with the digital audio information frame. The updated time stamp is generated in a manner so that, when the zone player 11, as a member of the synchrony group plays back the digital audio information frame, it will do so in synchrony with other devices in the synchrony group. The network communications manager 40 may utilize the updated time stamps associated with respective frames 51( As an example of one way the network communications manager 40 adjusts the number of samples in one or more frames to accommodate the current inherent clock rate of the digital to analog converter clock 34 of a synchrony group member, consider a situation where the clock used by an audio information channel device 23 indicates a sampling rate of 44105 samples per second for the audio information channel device 23. A synchrony group member with a digital to analog converter clock 34 operating at a current inherent clock rate of 44100 samples per second will require the network communications manager 40 for the synchrony group member to reduce the number of samples in one or more frames by five samples for each one second interval that a particular track(s) comprising one or more frames are being played by the synchrony group member. Continuing this example, a second synchrony group member with a digital to analog converter clock 34 operating at a current inherent clock rate of 44110 samples per second will require the network communications manager 40 for the second synchrony group member to increase the number of samples in one or more frames by five samples for each one second interval that a particular track(s) comprising one or more frames is being played by the second synchrony group member. As a result of the independent adjustments taking place within the first and second synchrony group members in relation to their shared audio information channel device 23, both synchrony group members will be playing the same or nearly the same frame at the same time, despite the differences in their respective current inherent clock rates. An information channel device 23 may be configured to periodically receive the respective current inherent clock rates of one or more synchrony group members comprising a synchrony group. Using this information, the audio information channel device 23 performs the requisite adjustments (instead of the respective one or more synchrony group members) and sends one or more tracks to each synchrony group member, wherein the one or more tracks are adjusted to accommodate the current inherent clock rates of the respective synchrony group members. Accordingly, as a result of the multiple adjustments taking place within the audio information channel device 23 with respect to the current inherent clock rates of the one or more synchrony group members, all synchrony group members may play the same or nearly the same frame at the same time, despite the differences in their respective current inherent clock rates. The exemplary zone player 11 serving as a synchrony group member may or may not include an audio amplifier 35 ( While various systems and methods have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary systems and methods. 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. 1. A digital data processing device included in a synchrony group of one or more digital data processing devices, the digital data processing device comprising:
an interface configured to receive multimedia information for playback in synchrony with the synchrony group, 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; an information buffer configured to store the plurality of frames for play back by the digital data processing device, wherein the 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 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, wherein the 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. 2. The digital data processing device of 3. The digital data processing device of 4. The digital data processing device of 5. The digital data processing device of 6. The digital data processing device of 7. The digital data processing device of 8. A method performed by a digital data processing device included in a synchrony group of one or more digital data processing devices, the method comprising:
receiving, via an interface of the digital data processing device, multimedia information for playback in synchrony with the synchrony group, 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; storing the plurality of frames in an information buffer for play back by the 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 via an output of the 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; and while playing back the plurality of frames via the output, adjusting a number of samples played per time period based on at least the received clock information. 9. The method 10. The method receiving the plurality of frames from an audio information source via a network communications manager of the digital data processing device. 11. The method 12. The method 13. The method the digital data processing device enabling another digital data processing device to join the synchrony group. 14. The method the digital data processing device transferring an ability to control the digital data processing device to another digital data processing device, wherein after the digital data processing device transfers the ability to control the digital data processing device to the another digital data processing device, the another digital data processing device becomes a master execution device. 15. Tangible, non-transitory computer-readable media comprising instructions stored therein, wherein the instructions, when executed by one or more processors, cause a digital data processing device to perform a method, wherein the digital data processing device is included in a synchrony group of one or more digital data processing devices, and wherein the method comprises:
receiving, via an interface of the digital data processing device, multimedia information for playback in synchrony with the synchrony group, 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; storing the plurality of frames in an information buffer for play back by the 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 via an output of the 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; and while playing back the plurality of frames via the output, adjusting a number of samples played per time period based on at least the received clock information. 16. The tangible, non-transitory computer-readable media of 17. The tangible, non-transitory computer-readable media of receiving the plurality of frames from an audio information source via a network communications manager of the digital data processing device. 18. The tangible, non-transitory computer-readable media of 19. The tangible, non-transitory computer-readable media of 20. The tangible, non-transitory computer-readable media of the digital data processing device enabling another digital data processing device to join the synchrony group. 21. The tangible, non-transitory computer-readable media of the digital data processing device transferring an ability to control the digital data processing device to another digital data processing device, wherein after the digital data processing device transfers the ability to control the digital data processing device to the another digital data processing device, the another digital data processing device becomes a master execution device.CROSS-REFERENCE TO RELATED APPLICATIONS
FIELD OF THE INVENTION
DESCRIPTION OF RELATED ART
SUMMARY OF THE INVENTION
BRIEF DESCRIPTION OF THE DRAWINGS
DETAILED DESCRIPTION



