US 20050159122 A1
A number of radio programs are received simultaneously, and data representing the most recent interval of those programs is maintained in the memory. A user interface is provided with controls for switching programs, and a control for initiating playback of a delayed version of the currently selected program based on the data maintained in the memory. This arrangement permits the user to “rewind” a segment of whatever program the user is currently listening to, even immediately after switching stations.
1. A buffered radio apparatus comprising:
at least one radio receiver, wherein the at least one receiver receives, substantially simultaneously, broadcasts of a first audio stream, a second audio stream, and a third audio stream;
a memory in which data representing the first, second, and third audio streams is stored, wherein the memory is continuously updated so that data representing the most recent at least twenty seconds of the first, second, and third audio streams is maintained in the memory;
a user interface that includes (a) a stream-select control that enables a user to select a desired audio stream and (b) a delay control that enables the user to request reproduction of a delayed version of whatever audio stream was most recently selected by the user; and
a reproduction subsystem that, in response to actuation of the stream-select control, outputs a substantially current version of the audio stream selected by the user, wherein, in response to actuation of the delay control, the reproduction subsystem outputs a delayed version of the most recently selected audio stream based on the data representing the most recently selected audio stream that is stored in the memory.
2. The apparatus of
3. The apparatus of
4. The apparatus of
5. The apparatus of
6. The apparatus of
7. The apparatus of
8. The apparatus of
9. The apparatus of
10. The apparatus of
11. The apparatus of
12. The apparatus of
13. The apparatus of
14. The apparatus of
15. A method of presenting radio broadcasts to a user, the method comprising the steps of:
receiving, substantially simultaneously, radio broadcasts of a first audio stream, a second audio stream, and a third audio stream;
continuously updating the contents of a memory so that data representing the most recent at least twenty seconds of the first, second, and third audio streams is maintained in the memory;
providing a user interface that includes (a) a stream-select control that enables the user to select a desired audio stream and (b) a delay control that enables the user to request reproduction of a delayed version of whatever audio stream was most recently selected by the user;
outputting, in response to actuation of the stream-select control, a substantially current version of the audio stream selected by the user; and
outputting, in response to actuation of the delay control, a delayed version of the most recently selected audio stream based on the data in the memory representing the most recently selected audio stream.
16. The method of
17. The method of
18. The method of
19. A buffered radio apparatus comprising:
a receiver having at least three presets;
a control panel that includes a preset-select control and a delay control; and
a digital to audio subsystem,
wherein the receiver receives broadcasts for at least three presets substantially simultaneously,
wherein the memory is continuously refreshed so that the memory contains data representing the most recent at least twenty seconds of broadcast for each of the at least three presets,
wherein actuation of the preset-select control causes the apparatus to output a substantially current version of whatever preset is selected by the user, and
wherein actuation of the delay control causes the apparatus to output a delayed version of whatever preset was most recently selected by the user by routing data stored in the memory for the most recently selected preset to the digital to audio subsystem.
20. The apparatus of
21. The apparatus of
22. The apparatus of
This application claims priority to U.S. provisional application 60/537,767, filed Jan. 20, 2004, which is incorporated herein by reference. This application hereby references U.S. disclosure document 544,378.
Imagine that you're driving down the highway listening to your car radio, and you switch stations. The new station happens to be playing one of your favorite songs, but it's just about over. Wouldn't it be nice if your radio could “rewind” the broadcast so you could hear the song from the beginning?
A number of radio programs are received simultaneously, and data representing the most recent interval of those programs is maintained in the memory. A user interface is provided with controls for switching programs, and a control for initiating playback of a delayed version of the currently selected program based on the data maintained in the memory.
The main controller 11 controls which station each of the tuners AM1-AM5, FM1-FM5 is tuned to, preferably by sending appropriate control signals to each of the tuners. The control interface between the main controller 11 and the tuners AM1-AM5 and FM1-FM5 may be implemented in a variety of ways. One example of a suitable interface is to connect all of the tuners to a common bus (e.g., a serial bus), incorporate an addressable control interface into each of the tuners, and assign a unique address to each of the tuners. This arrangement permits the main controller to set any given tuner to a desired station by writing a control word to the address assigned to that tuner. The control interface for the tuners AM1-AM5 and FM1-FM5 may be modeled after conventional car radio tuners with digital tuning, in which pressing a single station-preset button on the control panel causes a controller (e.g., a microprocessor) to initiate a control sequence that causes the conventional tuner to tune to the desired station.
In the illustrated embodiment, the FM tuners FM1-FM5 are stereo, and the AM tuners AM1-AM5 are monophonic. As such, each FM tuner generates a pair of audio signals (labeled R and L in
The digitizer 13 digitizes each of the fifteen audio signals generated by the tuners AM1-AM5, FM1-FM5 at a sufficiently high sampling rate to permit subsequent reconstruction of the audio signal. In the United States, the audio signals produced by standard FM tuners have a bandwidth of about 15 kHz, and the audio signals produced by standard AM tuners have a bandwidth of about 5 kHz. As a result, the minimum sampling rate for the audio signals produced by the FM tuners is 30,000 samples per second (30 kSPS), and the minimum sampling rate for the audio signals produced by the AM tuners is 10 kSPS. Because the audio signals produced by the AM tuners and the FM tuners have different minimum sampling rates, the system could be configured to sample the various signals at different sampling rates. However, to simplify the design, the digitizers described herein are configured to sample all of the audio signals at the same sampling rate.
One appropriate sampling rate that may be used for all of the audio signals is 44.1 kSPS, which is the same sampling rate that is used for conventional compact disc (CD) audio. Using this sampling rate advantageously permits the use of standard CD playback hardware designs and algorithms to reconstruct the audio signals from the digital data. In alternative embodiments, the sampling rate may be reduced to about 33 kSPS to conserve memory (by reducing the volume of digital data that must be stored). However, using slower sampling rates will increase the complexity of the low pass filter that is used when the digital data is converted back into analog form. In other alternative embodiments, the sampling rate may be increased (e.g., oversampling may be used) to simplify the design of the filter, at the cost of increased memory requirements. Unless indicated otherwise, the discussion of the
Preferably, the digitizer 13 includes at least one analog to digital (A/D) converter with 14-16 bits of resolution, which is adequate for AM and FM radio broadcasts. Lower resolution may also be used in alternative embodiments. Three examples of suitable configurations for the digitizer 13 are described in
In alternative embodiments (not shown), the main controller 11 may be used to perform some or all of the functions of the local controller 21A, 21B, or 21C.
The memory 14 is logically organized as a set of buffers A1-A5, F1-F5. The digitized data that is generated by the digitizer 13 is stored in these buffers. The buffers A1-A5 hold the digital data that originated in tuners AM1-AM5, respectively; and the buffers F1-F5 hold the digital data that originated in tuners FM1-FM5, respectively. However, because each of the FM tuners FM1-FM5 generates two audio signals (i.e., right and left), each of the buffers F1-F5 preferably includes two sections (i.e., one for right and one for left). For example, the digital data that was obtained by digitizing the right channel from tuner FM2 would be stored in one section of buffer F2, and the digital data that was obtained by digitizing the left channel from tuner FM2 would be stored in the other section of buffer F2.
Data from the tuners is constantly being written into the buffers A1-A5, F1-F5, so a memory device that can sustain a large number of write cycles is needed. Semiconductor random access memory (RAM) such as static RAM (SRAM) and dynamic RAM (DRAM) is preferred, but other types of memory (e.g., a hard disk drive) may be used in alternative embodiments.
The main controller 11 preferably comprises a microprocessor, a microcontroller, or a digital signal processor (DSP) chip that is programmed to carry out the functions described herein. The program that the main controller 11 runs may be stored in any conventional manner, preferably in a nonvolatile memory such as ROM, PROM, or EPROM. The main controller 11 oversees and/or performs most of the functions described herein, including (1) generating the addresses for accessing data, (2) directing the data flow during recording by storing each word generated by the digitizer 13 into the appropriate buffer in the memory 14; (3) directing data flow during playback by reading the digital data out of whichever buffer has been selected for playback, and outputting the playback data to the digital-to-audio subsystem 16; (4) accepting instructions from the user and reporting status back to the user via the user interface 15; and (5) controlling the operation of the tuners AM1-AM5, FM1-FM5.
The main controller 11 preferably includes appropriate interfaces that enable it to carry out each of these functions. Of course, the specifics of these interfaces will depend on the components that are used in the rest of the system. For one example, if the memory 14 is implemented using DRAM, the main controller 11 would include a DRAM controller to facilitate access to the data in the DRAM; but if SRAM is used, no memory controller would be needed. For another example, if the tuner control is implemented via a serial bus, the main controller would include an appropriate UART. In certain embodiments, the hardware for the main controller may be distributed in more than one location (e.g., on two circuit boards). Because all these interfaces are well understood by persons skilled in the relevant arts, the selection and implementation of the appropriate interface need not be discussed here in greater detail.
The user controls the device via a user interface. Although a wide variety of user interfaces can be readily envisioned, one example of a suitable user interface is illustrated in
Preferably, the system is initialized prior to use by presetting the tuners AM1-AM5, FM1-FM5 to stations that the user prefers. The station presets are preferably stored in a non-volatile memory (e.g., flash EPROM, or battery-backed-up RAM). Some examples of ways for the user to set the tuners to the desired stations are discussed below. The discussion of the
Buffering the Audio Signals Generated by the Tuners
Mapping the logical buffers A1-A5, F1-F5 onto one or more physical memory devices may be implemented in any conventional manner. For example, if 32 Megabyte (Mb) DRAM memory chips are used, 16 such chips would be required to form a 256 Mb memory space.
Because each audio sample preferably contains 14-16 bits, the memory is preferably organized in words that are two bytes wide, so that each word holds one sample. When the audio data is sampled at 44.1 kSPS with two bytes per sample, each 16 Mb block of data will hold 8 MegaSamples, which corresponds to about 190 seconds of audio data. In alternative embodiments, larger or smaller buffers may be used to provide different amounts of time.
When power is first applied to the device, none of the buffers contain useful information. The
The write pointers for each of the AM buffers A1-A5 and for both sections of each of the FM buffers F1-F5 are reset to the first address in the buffer or section. For example in the memory map of
The digitizer 13 samples each of the audio signals. The samples from tuners AM1-AM5 are stored in buffers A1-A5, respectively; the samples from the right channel of tuners FM1-FM5 are stored in buffers F1-R through F5-R, respectively; and the samples from the left channel of tuners FM1-FM5 are stored in buffers F1-L through F5-L, respectively. After the write operation, the system samples the next data point from each of the audio signals and increments each write pointer, then stores the samples in the next location in each buffer. This process continues until the write pointer reaches the last address in the section, as shown in
After writing to the last address in each section, the write pointers are all reset to the first address, as shown in
Alternative architectures for storing the newest data and discarding the oldest data so that the most recent interval of audio data is always maintained in memory may be implemented, as will be apparent to persons skilled in the relevant arts.
Playback of the Buffered Data
In the AM playback mode, pressing the buffer select button 151 labeled “1” will cause the system to start reading data out of buffer A1, pressing the buffer select button 151 labeled “2” will cause the system to start reading data out of buffer A2, etc. If the user presses the buffer select button 151 labeled “FM”, the system will switch back to FM playback mode and start reading data out of the most-recently-used FM buffer.
As discussed above, the
When a station is initially selected using the buffer select buttons 151, the read pointers are positioned to access the selected buffer, and also positioned to lag behind the write pointers so that current data is read. As new data for the selected buffer arrives, the write pointers continue to increment at a rate of 44.1 K words per second. The read pointers are also incremented at the same rate, so they will always lag behind the write pointers by a constant amount. The distance (in memory locations) between the read pointers and the write pointers is preferably as small as possible, after accounting for the memory technology being used. For example, if SRAM memory is used, the read pointers may be set to lag behind the write pointers by one or two words. If a hard disk memory is used, it may be necessary to have the read pointers lag behind the write pointers by a significant amount (e.g., a few thousand samples) to allow time to reposition the heads as required. While shorter lag times are preferred, long lag times (e.g., on the order of seconds) may be used in alternative embodiments. However, whatever minimum lag time is implemented for a given embodiment, when the read pointers lag behind the write pointers by the minimum lag time, the data that the read pointers point to is referred to herein as “current data.”
When a different station is selected using the buffer select buttons 151, the read pointers are preferably positioned to point to the current data in the newly selected buffer. For example, if a read pointer is positioned to access the current data in buffer F1-R, as shown in
Data is read by the main controller 11 from the currently selected buffer at the position of the read pointer (for the AM buffers A1-A5) or the read pointer pair (for the FM buffers F1-F5). After reading a data sample (from the AM buffer) or a sample pair (from an FM buffer) the read data is output to the digital-to-audio subsystem 16. After each read operation, the default operation is to increment the read pointer (or pointers) to point to the next sample (or pair of samples) in the currently selected buffer. However, as with the write pointers, if a read pointer reaches the last address in a buffer, it is reset to point back to the first location in the buffer instead of being incremented. Of course, any user command that results in repositioning of the read pointers (either to a different buffer or to another location in the same buffer) also interrupts the default incrementing process for the read pointers.
The read data is output to the digital-to-audio subsystem 16 at a rate of 44.1 kSPS per channel, which is the same rate at which the data was sampled. In embodiments where the digital-to-audio subsystem 16 operates asynchronously with respect to the main controller 11, synchronization is preferred to insure that the output data samples are always generated at exactly 44.1 kHz. An example of a suitable synchronization system that may be incorporated into the digital-to-audio subsystem 16 is a double buffer in which the first stage is a 16 bit latch that is written to by the main controller 11, and the second stage is a 16 bit D-type register that is clocked at 44.1 kHz. With this arrangement, as long as the main controller 11 writes the data into the latch within the appropriate window of time, it will be clocked out of the D-type register at the correct instant.
The digital-to-audio subsystem 16 converts the stream of samples to an analog signal (or a pair of analog signals for FM stations). Conversion of the samples to analog form may be implemented, for example, using conventional CD audio hardware (such as a digital-to-analog converter followed by a low-pass filter). Optionally, conventional CD algorithms (e.g., interpolation) for eliminating pops and clicks may also be used. The audio signals are then amplified and sent to a speaker (not shown) in any conventional manner.
Because the default condition is to read a sample from the currently selected buffer, output it at a rate of 44.1 kSPS to the digital-to-audio subsystem 16, and then continue on to the next sample, the audio signal that is generated with be the same as the audio signal that was originally digitized and written into the selected buffer. As a result, operating the buffer select buttons 151 of the
As with conventional CD players and car stereos, a single button can be used to initiate two functions: one when the button is pressed momentarily, and a second when the button is pressed and held. In some embodiments, a sustained press initiates short jumps with audio feedback to help the user locate the desired portion of the buffered program, and a momentary press initiates a typically longer jump with no audio feedback. Note that in
In one alternative embodiment, a momentary press of the REV button may cause the read pointer to jump to the oldest portion of the currently selected buffer. In another alternative embodiment, preferably implemented using a DSP-based main controller 11, the system monitors the write samples before storing them in the buffers, and runs pattern recognition software to detect the transitions between songs (e.g., by detecting pauses or changes in the frequency spectra of the audio data). Each time a transition is detected, the address corresponding to the transition is stored in memory (e.g., in the spare section mentioned above). In this embodiment, a momentary press of the REV button causes the system to look in the transition table and move the read pointer backwards to the most recent transition for the currently selected buffer. Additional presses of the REV button will move the read pointer backwards to previous transitions or to the oldest end of the buffer (which corresponds to the maximum delay with respect to the current version), whichever is encountered first. Similarly, pressing the FWD button will move the read pointer forward within the buffer to the next transition or to the newest end of the buffer, whichever is encountered first.
In a similar alternative embodiment, the transitions between songs can be detected based on supplemental data that is transmitted in connection with the radio broadcast. For example, in recent years many FM stations have started transmitting low bit-rate supplemental digital data that specifies the title of the song and the artist, so that the data can be displayed on compatible receivers. Since new supplemental data will typically accompany the start of a song, transitions in this supplemental digital data can be used to find song-to-song transitions. When those transitions are detected, the corresponding addresses are loaded into the transition table, and subsequently used as described in the previous paragraph to access the stored data on a song by song basis.
Once a user has backed away from the current data and into the older data using the REV button as described above, the FWD button becomes available to move the read pointer forwards through the buffer, which decreases the delay of the data being output with respect to the current version of the broadcast.
One suitable user interface approach for presetting the tuners AM1-AM5, FM1-FM5 to stations that the user likes is by having the user switch to the desired band by pressing the AM or FM buffer select button 151, and then pressing and holding one of the numbered buffer select buttons 151 for a predetermined period of time (e.g., two full seconds) to enter a station-select mode for the correspondingly numbered tuner. In response to these keypresses, the main controller 11 executes a station select routine. During this station select routine, the previously programmed station for the selected tuner is displayed on display 155, preferably flashing, and current data for the tuner is selected for outputting. The user than presses the + and − buttons 153 until the desired frequency is displayed on the display 155. In response to the + and − key presses, the main controller tunes the currently selected tuner to higher or lower frequencies, and adjusts the display 155 accordingly. The main controller 11 exits the station-select routine after a predetermined period of time (e.g., five seconds) has elapsed without detecting any key presses on the + and − buttons 153, at which point the flashing of the display 155 stops.
Another suitable user interface approach for presetting the tuners AM1-AM5, FM1-FM5 to desired stations uses an additional AM tuner AM6 and an additional FM tuner FM6 (not shown) and additional buffers A6 and F6 (not shown). In this embodiment, the user presses the + and − buttons 153 at any time to adjust the tuning. The frequency is displayed on the display 155, and the extra tuner is tuned to the selected station and its output is stored in one of the extra buffers. Once the extra buffer has filled up sufficiently, the buffered playback functions described above become available for the manually tuned station. When a user wished to program a manually tuned station into one of the five preset slots, the user presses the corresponding numbered buffer select button 151 for a predetermined period of time (e.g., two full seconds). This user interface is advantageously similar to the way the preset stations are programmed on conventional car radios. Preferably, whatever contents of the buffer have been accumulated before holding the buffer select button 151 are immediately available for access for the newly preset station. Numerous alternative user interface arrangements for setting the tuners to the desired stations can be readily envisioned.
In some alternative embodiments (not shown) buffering is only implemented for the FM stations. In these embodiments, only a single, conventional, AM tuner is used, and the buffers A1-A5 are omitted.
In other alternative embodiments, multi-band tuners that can receive either AM or FM signals (depending on the state of a control signal that arrives from the main controller 11) are used in place of the dedicated AM and FM tuners depicted in
In some alternative embodiments, the digital data from the currently selected tuner is used to generate the audio output before the data is buffered, by outputting it to the digital-to-audio subsystem 16 as soon as it arrives. This results in a system with zero lag time between the arrival of the signal and the time that it is output. The data from buffers is only used after the user presses the REV button to access previously broadcasted portions of the program, in which case a delayed version of the most recently selected audio stream will be output.
In other alternative embodiments, when the user presses one of the buffer select buttons 151, the analog output of the newly selected tuner is routed to the audio amp via an analog selector (instead of using the current digital data that has been written to the buffers). These embodiments also have zero lag time, and the data from buffers is only used to generate an audio output after the user presses the REV button to access previously broadcasted portions of the program.
Optionally, stereo AM tuners (not shown) may be used, in which case the AM buffers would preferably also contain two sections.
Optionally, DMA capabilities may be added to the digitizer, so that the digitized data can be written to the buffers without using the resources of the controller.
Optionally, the audio data may be compressed before it is stored (e.g., in MP3 format) and decompressed when it is reproduced. This will save memory and increase storage capacity, but will also increase system complexity and latency.
Optionally, when the user powers down the system, the system may be programmed to switch to a standby mode instead of turning everything off. In the standby mode, all the tuners, the digitizer 13, the main controller 11, and the memory 14 are operational, and the system receives and buffers the incoming signals. When this option is implemented, the buffers will be full when the user turns the system on, so the user will be able to use the REV button immediately (instead of having to wait for the buffers to fill). In automotive applications where power drain must be minimized when the car is off (to prevent draining the car's battery), the use of low power circuitry for these subsystems is preferred. Optionally, a local rechargeable battery that charges when the car is running may be used to power the system in the standby mode, so that the system does not draw power from the car's battery when the car is off.
Preferably, all the tuners, the digitizer 13, the memory 14, and the main controller 111 are all housed in a single housing and share the same power supply circuitry. Most preferably, the housing is small enough to fit in the same space as a conventional car radio. Optionally, a CD player may be integrated into the same housing, as shown in
A variety of alternative approaches for receiving a plurality of audio streams may be used instead of using the five AM and five FM tuners shown in the
Certain prior art digital radio systems broadcast a large number of audio streams (e.g., over 100) together in a single transmission using digital data packets.
During conventional playback on this type of digital radio system, the data packets that correspond to the currently-selected audio stream are extracted from the entirety of the received digital data, and the extracted packets are reconstituted into analog output signals. The rest of the packets are not used to generate audio outputs.
The digital receiver 53 receives the entire stream of packets. In the example that follows, we assume that the 26 stream digital signal shown in
The user selects which audio stream he wants to listen to by pressing one of the buffer select buttons 551. The user interface 55 reports which button has been pressed to the main controller 51. The main controller then routes the current data from the corresponding buffer (B1, B2, B3, B4, or B5) to a subsystem 56 that reconstitutes the stored data for the corresponding stream into analog audio outputs. In alternative embodiments, a parallel version of the data may be routed directly to the subsystem 56 (without first being stored in the buffers) to produce the current version of the most-recently selected audio stream. When the data is stored in a compressed form, the subsystem 56 must include appropriate decompression, the implementation of which is well known to persons skilled in the relevant arts. Storing the data in its compressed form advantageously reduces the system memory requirements, and also reduces processing requirements since only one stream will have to be decompressed at any given time (i.e., only the stream that is currently being reproduced will require decompression).
The rewind and fast-forward functions in this embodiment are implemented using the buffer access buttons 552 in a manner that is similar to the
When the user interface of
Because many listeners spend the vast majority of the time listening to a relatively small number of preset stations (e.g., 5-10), the fact that the above-described embodiments only buffer a limited number of preset stations should not pose a problem. In alternative embodiments, the number of buffers can be increased to suit the demands of unusual users.
The invention is not limited to the specific embodiments described above, and various alternative embodiments may be implemented without departing from the scope and spirit of the invention, as will be understood by persons skilled in the relevant arts.