9

Time invariance plays a huge role in nature. Most systems (including your ear/brain) don't have an absolute time reference but treat all points in time equally. That results in a preference for the description of these systems with essentially time invariant basis functions, which is what (complex) sinusoids are. For linear time invariant systems, the ...


8

The NCO is a cyclical counter that can go on indefinitely but is otherwise similar to what you suggest in that you are increment n to set the output rate. It basically is a look up table of all the values in one complete cycle, and "wraps" on an overflow so that it will output continuous cycles with no discontinuity. I think the NCO is ideal for what you ...


8

Complex exponentials (with decaying sinusoids being the real part) are the solutions to certain types of low-order linear differential equations. Modeling simple natural phenomena with these low-order linear differential equations turns out to be surprisingly useful. "Why did the real world turn out this way?" might be a good question for philosophers. ...


8

What you have is a very good and efficient oscillator. The potential numerical drift problem can actually be solved. Your state variable v has two parts, one is eseentially the real part and the other the imaginary part. Let's call then r and i. We know that r^2+i^2 = 1. Over time this may drift up and down, however that can easily be corrected by ...


7

It looks like you are mixing up two techniques: MinBLEP and band-limited wavetables. Band-limited wavetables Let's assume you have a 256 sample long array with a waveform of interest - for example a naive sawtooth, with the first sample in your array at -1 and the last sample at 1. To replay this data at a variable pitch, two techniques are possible: ...


5

First, combine your two variable set of first order differential equations into a single variable second order one. $$ \frac{d^2y}{dt^2} = c \frac{dx}{dt} = acy + bc $$ $$ \frac{d^2y}{dt^2} - acy = bc $$ Solve: $$ y(t) = C_1 e^{\sqrt{ac} \cdot t} + C_2 e^{-\sqrt{ac} \cdot t} - \frac{b}{a} $$ $$ x(t) = \int{ ( ay(t) + b ) dt } $$ $$ x(t) = C_1 \frac{a}{...


5

this paper was done long before i had MATLAB. the drawings are poor, but the math (at least in this revision, which is what you should use) is spot on. send me an email address (to my audioimagination.com, not the wavemechanics.com on the paper) and i will send you a very short C file that shows how to generate and crossfade the wavetables in the synthesis ...


4

If you are simply interested in plotting the data then any data reduction technique would do,even if it appears to be crude. Effectively, the plotting function itself will not plot all the data, because the space assigned to the plot has a finite number of $N_x \times N_y$ pixels assigned to it. For example, if your plotting area was $1024 \times 768$, then ...


3

I think the word/phrase you are looking for is "discontinuity" / "discontinuity in the source signal". Although a jump is always a discontinuity, a discontinuity is not always a jump. When it isn't a jump, it is known as a pluggable discontinuity, i.e. you can define a value to plug a hole. The sinc function at zero is an example of this. So to be more ...


3

It is the time of maximum constructive interference of the derivatives of the harmonics. That's a physics term, but widely known.


3

Please note that you cannot implement a band-limited oscillator with a pure (stateless) function like: Sample s = saw(x); The reason is that the function must be aware of the rate at which x change to generate a signal with the correct bandwidth For example, let us assume your sample rate is 48kHz. If you call your function in this order: saw(0.00000000);...


2

If your oscillator is steadily accumulating DC over time, adding a DC blocker at the output may not be an elegant solution since your oscillator will keep getting more and more DC. For floating point this may or may not be a huge problem (I wouldn't do it), but for fixed point you will eventually start clipping or wrapping. If the oscillator has a ...


2

i'll try to simplify what you have here. so, being an oscillator, there is no input, only output. but you can think of it as a filter (with zero states) with an impulse as input. but that impulse essentially sets the states of your filter and the rest of the input is zero. the feedback equation (from your diagram, setting $b_0$, $b_1$, and $b_2$ to $0$) ...


2

A first thing: I think there is a $\pi$ missing in your conversion between frequencies and angular frequency. Your impulse response shows a period of about 90, while your period should be about 29 samples - there's clearly something wrong here. What you are seeing on your target hardware is due to the difference in precision between matlab's implicit use of ...


2

You have designed a bandpass filter, i.e. it does not allow any frequency far way from the resonance to pass. As far as I understand, you want a filter, that does not change the signal in the stopband, but has a resonance at some frequency. So, you actually want a parallel connection of your bandpass filter and an allpass filter. In Z-Domain, let the ...


2

Your clicks are coming from two sources. The wavetable and the hardware. If you are looking to create a simple little instrument that produces tones by playing back a wavetable, then there is no way to fix the size of the "playback window" to reproduce tones without clicks. The frequencies that compose the chromatic scale follow a geometric progression ...


2

The kinematic filter (which is mathematically a polynomial Kalman filter) has the ability to track any signal as long as the sampling rate is high enough, because when it's so, the complex motion of the target becomes linearized and fits into the quadratic kinematic model being employed by the Kalman filter dynamic model but the disadvantage is the ...


2

Refer to think link, and use the truncated phase word directly (no look-up-table needed): Numerically Controlled Oscillator (NCO) for phasor implementation?


2

From the Oscilloscope, I want to check 1PPS and 10MHz from the Rubidium frequency standard, How to do that? Not at all. From your oscilloscope's product page: Accuracy: 200 ppm That's relatively bad, even for cheap measurement equipment. From the rubidium oscillator's datasheet: Accuracy at shipping: $\pm 5 \cdot 10^{-11}$ which is $$ \frac{2\...


2

An empirical approach: I'm adding a new answer as it is completely different in nature. It seems you have a system you are studying where you can vary one parameter (or more?) to control the dampening rate, and you are looking for the best setting, i.e. finding the critical dampening. This is where the roots of the second order differential are the same, ...


2

Phasor Alignment : The individual frequency component phasors of the square wave are aligning, but I don't think this is a well-defined (or previously-defined) term.


2

If you are absolutely sure that you have a signal that is the superposition of damped oscillators then you can simply track their evolution in time. Fs = 2000; % Sampling frequency (Hz) T = 4; % Time duration (seconds) t = 0:(1./Fs):(T-(1./Fs)); % Time vector (in seconds) p = 2.0.*pi.*t; % Phase vector S = 1.0*sin(440.*p).*exp(-t) + 0.25 .* sin(800.*p)....


2

First of all, if your phasor oscillator has a step discontinuity (as opposed to a ramp one) at $\phi\bmod 1 = 0$, then you should use the four-point, fourth order polyBLEP residual, not the fifth-order polyBLAMP one. Second, the easiest way to simplify the piecewise polynomials is to see that the residuals are the successive integrals of the piecewise ...


2

I will assume that your PLL is purely digital. Is that correct? I assume your PLL consists of 3 blocks The first block calculates the phase of your incoming signal (the signal you wanna lock to). The second one will compare the phase of the signal to the phase of your "internal oscillator" yielding the error e[n] The third one is your "controller" which ...


1

Google kumaresan-tufts method. which is based on Prony’s method. Matlab also has prony Some people also say Tufts-Kumaresan. This is a direct solution while the STFT suggestion is probably better is the noise is very colored


1

sine waves all have zero crossings at the same phase of $0$ or $\pi$ and have a peak (or valley) with a phase of $\pm\tfrac{\pi}{2}$. cosine waves all have zero crossings at the same phase of $\pm\tfrac{\pi}{2}$ and have a peak (or valley) with a phase of $0$ or $\pi$. so if it's a $\sin(\cdot)$ series (with no cosine terms), expect a big zero-crossing ...


1

Converting the model to a state space model $$ \begin{pmatrix}\dot x\\\dot y\end{pmatrix} = \begin{pmatrix}d &a\\ c &0\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix} + \begin{pmatrix}1\\ 0\end{pmatrix}b = A\hat x + Bb $$ Hence you would like to have the eigenvalues of the $A$ matrix to be on the open left half plane which is given already $$ \...


1

A DC bias is just the non-zero mean of a signal. So, calculate the mean, and then subtract that. Now, calculating a mean is done by summing things up (discrete thinking) / integrating (continuous thinking) and dividing by the length – it's possible that you mean that with "area", but I'm not quite sure.


1

After brainstorming/researching for a little longer, I've realized that there are things called Bandlimited Waveforms; these waveforms basically get rid of the aliasing issues that exist within waveforms with harmonics (triangle, square, sawtooth for example). The cause of my issue was that even though I had the right sampling rate for my base tones, they ...


1

My guess is there's a problem with your wrapPhase function. If I use the R implementation of it below (C8 shown), then I get all sorts of funny results. That's the second image. Removing it from the iteration (but including it in the calculation), makes for much cleaner signals (the first image). R Code Below #30582 wrapPhase <- function(phi) { ...


Only top voted, non community-wiki answers of a minimum length are eligible