SYSTEM, METHOD, APPARATUS, AND COMPUTER PROGRAM PRODUCT FOR CALCULATING A SAMPLED SIGNAL

20180121387 ยท 2018-05-03

    Inventors

    Cpc classification

    International classification

    Abstract

    A method, apparatus, and computer program product for calculating a sampled signal are disclosed. A method in accordance with the disclosure may include determining discrete samples of a continuous signal having a finite spectrum and using a function series expansion to calculate at least a portion of the continuous signal over the discrete samples. In accordance with some embodiments, an original signal may be calculated over discrete samples with arbitrary accuracy. Polyphase filtering is not used in some embodiments. Some embodiments can be used for arbitrary, including irrational, variation of the sampling rate of the signal with a bounded spectrum. Some embodiments provide for much faster calculation than direct application of the Kotelnikov (Nyquist-Shannon) theorem. In some embodiments, the calculation may be performed according to the disclosed theorem but, instead of discrete signal convolutions with kernels having different phases, a function series expansion may be used.

    Claims

    1. A method for calculating a sampled signal, the method comprising: determining a plurality of discrete samples of a continuous signal having a finite spectrum; and using a function series expansion to calculate at least a portion of the continuous signal over the plurality of discrete samples.

    2. The method of claim 1, wherein using the function series expansion to calculate the continuous signal comprises using a Taylor series expansion to calculate the continuous signal.

    3. An apparatus comprising processing circuitry configured to control the apparatus to at least: determine a plurality of discrete samples of a continuous signal having a finite spectrum; and use a function series expansion to calculate at least a portion of the continuous signal over the plurality of discrete samples.

    4. The apparatus of claim 3, wherein the processing circuitry is further configured to control the apparatus to use the function series expansion to calculate the continuous signal at least in part by using a Taylor series expansion to calculate the continuous signal.

    5. A computer program product comprising at least one non-transitory computer readable storage medium having computer program code stored thereon, the computer program code comprising: program code for determining a plurality of discrete samples of a continuous signal having a finite spectrum; and program code for using a function series expansion to calculate at least a portion of the continuous signal over the plurality of discrete samples.

    6. The computer program product of claim 5, wherein the program code for using the function series expansion to calculate the continuous signal comprises program code for using a Taylor series expansion to calculate the continuous signal.

    7. An apparatus comprising: means for determining a plurality of discrete samples of a continuous signal having a finite spectrum; and means for using a function series expansion to calculate at least a portion of the continuous signal over the plurality of discrete samples.

    8. The apparatus of claim 7, wherein the means for using the function series expansion to calculate the continuous signal comprises means for using a Taylor series expansion to calculate the continuous signal.

    Description

    BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

    [0022] Having thus described the disclosure in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:

    [0023] FIG. 1 schematically illustrates sampling periods, according to one aspect of the disclosure;

    [0024] FIG. 2 schematically illustrates convolution kernels used to calculate derivatives, according to one aspect of the disclosure;

    [0025] FIG. 3 schematically illustrates a calculation of derivatives of the signal, according to one aspect of the disclosure;

    [0026] FIG. 4 illustrates a flowchart according to an example method for calculating a sampled signal according to some example embodiments;

    [0027] FIG. 5 illustrates a flowchart according to an example method for using a function series expansion to calculate a sampled signal according to some example embodiments;

    [0028] FIG. 6 illustrates a block diagram of an apparatus for calculating a sampled signal according to some example embodiments; and

    [0029] FIG. 7 illustrates an example system according to some example embodiments.

    DETAILED DESCRIPTION OF THE DISCLOSURE

    [0030] The present disclosure now will be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all aspects of the disclosure are shown. Indeed, the disclosure may be embodied in many different forms and should not be construed as limited to the aspects set forth herein; rather, these aspects are provided so that this disclosure will satisfy applicable legal requirements. Like numbers refer to like elements throughout.

    [0031] Aspects of the present disclosure are generally directed to apparatuses and methods for calculating signal values at instants of time T.sub.d.Math.n given the values T.sub.s.Math.k (with possible filtering, at lowering the frequencies). Without loss of generality, the initial period may be assumed as T.sub.s=1. Hereinafter, the time may be measured in the initial sampling periods T.sub.s (see, e.g., FIG. 1).

    [0032] In FIG. 1, the time of initial samples, with a period T.sub.s 102 (T.sub.s=1), is marked with large circles 104 and the time of samples whose values are to be calculated, with a period T.sub.d 106, is marked with small circles 108. As mentioned above, the initial period is considered a unit, so each sample can be associated with a neighborhood of range . For instance, point t is associated with the neighborhood [t, t+). In this regard, the point t can be considered as a center point of a neighborhood having an interval length corresponding to the initial period. Let point t be the origin of coordinates, then t has the coordinate Dt. Any calculated point T.sub.d.Math.n lies in the neighborhood of range of some known point T.sub.s.Math.k.

    [0033] Since we assume that the original signal x(t) (as well as filtered {circumflex over (x)}(t)) satisfies the Kotelnikov theorem and has a finite spectrum, it is an infinitely differentiable function. Therefore, the original signal can be expanded using a function series expansion. For example, we can expand the Taylor series of the original signal in the neighborhood of any point with the known derivatives:

    [00007] x ( t ) = .Math. m = 0 .Math. x ( m ) ( k .Math. T s ) .Math. t m m ! = .Math. m = 0 .Math. x ( m ) ( k ) .Math. t m m ! , k Z ( 5 )

    [0034] If we take the nearest known point, in whose neighborhood lies the calculated point, as the origin of coordinates, then the expansion will be in the neighborhood of zero.

    [0035] To perform the expansion, the derivatives of the calculated signal should be computable. To calculate the signal itself (perhaps, with filtering), using equation (3), it is necessary to perform convolution of the sampled version with sinc-function. Let * denote convolution, Ddifferentiation. According to the properties of the convolution, the following equation is true:


    D(f*g)=D(f)*g=f*D(g)(6)

    [0036] Note that sinc-function is an infinitely differentiable function. Consider some of its derivatives:

    [00008] sin .Math. .Math. c ( 0 ) ( x ) = sin .Math. .Math. ( x ) x sin .Math. .Math. c ( 1 ) ( x ) = x .Math. cos ( x ) - sin .Math. .Math. ( x ) x 2 sin .Math. .Math. c ( 2 ) ( x ) = 2 .Math. x .Math. cos ( x ) + ( x 2 - 2 ) .Math. sin ( x ) x 3

    etc. In order not to complicate the equation, the value is not explicitly defined at 0, though it may be assumed that the function may be continued by continuity at 0.

    [0037] From equations (3) and (6), the calculation of the derivatives follows. Convolving a sampled signal with the derivatives of sinc-function, the derivatives of the original continuous signal x(t) (or, more exactly, {circumflex over (x)}(t) since a finite sum is present and filtering might have been performed) may be obtained.

    Fast Calculation

    [0038] In calculation, the values of the function and its derivatives taken only at the integer points are required, so equation (3) can be rewritten as follows:


    {circumflex over (x)}.sup.(m)(n)=.sub.k=N/2.sup.N/2x(k).Math.sinc.sup.(m)(K.Math.(nk))(7)

    [0039] As in choosing the window size in equations (3) or (7), the infinite series may be bound by a partial sum. Then, equation (5) can be written as follows:

    [00009] x ^ ( t ) = .Math. m = 0 M .Math. x ^ ( m ) ( k ) .Math. t m m ! ( 8 )

    [0040] In practice, when choosing M, account can be taken of the accuracy of the implemented calculations as well as the efficiency/quality ratio (which is often subjective). In this regard, in some example embodiments, M may be selected based at least in part on one or more of a desired threshold accuracy level or a harmonic complexity of the signal.

    [0041] Since the derivative values are required only at integer points, and the phases of convolution kernels do not depend on the initial and final sampling rates, it may be unnecessary to calculate a large number of nearly identical kernels, differing only in phase. In accordance with some example embodiments, the convolution kernels may be the same at any increase in the frequency, and with lowering the frequency the convolution kernels may differ only due to the need of filtering. Such example embodiments can provide several benefits, including that the convolution kernels are few in number, do not change during resampling of the entire signal, and no subsequent decimation of the results of convolution optimized with FFT is required. In some instances, the M convolution kernels may be pre-calculated (according to the number of used coefficients of the series). In the course of operation, the convolutions may be computed using FFT, thus giving the derivatives directly in N integer points (e.g., the size of the FFT window), and then the values of samples may be calculated by series summation. Each individual sample requires only M multiplications and additions (hereinafter, operations).

    [0042] In some aspects, a more accurate formula describing the total computational costs per sample obtained may be derived. The initial and final frequencies may be denoted as Fs and Fd, respectively. If the signal is processed as pieces, N samples each, then each such piece will result in N*Fd/Fs resampled samples. Calculation of one derivative for N initial samples may cost approximately N+N*log.sub.2(N) operations (point-wise multiplication, inverse FFT). Since M derivatives may be used, as well as calculation of the direct FFT from the source signal, computation of the same for N points may cost N*log.sub.2(N)+(N+N*log.sub.2(N))*M operations. Altogether, for only one point the following operations may be consumed:

    [00010] N * log .Math. .Math. 2 .Math. ( N ) + ( N + N * log .Math. .Math. 2 .Math. ( N ) ) * M + N * Fd Fs * M N = log .Math. .Math. 2 .Math. ( N ) + ( 1 + log .Math. .Math. 2 .Math. ( N ) ) * M + Fd Fs * M ( 9 )

    [0043] In experiments with some example embodiment, M=9 appeared enough for the result to be better than that of the known sound editors (pure, in terms of spectrum reflection). In these experiments, the convolution window was taken as 8192. It will be appreciated, however, that other values of M and/or other convolution windows may be used in various example embodiments. For example, M may be selected in various implementations based at least in part on a desired threshold accuracy level, a harmonic complexity of the signal, and/or other factors. In using equation (3) directly, N operations per each sample will be required for the convolution only, in addition to the need to calculate sinc-functions. Optimization of the convolution due to the properties of FFT may not work in the general case, as the kernels may be unique for each sample.

    [0044] Note that aspects of the method of some example embodiments allow both decreasing and increasing the sampling frequency. For such variation of the sampling frequency, consideration may be taken to account for correct assignment of the coefficient K that is responsible for low-pass filtering. Note that aspects of the method of some example embodiments allow both decreasing and increasing the sampling frequency. For such variation of the sampling frequency, consideration may be taken to account for correct assignment of the coefficient K that is responsible for low-pass filtering. K can, for example, be defined in accordance with equation (4). As can be seen from equation (4), K can differ when decreasing and increasing the sampling rate. If the sampling rate is increased, then there may not be any risk of aliasing, and the current frequency can be taken for the Nyquist frequency. If, however, the sampling rate is reduced, it may be necessary to remove the high frequencies that cannot be transferred at the new (lower) sampling rate. The ratio of Ts/Td describes how many times the Nyquist frequency will change. When reducing the sampling rate, filtering may be needed. Therefore, the sinc-function may be stretched over time by a factor of Ts/Td. Thus, the coefficient K may be used to regulate the frequency range to be resampled, adjusting the frequency range to the new Nyquist frequency.

    [0045] When calculating K according to equation (4), the result may be the Kotelnikov (Nyquist) theorem, per se, with increasing sampling rate, whereas decreasing the sampling rate may cause low-pass filtering down to the new Nyquist frequency. If the lower value of K is selected, then the high frequencies that are possible to transfer with the new sampling rate may be removed from signal. In this regard, data loss may occur. If the higher value of K is selected, then spectrum reflection may occur. As an example, consider a signal with a sampling rate of 22,050 Hz. If the sampling rate is lowered to 12,000 Hz, elimination of frequencies above 6,000 Hz may be desired. If the coefficient K is assigned incorrectly and remains equal to , spectrum reflection may occur.

    [0046] If N=8192 and M=9 are substituted in equation (9) and Fd/Fs assumed to be close to unity, then 148 operations per sample are obtained. In some aspects, practical applications may allow less accuracy, and may be considered the least optimal option. In some cases it may be possible to reduce computations without calculating obvious null terms of series.

    [0047] With decreasing the frequency by a multiple number of times

    [00011] ( T d T s = F s F d N ) ,

    only the 0.sup.th term of the series will be nonzero, so in this case the operation can be quickened without calculating higher derivatives. Also, with greater decrease in the frequency (more than twofold), in terms of efficiency it appears reasonable to perform two-pass resampling. On the first pass, the frequency decreases by a maximum integer number of times until the frequency higher than the final frequency is achieved. In doing so, the calculation of derivatives is not required, and the whole operation runs almost M times faster than during complete decomposition. The second pass may be used to perform resampling with all its derivatives, but in that case, the initial data is already substantially reduced. For instance, in order to convert the frequency of 44100 to 8000, the amount of data should first be reduced five-fold by lowering the frequency from 44100 to 8820.

    [0048] FIG. 2 shows example convolution kernels that may be used to calculate the derivatives, representing the derivatives of sinc-function, in accordance with some example embodiments. Given the window size N, in order to speed up computation using the fast Fourier transform, zeroes may be added to the kernel from one end and the fast Fourier transform performed with a double window. In FIG. 2, the sinc-function derivatives themselves are presented non-scaled for more clarity. Before starting, the Fourier transform of the derivatives of sinc-functions may be calculated with added zeroes. Also, to ensure accuracy, it may be reasonable that a smoothing window be applied, e.g.

    [00012] 1 2 + 1 2 .Math. cos ( 2 .Math. .Math. t N ) .

    [0049] Once the Fourier transforms for the convolution kernels have been calculated, the derivatives of the signal itself can be computed, as shown in FIG. 3. In the illustrated example, a very small window N=4 is used. The derivatives for N*2 points are calculated in one step. For the imaginary part to be involved, it is filled with the data with displacement N relative to the real part. After resorting, the direct Fourier transform may be performed. The point-wise multiplication may then be run for each derivative, using Discrete Fourier Transform (DFT) of the corresponding sinc-function derivative, followed by the inverse Fourier transform. After that, the real and imaginary parts may be separated, resulting in 2*N values for each derivative.

    [0050] To calculate each new sample, its time relative to the beginning of the block may be determined with the calculated derivatives in the initial periods. If the time is greater than the calculated block, the next 2*N derivatives may then be computed. If the current sample falls within the calculated block, the point in whose neighborhood lies the present sample may be found and calculated according to equation (8).

    [0051] FIG. 4 illustrates a flowchart according to an example method for calculating a sampled signal according to some example embodiments. Operation 400 may include determining a plurality of discrete samples of a continuous signal having a finite spectrum. The discrete samples may, for example, be representative of the continuous signal at a first sampling rate at which the signal may be received or otherwise accessed. The continuous signal may, for example, be received over a channel. For example, the continuous signal may be received by a computing device over a wireless network. The continuous signal may, for example, carry digital audio data. For example, the continuous signal may be representative of audio data for a digital audio file that may be streamed over a network. It will be appreciated, however, that the continuous signal may carry other data types in addition to or in lieu of audio data in accordance with various embodiments. Operation 410 may include using a function series expansion to calculate at least a portion of the continuous signal over the plurality of discrete samples. In some example embodiments, the function series expansion used in operation 410 may be a Taylor series expansion. However, it will be appreciated that other types of function series expansions may be used in accordance with various example embodiments. In some example embodiments, the coefficients of the function series expansion may be determined by applying a FFT to perform convolutions with a plurality of sinc-function derivatives. One or more of processing circuitry 610, processor 612, memory 614, or signal processing module 618, which are illustrated in and described below with respect to FIG. 6, may, for example, provide means for performing operations 400 and 410.

    [0052] FIG. 5 illustrates a flowchart according to an example method for using a function series expansion to calculate a sampled signal according to some example embodiments. In this regard, FIG. 5 illustrates operations that may be performed attendant to performance of operation 410 in accordance with some example embodiments. In the method of FIG. 5, time may be measured during periods of sampling the original continuous signal. The window size N, such as may be used in equation (7) may be determined. The signal may have a length of N*K samples. In an instance in which the signal length is not a multiple of the window length N, the signal may be padded, such as with zeros.

    [0053] With reference to FIG. 5, operation 500 may include initializing M convolution kernels. M may, for example, be selected based at least in part on one or more of a desired threshold accuracy level for computation of the original continuous signal or a harmonic complexity of the signal. For example, M may be selected so that the accuracy of the function series expansion (e.g., in accordance with equation (8)) within a neighborhood defined by a predefined interval length having an integral point as a center point (e.g., within a range of of the integral point) may satisfy the desired threshold accuracy level. Operation 510 may include calculating M derivatives for the n.sup.th block of N discrete samples. Operation 520 may include calculating at least one value of the continuous signal in at least one location within a neighborhood defined by a predefined interval length and having an integral point in the n.sup.th block of N discrete samples as a center point. Operation 530 may include determining if the at least a portion of the continuous signal to be calculated has been processed entirely. If it is determined at operation 530 that the at least a portion of the continuous signal to be calculated has been processed entirely, the method may terminate. If, however, it is determined at operation 530 that the at least a portion of the continuous signal to be calculated has not been processed entirely, the method may proceed to operation 540, in which n may be incremented, and the method may then return to operation 510. Accordingly, operations 510 and 520 may be repeated for each n.sup.th block of N discrete samples until the at least a portion of the continuous signal to be calculated has been processed entirely. The blocks of discrete samples may be non-intersecting. One or more of processing circuitry 610, processor 612, memory 614, or signal processing module 618, which are illustrated in and described below with respect to FIG. 6, may, for example, provide means for performing operations 500 and 540.

    [0054] In some example embodiments, the sampling frequency of a primary grid of the discrete samples may be varied, such as with an arbitrary, including irrational, ratio of frequencies. However, the same set of M convolution kernels initialized in operation 500 may be used for resampling of the entirety of the at least a portion of the continuous signal regardless of the variation of sampling frequency.

    [0055] It will be understood that each block of the flowcharts in FIGS. 4 and 5, and combinations of blocks in the flowcharts, may be implemented by various means, such as hardware and/or a computer program product comprising one or more computer-readable mediums having computer readable program instructions stored thereon. For example, one or more of the procedures described herein may be embodied by computer program instructions of a computer program product. In this regard, the computer program product(s) which may embody the procedures described herein may be stored by one or more memory devices of a mobile terminal, server, or other computing device and executed by a processor in the computing device. In some embodiments, the computer program instructions comprising the computer program product(s) which embody the procedures described above may be stored by memory devices of a plurality of computing devices. As will be appreciated, any such computer program product may be loaded onto a computer or other programmable apparatus to produce a machine, such that the computer program product including the instructions which execute on the computer or other programmable apparatus creates means for implementing the functions specified in the flowchart block(s). Further, the computer program product may comprise one or more computer-readable memories on which the computer program instructions may be stored such that the one or more computer-readable memories can direct a computer or other programmable apparatus to function in a particular manner, such that the computer program product comprises an article of manufacture which implements the function specified in the flowchart block(s). The computer program instructions of one or more computer program products may also be loaded onto a computer or other programmable apparatus to cause a series of operations to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions which execute on the computer or other programmable apparatus implement the functions specified in the flowchart block(s). Accordingly, blocks of the flowcharts support combinations of means for performing the specified functions. It will also be understood that one or more blocks of the flowcharts, and combinations of blocks in the flowcharts, may be implemented by special purpose hardware-based computer systems which perform the specified functions, or combinations of special purpose hardware and computer program product(s).

    [0056] FIG. 6 illustrates a block diagram of an apparatus 600 that may be configured to calculate a sampled signal in accordance with some example embodiments. It will be appreciated that the components, devices or elements illustrated in and described with respect to FIG. 6 below may not be mandatory and thus some may be omitted in certain embodiments. Additionally, some embodiments may include further or different components, devices or elements beyond those illustrated in and described with respect to FIG. 6.

    [0057] In some example embodiments, the apparatus 600 may include processing circuitry 610 that is configurable to perform actions in accordance with one or more example embodiments disclosed herein. In this regard, the processing circuitry 610 may be configured to perform and/or control performance of one or more functionalities of apparatus 600 in accordance with various example embodiments. Thus, the processing circuitry 610 may be configured to perform data processing, application execution and/or other processing and management services according to one or more example embodiments. As such, the processing circuitry 610 may provide means for performing resampling and signal calculation methods in accordance with various example embodiments. For example, the processing circuitry 610 and/or one or more other components of the apparatus 600 may provide means for performing one or more of the operations illustrated in and described with respect to FIGS. 4 and 5.

    [0058] In some embodiments, the apparatus 600 or a portion(s) or component(s) thereof, such as the processing circuitry 610, may include one or more chipsets, which may each include one or more chips. The processing circuitry 610 and/or one or more further components of the apparatus 600 may therefore, in some instances, be configured to implement an embodiment on a chipset. For example, the apparatus 600, or portion thereof, may be implemented on a sound card, analog-to-digital audio converter, audio processor, or the like.

    [0059] In some example embodiments, the processing circuitry 610 may include a processor 612 and, in some embodiments, such as that illustrated in FIG. 6, may further include memory 614. The processing circuitry 610 may be in communication with or otherwise control a communication interface 616 and/or signal processing module 618.

    [0060] The processor 612 may be embodied in a variety of forms. For example, the processor 612 may be embodied as various processing means such as a microprocessor, a coprocessor, a controller or various other computing or processing devices including integrated circuits such as, for example, an ASIC (application specific integrated circuit), an FPGA (field programmable gate array), some combination thereof, or the like. Although illustrated as a single processor, it will be appreciated that the processor 612 may comprise a plurality of processors. The plurality of processors may be in operative communication with each other and may be collectively configured to perform one or more functionalities of the apparatus 600. In embodiments including a plurality of processors, the processors may be implemented on a single computing device, or may be distributed across a plurality of computing devices that may be collectively configured to provide functionality of the apparatus 600 in accordance with some example embodiments. In some example embodiments, the processor 612 may be configured to execute instructions that may be stored in the memory 614 or that may be otherwise accessible to the processor 612. As such, whether configured by hardware or by a combination of hardware and software, the processor 612 capable of performing operations according to various embodiments while configured accordingly.

    [0061] In some example embodiments, the memory 614 may include one or more memory devices. In embodiments including multiple memory devices, the memory devices may be implemented on a single computing device, or may be distributed across a plurality of computing devices that may be collectively configured to provide functionality of the apparatus 600 in accordance with some example embodiments. Memory 614 may include fixed and/or removable memory devices. In some embodiments, the memory 614 may provide a non-transitory computer-readable storage medium that may store computer program instructions that may be executed by the processor 612. In this regard, the memory 614 may be configured to store information, data, applications, instructions and/or the like for enabling the apparatus 600 to carry out various functions in accordance with one or more example embodiments. In some embodiments, the memory 614 may be in communication with one or more of the processor 612, communication interface 616, or signal processing module 618 via a bus(es) for passing information among components of the apparatus 600.

    [0062] The apparatus 600 may further include a communication interface 616. The communication interface 616 may enable the apparatus 600 to receive a signal that may be sent by another computing device, such as over a network. In this regard, the communication interface 616 may include one or more interface mechanisms for enabling communication with other devices and/or networks. As such, the communication interface 616 may include, for example, an antenna (or multiple antennas) and supporting hardware and/or software for enabling communications with a wireless communication network (e.g., a cellular network, WLAN, and/or the like) and/or a communication modem or other hardware/software for supporting communication via cable, digital subscriber line (DSL), USB, FireWire, Ethernet or other wireline networking methods.

    [0063] The apparatus 600 may further include signal processing module 618. The signal processing module 618 may be embodied as various means, such as circuitry, hardware, a computer program product comprising computer readable program instructions stored on a computer readable medium (for example, the memory 614) and executed by a processing device (for example, the processor 612), or some combination thereof. In some embodiments, the processor 612 (or the processing circuitry 610) may include, or otherwise control the signal processing module 618. The signal processing module 618 may be configured to use a function series expansion to calculate at least a portion of a continuous signal in accordance with various embodiments. Thus, for example, the signal processing module 618 may be configured to perform one or more operations illustrated in and described with respect to FIGS. 4 and 5.

    [0064] FIG. 7 illustrates an example system 700 according to some example embodiments. The system 700 can include a receiving apparatus 702 and signal source apparatus 704. The receiving apparatus 702 and signal source apparatus 704 may be configured to communicate with each other over a network 706. The network 706 may, for example, comprise a wireline network, wireless network (e.g., a cellular network, wireless local area network, wireless wide area network, some combination thereof, or the like), or a combination thereof, and in some example embodiments may comprise the Internet.

    [0065] The signal source apparatus 704 may comprise a server or other computing device that may be configured to send a signal to the receiving apparatus 702 over the network 706. For example, the signal source apparatus 704 may stream digital audio to the receiving apparatus 702. The receiving apparatus 702 may comprise any computing device configured to receive a signal sent by the signal source apparatus 704. By way of non-limiting example, the receiving apparatus 702 may be embodied as a desktop computer, laptop computer, or a mobile computing device, such as a smart phone, tablet computing device, or other wireless mobile computing device.

    [0066] In some example embodiments, the apparatus 600 may be implemented on the receiving apparatus 702. As such, the receiving apparatus 702 may be configured to perform resampling and signal determination operations for a signal received from the signal source apparatus 704 in accordance with various example embodiments. In embodiments in which the receiving apparatus 702 is implemented as a mobile computing device or other computing device that may be power constrained and/or processing power constrained, such as due to size limitations, a finite battery life, and/or other factors, the receiving apparatus 702 may benefit from the technical effect of the computational efficiency provided by various example embodiments. In this regard, the reduced computational complexity provided by some example embodiments may reduce power consumption by such a device. Further, the reduced computational complexity provided by some example embodiments may enable faster, more accurate signal resampling to be performed on mobile devices having relatively limited processing power.

    [0067] Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the embodiments of the invention are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the invention. Moreover, although the foregoing descriptions and the associated drawings describe example embodiments in the context of certain example combinations of elements and/or functions, it should be appreciated that different combinations of elements and/or functions may be provided by alternative embodiments without departing from the scope of the invention. In this regard, for example, different combinations of elements and/or functions than those explicitly described above are also contemplated within the scope of the invention. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.