The present invention relates generally to devices capable of directly accessing individual selections on playback media having multiple selections, such as audio equipment that can play one or more Compact Discs (CDs), mini-discs or Digital Audio Tapes (DATs). More particularly, the present invention relates to audio equipment that is capable of playing individual audio selections in varying non-sequential order, such as, for example, single-disc CD players or multi-disc CD changers (CDCs).
Background Art
Digital technology has enabled manufacturers of CD players to provide a so-called random play mode in which CD selections are played in varying non-sequential order. One approach, for example, uses a uniform random number generator such as a free running timer to generate numbers from which choice of the next selection may be determined. However, this approach allows unlimited repetition of selections before all selections have been played, a characteristic disliked by many CD player users, and does not allow users to replay any number of past selections or skip to as yet unplayed selections without loss of the current sequence, a feature sought by many CD player users.
Another approach that plays CD selections in varying non-sequential order is a variant of the preceding approach in which a number generator and memory array is employed to memorialize "played" selections, eliminating selection repetition. But once again, users may not move through the selection sequence.
CD players have allowed random choice and play of selections without repetitions (before playing of all other selections), and user chosen selection replays and skips where a complete selection sequence has been stored in memory and an index used to identify current selection. Inasmuch as a single CD may have up to ninety-nine selections (on individual "tracks"), and CD changers provided with up to twelve or more discs, the amount of memory and execution time required to implement this approach is significant and prohibitive.
Summary of the Invention
It is, therefore, an object of the present invention to provide a device and method for choosing and playing individual selections on a digital audio recording in varying non-sequential order that the user of such device is unable to predict.
It is another object of the present invention to provide a device and method, as above, in which all selections are played before any selection is repeated.
It is still another object of the present invention to provide a device and method, as above, which the user may replay any past selection or skip to any unplayed selection while maintaining the same order (i.e., the user may move through the sequence).
It is yet another object of the present invention to provide a device and method, as above, in which the amount of necessary memory and execution time are minimized.
It is a further object of the present invention to provide a device and method, as above, which is suitable for use with single-disc CD players and multi-disc CD changers.
These and other objects and advantages of the present invention over existing prior art forms will become more apparent and fully understood from the following description in conjunction with the accompanying drawings.
In general, a device for choosing individual selections on a digital audio recording in varying non-sequential order includes means for playback of chosen selections on a digital audio recording, key means for receipt of a user command for playback in varying non-sequential order, and processor means communicating with the means for playback, receiving the user command from the key means, and calculating a random selection from a deterministic function T.sub.n =SHUFFLE(S.sub.n, Seed) as follows
were T.sub.n is a Selection Offset, S.sub.n is a sequence number, Seed is an unsigned uniform random value, S.sub.d is a temporary value, F.sub.1 . . . F.sub.n are a series of closed operations using the current values of T.sub.n and S.sub.n, Rotate (S.sub.d,M.sub.2, N.sub.2) circularly shifts a number S.sub.d, having N.sub.2 bits, to the right M.sub.2 times, M.sub.1 is a number of loops, M.sub.2 is the fixed number of bits the temporary value S.sub.d is to be rotated; N.sub.2 is the number of bits in a seed; and, G.sub.1 . . . G.sub.n are closed operations based upon only T.sub.n.
In general, a method for choosing and playing individual selections on a digital audio recording in varying non-sequential order include the steps of selecting a sequence number and a random seed and calculating a shuffled selection offset that corresponds to a unique selection on the digital audio recording using a deterministic function based upon the sequence number and the random seed. The chosen selection is determined from the shuffled selection offset and played.
Brief Description of the Drawings
FIG. 1 is a block diagram of an exemplary CD mechanism in accordance with the concept of the present invention for furnishing a digital recording shuffle playback operating mode.
FIG. 2A is a partial top level flow chart of an exemplary method for furnishing a digital recording shuffle playback operating mode in a digital audio playback device such as a CD player or a CD changer.
FIG. 2B is a continuation of the partial top level flow chart of an exemplary method for furnishing a digital recording shuffle playback operating mode in a digital audio playback device such as a CD player or a CD changer shown in FIG. 2A.
Preferred Embodiment for Carrying Out the Invention
FIG. 1 presents in block diagram form an exemplary device, generally indicated by the reference numeral 10, for furnishing a digital recording shuffle playback operating mode in a digital audio playback device such as a CD player or a CD changer. Device 10 may include a conventional CD mechanism 12 including position and tracking means 14 for playing a chosen track on a single-disc CD, or playing a chosen track on a chosen disc in a multiple-disc CD changer. CD mechanism 12 communicates with and is controlled by a processor 16, which in turn communicates with a keyboard 17 having a key 18 for user selection of the shuffle playback operating mode and such other keys as may be desired, and a display 19 for depicting at least the chosen disc and track.
Device 10 chooses a non-sequentially ordered track by generating a track offset with a deterministic function, which may be called SHUFFLE, having a sequence number (S.sub.n) and a random seed (Seed). Expressed mathematically, T.sub.n :=SHUFFLE(S.sub.n, Seed) where S.sub.n is the current sequence number that may be incremented or decremented to produce the next or previous shuffled selection, Seed is a pseudo-random value that selects a given sequence of play, and T.sub.n is the corresponding shuffled selection offset that is converted to an actual disc and selection number. Thus, knowing the SHUFFLE function, storing only the current sequence number S.sub.n and the Seed allows rapid computation of the entire sequence with only minimal resources.
A preferred SHUFFLE function should possess a number of characteristics to achieve optimally the objectives of the present invention. First, the function must be closed and provide a unique one to one mapping of the current sequence number S.sub.n to a shuffled selection offset T.sub.n, thereby insuring that each individual selection is chosen only once each sequence. Second, each Seed value must produce a different mapping of the current sequence number S.sub.n to the shuffled selection offset T.sub.n. Third, the probability of mapping of the current sequence number S.sub.n to any specific shuffled selection offset T.sub.n must be approximately the same as mapping to any other shuffled selection offset, thereby insuring that the user cannot consistently predict the next selection. Fourth, the SHUFFLE function must be scalable to the total number of selections available, thereby insuring minimal execution time. Finally, the SHUFFLE function must be executable using only the processors typical of audio playback equipment, such as microcontrollers and microprocessors, using standard integer instructions, further minimizing execution time and resource demands.
A SHUFFLE algorithm that possesses the preceding characteristics may be described as follows.
Significant to generating the desired sequence are the operations F.sub.1 . . . F.sub.n using the current values of T.sub.n and S.sub.n. These functions must be closed over the domain of possible selection values (M=0 to 2.sup.N -1), provide unique one to one mapping of S.sub.n to T.sub.n, and be reversible (i.e., for F(x) there must be an inverse function F.sup.-1 (x) such that x=F.sup.-1 (F(x)) for all values of x in the domain). The following operations fulfill such requirements in a binary based system and are well suited for implementation by a digital processor such as processor 16: bit inversions, exclusive OR with an N-bit constant, N-bit rotations, bit swapping, one to one substitutions, and modulus additions and subtractions.
Significant to insuring adequate "randomness" in the generated sequences are the operations G1 . . . Gm using the current value of T.sub.n. These operations are desirable because all seed values may not generate sequences of the same level of randomness, and furnish a minimum complexity of the mapping irrespective of the chosen seed value.
Where a SHUFFLE function is being implemented to select up to two hundred fifty-six tracks using three to eight data bits, a specific algorithm that has been found desirable is as follows.
where TableLookUp returns the number 5, 0, 3, 4, 2, 1, 6 or 7 when the three least significant bits from the number that results from the ANDing of T.sub.n with 07 is 0, 1, 2, 3, 4, 5, 6, or 7, respectively. The operation T.sub.n :=T.sub.n AND (2.sup.N -1) maintains the addition and inversion closed over N bits. The operation T.sub.n :=Rotate(T.sub.n, (S.sub.d AND 03h)+1, N) uses the value of the two least significant bits of S.sub.d to shift T.sub.n one to four bits.
An exemplary operation of the SHUFFLE function is illustrated in block diagram form in FIGS. 2A and 2B, and is begun when the user selects SHUFFLE mode play in step 20 by pressing shuffle play key 18. Next processor 16 performs certain initialization activities in step 21 such as querying CD mechanism 12 to determine the total number of selections (T.sub.T), pick a Seed and generate a Sequence Number (S.sub.n).
The Sequence Number (S.sub.n) must be scaled to insure it falls within a range of values that will transform to one of the total number of selections (T.sub.T). In step 22 a minimum scale factor N is calculated where 2.sup.N >T.sub.T. Scaling the SHUFFLE function to the power of two next larger than the total number of selections T.sub.T minimizes execution time. Selection of the next or previous shuffle selection may be readily accomplished by repeatedly incrementing or decrementing (as appropriate) the index and performing the SHUFFLE function until the result is less than the total number of selections. In this manner the sequence for T.sub.T -1 total selections will be the same as the sequence for T.sub.T total selections without the last selection, for the same scaling and seed values.
Once minimum scale factor N is found, the Selection Number (S.sub.n) is incremented in step 23 and transformed to a track offset in step 24. For a single disc, the offset may be simply added to the first selection on the disc to generate the actual selection number. For a changer, the offset may be added to the first selection in the magazine, where the selections for each disc are considered to be sequential to the previous disc (i.e., where the first disc has ten selections, the first selection of the next disc is considered to be the eleventh selection of the magazine). The sequence for a changer may be varied further by initiating the offset from a disc other than the first disc in the magazine or changer (e.g., add the offset to the first selection of the third disc in the magazine).
The skilled artisan will appreciate that the SHUFFLE function may return a Selection Number (S.sub.n) more than the total number of Selections (T.sub.T). Because the domains are based upon powers of two, the SHUFFLE function may be scaled to insure that the likelihood of a result less than the total number of Selections (T.sub.T) is always greater than 0.5. Under such circumstances the SHUFFLE function will require execution less than 2.sup.N-1 times to obtain a workable result. Nevertheless, judicious selection of the nature and sequence of SHUFFLE function operations can significantly reduce the number of times the SHUFFLE function must be performed to return a Selection Number (S.sub.n) less than the total number of Selections (T.sub.T).
Therefore, after the Selection Number (S.sub.n) has been transformed to a track offset, it is tested in step 27 to see if it is less than the total number of Selections (T.sub.T). If not, the number of Selections (S.sub.n) is again incremented, the transformation repeated and the result retested. If so, as explained hereinabove the track offset is converted to a disc and track number in step 30, and an appropriate command signal is transmitted to CD mechanism 12 to go to that disc and track and play and display the same (steps 31 and 32).
Thereafter, upon completion of play or the user selection of the next track for play, as determined in step 33, the process is begun again with incrementing the Selection number (S.sub.n). If, however, play is not complete and the user selects a prior track for play, as determined in step 34, the Selection number (S.sub.n) is decremented in step 37, transformed to a track offset in step 38, and checked in step 39 to see if the track offset is less than the total number of Selections (T.sub.T), as performed in steps 24 and 27, respectively.
The skilled artisan will appreciate that the device and method of the present invention provides a large number of different, repeatable sequences which include each selection only once before all other selections are played and are scaled to the total number of tracks available at the time of play. Moreover, only basic processor instructions are used to implement the method, allowing efficient, inexpensive computation without such resource demands as large quantities of memory and floating point math calculation capabilities.
It will be further understood by the skilled artisan that the device and method of the present invention is well suited for application with any device capable of directly accessing individual selections on the playback media, such as equipment that can play one or more CDs, mini-discs or DATs.
Inasmuch as the present invention is subject to many variations, modifications and changes in detail, a number of which have been expressly stated herein, it is intended that all matter described throughout this entire specification or shown in the accompanying drawings be interpreted as illustrative and not in a limiting sense. It should thus be evident that a device constructed and method performed according to the concept of the present invention, and reasonably equivalent thereto, will accomplish the objects of the present invention and otherwise substantially improve the art of playing CD selections in a varying non-sequential order.