New answers tagged

2

There is a generic class of algorithms called "upmixers" that indeed de-compose a stereo signal into multiple direction and/or it's constituent directional channels. They typically work by chopping the signal into frames, evaluating correlation/phase/directional differences in multiple frequency bands, steering the origial signal on rules based on ...


3

The Explanation from @ScienceGeyser provides a good explanation to the phenomenon. There are two more things to address the question on how is this phenomenon avoided. The feedback read by the microphone is not identical to the audio sent to the speakers. There is the physical response from the speakers, the acoustic of the device and the environment, if ...


6

On each individual device, the speaker output can get subtracted from the microphone before it gets sent to other locations. This prevents others from hearing themselves through your microphone. When using two devices in within audible range of each other, the devices cannot subtract the speaker audio from the microphone audio because the information path ...


0

# in python you will need to import the modules you use # some users with matlab/octave background prefer # to use from numpy import *, making all the functions global # but with the time they learn (some not) that modules are good. # you prevent overwriting an internal function with a custom function # for instance import numpy as np; # for plotting we ...


3

I would like to add to the previous answers that the difference between a second-order highpass and a second-order lowpass filter is generally NOT an allpass filter. The resulting transfer function $$H(s)=\frac{s^2-\omega_0^2}{s^2+\frac{\omega_0}{Q}s+\omega_0^2}\tag{1}$$ has two zeros at $s_0=\pm\omega_0$ and two poles which are either real-valued (for $Q\le\...


3

Just adding to the answer. The sign for recombining L/R filter alternates, so it's '-' for second order '+' for 4th order and so forth. The algebra is isn't all that pleasant so I will only go through the 2nd order. A second order L/R lowpass is simply the cascade of two first order Butterworth lowpass. The first order butterworths are $$L = \frac{1}{1+jx}, ...


2

D'oh. This turned out to be pretty obvious, and I should have gotten it from reading more closely. I would have deleted this out of shame, but instead will share the correction in hopes it saves someone else the same headache. The controlling equations for the LR2 high and low pass transfer functions are correct, but one of the signals needs to be ...


4

In a PDM microphone, the sigma-delta convertor pushes the noise to frequency regions above the 0-20kHz spectrum. So if you'd take the FFT of the signal that comes directly from the PDM microphone, the straight zeros and ones, and only look at the bins that fall in the 0-20kHz region, you'd get the data that you need. You can see this here, where a 16kHz sine ...


1

I'm just getting into signal processing, mostly through playing with 3D spectrograms. This is a .3 second excerpt of a middle C on piano. The plane facing the screen shows amplitude and frequency (spectrogram), whereas the plane facing left shows the waveform (amplitude and time). I like this method of visualizing sound because it has the best of both worlds....


0

Having had the same problem and without success to find a tool to sync the start of video/audio recordings automatically, I decided to make syncstart (github). The basic code is this: import numpy as np from scipy import fft from scipy.io import wavfile r1,s1 = wavfile.read(in1) r2,s2 = wavfile.read(in2) assert r1==r2, "syncstart normalizes using ffmpeg&...


0

Fourier Transform (FT) contains both the amplitude information and phase information. So the FT coefficients are complex numbers. But when you plot the FT results, you and most commercial software just plot the amplitude or the squared amplitude in the graph. Actually there is no nice way to plot the complex numbers in the 2D graph. This might make you ...


0

You probably meant to reverse them: The LPF should be at 1100 Hz, and the HPF should be at 100 Hz. Then you're keeping everything between 100 Hz and 1100 Hz, and throwing away lower and higher frequencies. will eliminates the low frequency samples Also remember filters don't eliminate everything in the stopband, they drop off with frequency, so some of ...


0

Another approach is to use a lower level interface over RJ45, such as LVDS carrying multiple I2S channels sharing clock. So transmit side would be multiple ADCs clocked together putting I2S into an LVDS transmitter. Receive side has LVDS receiver, recovers the LR clock and data signals to pass to an audio processor.


0

Python has a soundfile package. There's also scipy.io.wavfile


1

In MATLAB you can create a .wav file waveFileName.wav from a waveform y with sampling frequency Fs using MATLAB's audiowrite as follows: filename = 'waveFileName.wav'; audiowrite(filename,y,Fs); You can also read and output a waveform y and its sampling frequency Fs from the .wav file waveFileName.wav using MATLAB's audioread as follows. [y,Fs] = audioread('...


3

Q1: Is this the correct way (or a valid way) to get a dB amplitude from a sample? Assuming you want to build a sound pressure level meter the answer would be a resounding "no". The correct way is to build a running energy detector with a proper time management as defined in the IEC standard IEC61672. https://webstore.iec.ch/publication/5708. This ...


1

No, you should calculate the RMS sound pressure. The definition of sound pressure level is $$ L_p = 20\lg\frac{p}{p_{ref}} $$ where $p$ is the root mean square sound pressure and $p_{ref}$ is the reference sound pressure. For monochromatic sound wave, $p_{rms}= \frac{\sqrt{2}}{2}p_{max}$. As for dBA, you don't have to go spectral, just use an A-weighting ...


Top 50 recent answers are included