1. Field of the Invention
The present invention relates generally to audio reproductions and specifically to the enhancement of the audio experience by introducing phantom bass.
2. Related Art
In many audio systems, such as in a laptop computer, the speakers are limited to frequencies above a given threshold frequency. Either the speaker cannot reproduce audio frequencies below the given threshold or is prevented from producing audio frequencies below the given threshold. Often, speakers are prevented from operating below the given threshold frequency because low frequencies can cause detrimental effects to the device. For instance, there is a suspicion in the industry that low frequencies produced by a laptops audio system can degrade the life of a hard disc.
However, because frequencies below a given threshold are suppressed, the listener may experience a lack of “bass.” Techniques known as “phantom bass” or “virtual bass” are used to reconstitute the bass lost due to the suppression of low frequencies in the audio signal.
A phantom bass module can be implemented in an audio driver to accentuate the low frequency experience of a listener. Frequencies below a given cut off frequency are suppressed either due to speaker constraints or safety constraints. For example, some speakers are only capable of generating signals above a certain frequency. Prolonged low frequency sound can do damage to speakers or other components.
The phantom bass module comprises a frequency doubler which uses a band pass filter to select low frequency components in a given audio signal to double. A doubler module doubles the frequency of the filtered input signal by apply a frequency doubling formula derived from the ⊕ operator or the {circumflex over (⊕)} operator over a predetermined window size. The resultant output from the doubler module is then band pass filtered to insure only the desirable frequency components are permitted to pass. Optionally, the magnitude of the double frequency signal can be controlled by using a gain element.
The phantom bass module can further comprise a frequency tripler which uses a band pass filter to select low frequency components in the given audio signal to triple and a band pass filter at the output of the tripling process to insure only the desirable frequency components are permitted to pass. Optionally, the magnitude of the triple frequency signal can be controlled by using another gain element. The tripling process can comprise a frequency doubling module and a multiplier module which implements formulae comprising either the ⊕ operator or the {circumflex over (⊕)} operator over a predetermined window size. The multiplier module has the effect of frequency adding, so a doubled frequency signal can be mixed with the multiplier module with an input signal to create a tripled frequency signal. A band pass filter is inserted between the doubling module and the multiplier module. The tripling process, alternatively, could comprise a frequency tripling module which implements a formula comprising two operators each operator can be selected as either the ⊕ operator or the {circumflex over (⊕)} operator over a predetermined window size. The window size for each of the two operators can be different but are often the same.
The phantom bass module can further comprise a frequency quadrupler which uses a band pass filter to select low frequency components in the given audio signal to quadruple and a band pass filter at the output of the quadrupling process to insure only the desirable frequency components are permitted to pass. Optionally, the magnitude of the quadrupling frequency signal can be controlled by using another gain element. The quadrupling process can comprise two frequency doubling module with a band pass filter in between. Alternatively, the quadrupling process can comprise a frequency doubling module followed by two multiplier modules with a band pass filter in between each. Another alternative is to use a frequency tripling module followed by a multiplier module with a band pass filter in between. Yet another alternative is to use a frequency quadrupling module which implements a formula comprising three operators each operator can be selected as either the ⊕ operator or the {circumflex over (⊕)} operator over a predetermined window size. The window size for each of the three operators can be different but are often the same.
In the case of the frequency doubler, tripler and quadrupler, considerable computational savings can be realized by downsampling the isolated input signal. Because, bass frequencies are low, less samples are needed to capture the signal information, as a result, bass frequencies can be downsampled by as much as 40. After the phantom bass processing is complete, the signals can be upsampled to they can be reintroduced into the audio stream. The result is an even greater savings in computation. Furthermore, the downsampling can be incorporated into the doubling, tripling, quadrupling and multiplier formula further simplifying the phantom bass architecture.
Other systems, methods, features, and advantages of the present disclosure will be or become apparent to one with skill in the art upon examination of the following drawings and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description, be within the scope of the present disclosure, and be protected by the accompanying claims.
Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.
A detailed description of embodiments of the present invention is presented below. While the disclosure will be described in connection with these drawings, there is no intent to limit it to the embodiment or embodiments disclosed herein. On the contrary, the intent is to cover all alternatives, modifications and equivalents included within the spirit and scope of the disclosure.
Audio driver backend 308 comprises DAC 104 and other analog processing modules 106 which can include amplifiers and output drivers. Audio input interface 302 receives a digital audio signal which can be provided by an application such as a music or video playback application or a cellular telephone receiver. Processor 304 can include a central processing unit (CPU), an auxiliary processor associated with the audio system, a semiconductor based microprocessor (in the form of a microchip), a macroprocessor, one or more application specific integrated circuits (ASICs), digital logic gates, a digital signal processor (DSP) or other hardware for executing instructions.
Memory 320 can include any one of a combination of volatile memory elements (e.g., random-access memory (RAM) such as DRAM, and SRAM) and nonvolatile memory elements (e.g., flash, read only memory (ROM), or nonvolatile RAM). Memory 320 stores one or more separate programs, each of which includes an ordered listing of executable instructions for implementing logical functions to be performed by processor 304. The executable instructions include firmware 330 which comprises instructions for phantom bass 204, high pass filter 102, and mixer 202. Firmware 330 can also comprise other digital signal processing functions (340) that may be supported by audio driver 300 such as equalization and filtering. In alternate embodiments, the logic for performing these processes can be implemented in hardware or a combination of software and hardware.
In another embodiment, hardware audio drivers are not available for modification, so the phantom bass can be implemented in software aboard a personal computer (PC) which is interfaced to a sound card.
Like in the hardware driver described above, processor 402 can include a CPU, an auxiliary processor associated with the audio system, a semiconductor based microprocessor, a macroprocessor, one or more ASICs, digital logic gates, a DSP or other hardware for executing instructions.
Input/output interfaces 404 provide any number of interfaces for the input and output of data. For example, these components may interface with a user input device (not shown), which may be a keyboard or a mouse. In other examples especially a handheld device (e.g., PDA, mobile telephone), these components may interface with function keys or buttons, a touch sensitive screen, a stylus, etc. Display 408 can comprise a computer monitor or a plasma screen for a PC or a liquid crystal display (LCD) on a hand held device, for example.
Network interface device 406 comprises various components used to transmit and/or receive data over a network environment. By way of example, these may include a device that can communicate with both inputs and outputs, for instance, a modulator/demodulator (e.g., a modem), wireless (e.g., radio frequency (RF)) transceiver, a telephonic interface, a bridge, a router, network card, etc.
Memory 420 can include any one of a combination of volatile memory elements and nonvolatile memory elements. Mass storage 430 can also include nonvolatile memory elements (e.g., flash, hard drive, tape, rewritable compact disc (CD-RW), etc.). Memory 420 comprises software which may include one or more separate programs, each of which includes an ordered listing of executable instructions for implementing logical functions. Often, the executable code can be loaded from nonvolatile memory elements including from components of memory 420 and mass storage 430. Specifically, the software can include native operating system 422, one or more native applications, emulation systems, or emulated applications for any of a variety of operating systems and/or emulated hardware platforms, emulated operating systems, etc. These may further include audio application 424 which may be either a stand-alone application or a plug-in. These may further include software audio driver 426 which is used by applications to communicate with a hardware audio driver. Audio driver 426 can further comprise signal processing software 428 which comprises phantom bass 204, high pass filter 102 and mixer 202. Signal processing software 428 can also comprise other digital signal processing module(s) 440 for function such equalization and noise reduction. Alternatively, audio application 424 comprises signal processing software 428. It should be noted, however, that the logic for performing these processes can also be implemented in hardware or a combination of software and hardware.
Mass storage 430 can be formatted into one of a number of file systems which divide the storage medium into files. These files can include audio files 432 which can hold sound samples such as songs that can be played back. The sound files can be stored in a wide variety of file formats including but not limited to RIFF, AIFF, WAV, MP3 and MP4.
One method to generate phantom bass is to double frequencies between
and f where f is the given cutoff frequency, so audio frequencies in this frequency range map to frequencies between f and 2f. This can further be enhanced by tripling frequencies between
so that audio frequencies in this range map to frequencies between f and
This process can utilize even lower frequencies by quadrupling and so forth.
One straightforward method of implementing the phantom bass method described above is to perform the frequency multiplication operations in the frequency domain.
However, the phantom base module shown in
A time domain approach can address the discontinuity and reduced delay issues. Additionally, a low complexity time domain approach can significantly reduce the overall complexity of a phantom bass system. The embodiments of the phantom bass set forth herein employ a time domain approach and use the ⊕N and {circumflex over (⊕)}N as defined in equations (1) and (2) as basic building blocks. The ⊕N and {circumflex over (⊕)}N operators are binary operators which combine two digital signals, shown as x[k] and y[k] in those equations, where N is a window size.
In equation (2), the signum function sgn(x) can be the traditional signum function as defined in equation (3). However, computational efficiency can be improved by adopting the modified signum function as defined in equations (4) or (5). In order to implement equation (3), some comparison operations are necessary. However the modified signum function can be implemented by extracting the sign bit of the variable x.
The window size N for either of these operators can be chosen on the basis of several factors. The larger the window size the finer the frequency resolution produced by equations (1) or (2). However, the larger the window size the greater the computational complexity needed to evaluate equations (1) or (2). Even though a small window size would have a frequency multiplying effect, the resultant intermodulation and harmonics in a real signal would not produce good results unless the window sizes are sufficiently large.
and f, where f is the given cutoff frequency. Optionally, gain element 606 can be used to control the amount of doubled frequency components that are added to the audio signal.
z[n]=(x⊕Nx)[n] (6)
z[n]=x{circumflex over (⊕)}
N
x)[n] (7)
Because for a given frequency in x, x⊕Nx and x{circumflex over (⊕)}Nx will generate harmonics beyond simply doubling frequency components in x, band pass filter 704 is used to attenuate these harmonics. Because equations (1) and/or (2) can be implemented in real time in the time domain and the band pass filters can be implemented with finite impulse response (FIR) filters, the phantom bass process can take place completely in the time domain and essentially in real time. Generally, x⊕Nx produces a phantom bass signal with square the power of the original signal, whereas x{circumflex over (⊕)}Nx tends to maintain substantially the same power profile of the original signal.
Alternatively, band pass filter 802 can use an alternate upper limit to give richness to the phantom bass, for example, band pass filter 802 could pass frequency components between
Optionally, gain element 806 can be used to control the amount of tripled frequency components that are added to the audio signal.
However, an alternate upper bound can be used such as 2f.
z[n]=(x⊕N(x⊕Mx))[n] (8)
z[n]=(x{circumflex over (⊕)}N(x⊕Mx))[n] (9)
z[n]=(x⊕N(x{circumflex over (⊕)}Mx))[n] (10)
z[n]=(x{circumflex over (⊕)}N(x{circumflex over (⊕)}Mx))[n] (11)
z[n]=((x⊕Nx)⊕Mx)[n] (12)
z[n]=((x{circumflex over (⊕)}Nx)⊕Mx)[n] (13)
z[n]=((x⊕Nx){circumflex over (⊕)}Mx)[n] (14)
z[n]=((x{circumflex over (⊕)}Nx){circumflex over (⊕)}Mx)[n]. (15)
y[n]=(x⊕Nx)[n] (16)
y[n]=(x{circumflex over (⊕)}Nx)[n] (17)
z[n]=(x⊕N′y′)[n] (18)
z[n]=(y′⊕N′x)[n] (19)
z[n]=(x{circumflex over (⊕)}N′y′)[n] (20)
z[n]=(y′{circumflex over (⊕)}N′x)[n] (21)
Equations (16) and (17) are examples of two frequency doubling formulae that can be used in module 702. In this example, the output of module 702 is represented by the signal y. Band pass filter 1002 isolates frequency components to be the doubled for example it can permit frequency components between
and f, which is double the frequency components permitted by band pass filter 802. Because frequency doubling formula produces unwanted harmonics, band pass filter 1002 suppresses them. Multiplier module 1004 implements a multiplier formula which combines the frequency components received by the tripler represented by signal x with the frequency components generated as a result of the frequency doubling formula after filtering represented by signal y′ which is the filtered version of y. Since the ⊕N′ and {circumflex over (⊕)}N′ operators are not commutative, equations (18) and (19) are not the same, neither are (20) and (21). It should be noted that the window size, N′, for the multiplier formula need not be the same as window size N used in the frequency doubling formula used by module 702, but can be the same. The tripler also comprises band pass filter 904 as described above.
or alternatively, permits frequency components between
Optionally, gain element 1106 can be used to control the amount of quadrupled frequency components that are added to the audio signal.
z[n]=(x⊕N((x⊕Mx)⊕Px))[n] (22)
z[n]=(x⊕N((x⊕Mx){circumflex over (⊕)}Px))[n] (23)
z[n]=(x⊕N((x{circumflex over (⊕)}Mx)⊕Px))[n] (24)
z[n]=(x⊕N((x{circumflex over (⊕)}Mx){circumflex over (⊕)}Px))[n] (25)
z[n]=(x{circumflex over (⊕)}N((x⊕Mx)⊕Px))[n] (26)
z[n]=(x{circumflex over (⊕)}N((x⊕Mx){circumflex over (⊕)}Px))[n] (27)
z[n]=(x{circumflex over (⊕)}N((x{circumflex over (⊕)}Mx)⊕Px))[n] (28)
z[n]=(x{circumflex over (⊕)}N((x{circumflex over (⊕)}Mx){circumflex over (⊕)}Px))[n] (29)
z[n]=(((x⊕Nx)⊕Mx)⊕Px)[n] (30)
z[n]=(((x⊕Nx)⊕Mx){circumflex over (⊕)}Px)[n] (31)
z[n]=(((x⊕Nx){circumflex over (⊕)}Mx)⊕Px)[n] (32)
z[n]=(((x⊕Nx){circumflex over (⊕)}Mx){circumflex over (⊕)}Px)[n] (33)
z[n]=(((x{circumflex over (⊕)}Nx)⊕Mx)⊕Px)[n] (34)
z[n]=(((x{circumflex over (⊕)}Nx)⊕Mx){circumflex over (⊕)}Px)[n] (35)
z[n]=(((x{circumflex over (⊕)}Nx){circumflex over (⊕)}Mx)⊕Px)[n] (36)
z[n]=(((x{circumflex over (⊕)}Nx){circumflex over (⊕)}Mx){circumflex over (⊕)}Px)[n] (37)
z[n]=(x⊕N(x⊕M(x⊕Px)))[n] (38)
z[n]=(x⊕N(x⊕M(x{circumflex over (⊕)}Px)))[n] (39)
z[n]=(x⊕N(x{circumflex over (⊕)}M(x⊕Px)))[n] (40)
z[n]=(x⊕N(x{circumflex over (⊕)}M(x{circumflex over (⊕)}Px)))[n] (41)
z[n]=(x{circumflex over (⊕)}N(x⊕M(x⊕Px)))[n] (42)
z[n]=(x{circumflex over (⊕)}N(x⊕M(x{circumflex over (⊕)}Px)))[n] (43)
z[n]=(x{circumflex over (⊕)}N(x{circumflex over (⊕)}M(x⊕Px)))[n](44)
z[n]=(x{circumflex over (⊕)}N(x{circumflex over (⊕)}M(x{circumflex over (⊕)}Px)))[n] (45)
z[n]=(x⊕N(x⊕M(x⊕Px)))[n] (46)
z[n]=(x⊕N(x⊕M(x{circumflex over (⊕)}Px)))[n] (47)
z[n]=(x⊕N(x{circumflex over (⊕)}M(x⊕Px)))[n] (48)
z[n]=(x⊕N(x{circumflex over (⊕)}M(x{circumflex over (⊕)}Px)))[n] (49)
z[n]=(x{circumflex over (⊕)}N(x⊕M(x⊕Px)))[n] (50)
z[n]=(x⊕N(x⊕M(x{circumflex over (⊕)}Px)))[n] (51)
z[n]=(x{circumflex over (⊕)}N(x{circumflex over (⊕)}M(x⊕Px)))[n] (52)
z(n)=(x{circumflex over (⊕)}N(x{circumflex over (⊕)}M(x{circumflex over (⊕)}Px)))[n] (53)
z[n]=((x⊕N(x⊕Mx))⊕Px)[n] (54)
z(n)=((x⊕N(x⊕Mx)){circumflex over (⊕)}Px)[n] (55)
z[n]=((x⊕N(x{circumflex over (⊕)}Mx))⊕Px)[n] (56)
z(n)=((x⊕N(x{circumflex over (⊕)}Mx)){circumflex over (⊕)}Px)[n] (57)
z[n]=((x{circumflex over (⊕)}N(x⊕Mx))⊕Px)[n] (58)
z(n)=((x{circumflex over (⊕)}N(x⊕Mx)){circumflex over (⊕)}Px)[n] (59)
z[n]=((x{circumflex over (⊕)}N(x{circumflex over (⊕)}Mx))⊕Px)[n] (60)
z(n)=((x{circumflex over (⊕)}N(x{circumflex over (⊕)}Mx)){circumflex over (⊕)}Px)[n] (61)
z[n]=((x⊕Nx)⊕M(x⊕Px))[n] (62)
z(n)=((x⊕Nx)⊕M(x{circumflex over (⊕)}Px))[n] (63)
z[n]=((x⊕Nx){circumflex over (⊕)}M(x⊕Px))[n] (64)
z(n)=((x⊕Nx){circumflex over (⊕)}M(x{circumflex over (⊕)}Px))[n] (65)
z[n]=((x{circumflex over (⊕)}Nx)⊕M(x⊕Px))[n] (66)
z(n)=((x{circumflex over (⊕)}Nx)⊕M(x{circumflex over (⊕)}Px))[n] (67)
z[n]=((x{circumflex over (⊕)}Nx){circumflex over (⊕)}M(x⊕Px))[n] (68)
z(n)=((x{circumflex over (⊕)}Nx){circumflex over (⊕)}M(x{circumflex over (⊕)}Px))[n] (69)
Because of the lack of associativity and commutativity of the ⊕ and {circumflex over (⊕)} operators, numerous unique formulae are possible, all of which produce similar results, but with different gains, and different non-linear effects. As a general description, all these formulas comprise either the ⊕N operator or the {circumflex over (⊕)}N operator, either the ⊕M operator or the {circumflex over (⊕)}M operator, and either the ⊕P operator or the {circumflex over (⊕)}P operator. Furthermore, the choice of window sizes N, M, and P need not be the same, but for convenience they often are chosen to be the same. Band pass filter 1202 isolates the desired phantom bass frequency components after quadrupling. Common examples are that band pass filter 1202 permits frequency components between f and
or frequency components between f and 2f.
y[n]=(x⊕N(x⊕Mx))[n] (70)
y[n]=(x{circumflex over (⊕)}N(x⊕Mx))[n] (71)
y[n]=(x⊕N(x{circumflex over (⊕)}Mx))[n] (72)
y[n]=(x{circumflex over (⊕)}N(x{circumflex over (⊕)}Mx))[n] (73)
y[n]=((x⊕Nx)⊕Mx)[n] (74)
y[n]=((x{circumflex over (⊕)}Nx)⊕Mx)[n] (75)
y[n]=((x⊕Nx){circumflex over (⊕)}Mx)[n] (76)
y[n]=((x{circumflex over (⊕)}Nx){circumflex over (⊕)}Mx)[n] (77)
Module 902 can implement a frequency tripling formula comprising either the ⊕N operator or the {circumflex over (⊕)}N operator and either the ⊕M operator or the {circumflex over (⊕)}M operator similar to those described above for
and f or between
Module 1304 implements a multiplier formula as described above which combines the output of module 902 represented by signal y′ and the input to the quadrupler represented here by the signal x. The window sizes N, M and N′ used in module 902 and module 1304 can be different but are often chosen to be the same. Finally, band pass filter 1204 permits frequency components desired in the final phantom bass output as previously described.
z[n]=(y′⊕My′)[n] (78)
z[n]=(y′{circumflex over (⊕)}My′)[n] (79)
In this example, the output of module 702 is represented by signal y which is then filtered by band pass filter 1402 with an output represented by signal y′. Band pass filter 1402 is used to suppress undesired harmonics resultant from module 702. Common pass bands implemented by band pass filter 1402 include
to f which are typically double the pass band frequencies of band pass filter 1102. Module 1404 applies the second frequency doubling to the output of band pass filter 1402 represented by signal y′. Once again, window sizes N and M used in module 702 and module 1404 can be different but are often chosen to be the same. Finally, the output of module 1404, represented by signal z, is filtered by band pass filter 1204.
w[n]=(x⊕N′y′)[n] (80)
w[n]=(y′⊕N′x)[n] (81)
w[n]=(x{circumflex over (⊕)}N′y′)[n] (82)
w[n]=(y′{circumflex over (⊕)}N′x)[n] (83)
z[n]=(x⊕N″w′)[n] (84)
z[n]=(w′⊕N″x)[n] (85)
z[n]=(x{circumflex over (⊕)}N″w′)[n] (86)
z[n]=(w′{circumflex over (⊕)}N″x)[n] (87)
Module 702 produces output signal y. Band pass filter 1502 removes undesired harmonics. Common pass bands implemented by band pass filter 1502 include
to f which are typically double the pass band frequencies of band pass filter 1102. Multiplier module 1504 applies a multiplier formula, such as given by equation (80)-(83) to input signal x and y′ which is the output of band pass filter 1502. Band pass filter 1506 removes undesired harmonics resultant from the output, represented by signal w, of multiplier module 1504. Common pass bands implemented by band pass filter 1506 include
to f and
which are typically triple the pass band frequencies of band pass filter 1102. Multiplier module 1508 applies a multiplier formula such as given by equations (84)-(87) to input signal x and the output of band pass filter 1506, represented by signal w′. Furthermore, the window sizes N,N′ and N″ need not be the same, but are often chosen to be the same. Band pass filter 1204 as described above suppresses undesired harmonics in output signal z, as generated by multiplier module 1508.
While usually, doubling and tripling and sometimes quadrupling are sufficient to give the desired phantom bass effect, the principles described here can be applied to quintupling and so forth. As the multiplicative factor increase, the more combinations are possible.
The time domain approach is significantly faster than an FFT approach even for comparable window sizes. This is chiefly due to the reduction of multiplication operations. However, when the bass frequencies to be doubled, tripled, etc are small, such as 200 Hz. The isolated signals are severely oversampled. For example, an audio signal may be represented by a sampling rate of 48 kHz. When considering frequency doubling, if the cutoff frequency f is 200 Hz, the frequencies even after doubling would only attain at most 400 Hz. Because only 800 samples per second are needed to represent signals of 400 Hz or less, the signal provided by band pass filter 602 in
y[n]=(x⊕N/Dx)[n] (88)
y[n]=x{circumflex over (⊕)}
N/D
x)[n] (89)
In this example, the input signal is represented by x and the output of module 1702 is represented by y.
The principle of downsampling bass in combination with frequency multiplying can be applied to all the preceding examples of phantom bass including the use of a quadrupler. In addition, the principle can be applied to higher order frequency multiplication if desired.
It should be emphasized that the above-described embodiments are merely examples of possible implementations. Many variations and modifications may be made to the above-described embodiments without departing from the principles of the present disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.