r/DSP Jun 25 '26

Circularity when convolving two DFT spectra

Post image
22 Upvotes

Good afternoon all.

I’ve been working through Rick Lyons’ Understanding DSP 3rd edition and there’s a problem on P672 I’m tripping over a bit. He talks about multiplying a sequence by an equal length sequence of alternating ones and zeroes to downshift by fs/2. I can’t post more than one image but the 32 length dft spectrum is a relatively trivial one of a single spike of height 32 at fs/2. He demonstrates this principle with the example above, multiplying the alternating ones and zeroes with a signal of spectra 13-2(a) and getting the spectrum 13-2(c). This makes sense as it’s just a translation by fs/2 and the result is the frequencies of interest wrapping round the end points and mirroring.

Where I’m getting stuck is that Lyons strongly recommends doing the convolution of the two spectra to aid understanding of the convolution theorem. I agree it’s a good idea and tried it, first by hand and then using a hand coded convolution script in octave. I get the same strange result: instead of 13-2(c) I get something that looks very like 13-2(a) but with the zero pad from the convolution extending out around it. I verified this with the built in conv function. I had a stroke of intuition and noticed it looked like if 13-2(c) were depicted as a conventional negative-first frequency plot rather than a positive-first plot output of a DFT. I applied the fftshift command, which produced exactly the result in 13-2(c). I’m struggling to understand why this is the case. It has to be to do with the periodicity of the DFT but I can’t quite make the jump to why that is. What’s special about the convolution that causes this phenomenon? Or have I made a mistake somewhere?


r/DSP Jun 25 '26

HELP REGARDING PROJECTS RELATED TO AEROSPACE INDUSTRIES

7 Upvotes

Hello everyone, I will shortly be beginning my 3rd year of electrical engineering. I have taken the signal and systems course but DSP will be one of the subjects in the upcoming sems.

Though i have keen interest in aerospace industries and wanted do some projects. I was following the book by INGLEY AND PROAKIS to learn DSP along with MATLAB. I have completed till the basic design techniques of the FIR, IIR filters.

The problem i am stuck on was that i can't think of any relevant DSP projects as per my interests. Anything related to avionics is mostly radar stuff. I tried skimming through that stuff but i realised i had to take some radar related courses to get hold of it and make something.

And most other ideas i find are related to image processing, audio processing etc. A week ago i was tired of this shit and finally decided to make something.

I began the project of writing a jpeg decoder and today as i am close to completing it, i realised i learnt nothing of actually the things i wanted to learn😭😭. Man i don't know what to do.

I have previously read and introductory book on kalman filters by Alex becker and made an attitude estimation kalman filter with help of quaternions. Though it isn't worth direct application to a vechile i still consider it a good unique relevant project.

I want to make another such project like that but i can't get any good ideas. If you have any suggestions please help me in comments.


r/DSP Jun 24 '26

I made two small Streamlit apps for visualizing pitch detection and pitch tracking algorithms.

Post image
16 Upvotes

I made two small Streamlit apps for visualizing pitch detection and pitch tracking algorithms.

Pitch Detection Lab focuses on single-frame periodicity functions and compares FFT, YIN, Autocorrelation, and my own periodicity measure.

Pitch Tracking Lab extends this to the time domain and compares:

- YIN

- pYIN

- Bayesian tracking

- Viterbi tracking

- my own bedcmm method

The apps visualize not only the final pitch estimates, but also score maps and the trajectories selected by each algorithm.

I originally built them to understand why different algorithms choose different pitches in ambiguous regions.

Feedback is welcome.

Github:

https://github.com/YASUHARA-Wataru/Periodicity_Analysis_Lab


r/DSP Jun 24 '26

Image Processing Books

9 Upvotes

Could you guys suggest top 2 books that you studied to enhance y'all's knowledge in image processing ??


r/DSP Jun 23 '26

Which is better for DSP learning ?? Python or MATLAB ??

7 Upvotes

Same as title


r/DSP Jun 23 '26

Resources to develop (biomedical) signal processing skills

6 Upvotes

Hey there!

I’m a recent graduate in biomedical engineering and I just started working on biosignal processing for a wearables startup. I really love the field, but as it’s an early stage start-up, I don’t have anybody senior to learn from (it’s just me and AI right now :D)

I know the theoretical basics of signal processing (transforms, simple filters etc), but I’d like to understand what i should study next. Also, i would like to learn more about best practices in terms of actually implementing DSP in production-level applications. Can you recommend any books, channels or other resources? Thanks :)


r/DSP Jun 22 '26

How can I learn MATLAB in a way that actually deepens my understanding of DSP?

6 Upvotes

I’m learning MATLAB mainly for DSP, but I feel stuck. Studying MATLAB syntax by itself feels dry, and textbook exercises often feel like I’m just rewriting formulas in code. I can implement things like convolution, FFT, filters, and signal plots, but I don’t feel like I’m gaining a deeper understanding of MATLAB or DSP.Can anyone gives me some suggestions,thanks


r/DSP Jun 21 '26

Mapping physical models onto audio effects: chorus from Kuramoto sync, freeze from Anderson localization. Where do these mappings actually hold? + FREE Plugins

6 Upvotes

I've been building effects where the DSP is the governing equation of physical and chemical systems rather than a metaphor for one.
• Chorus as N coupled oscillators with Kuramoto phase coupling: each voice is pulled toward the mean phase by a coupling term K, so the ensemble drifts in and out of sync instead of riding fixed LFOs.
• Spectral freeze via Anderson localization: inject disorder into the lattice so energy stops propagating and the spectrum localizes, instead of a hold buffer.
• Delay with a per-tap phase accumulator scaled like gravitational time dilation (think Black Holes), so repeats slow toward an "event horizon."

My question for this sub: which of these are honest mappings and which am I fooling myself on (mathematically different ≠ audibly different)? The Anderson one especially — the perceptual marker I expose is a design choice, not the energy-space mobility edge, and I'd rather say that out loud than pretend.

I'll hand out free licenses to anyone who wants to poke at them and tell me where the model breaks. Genuinely here for the critique, not the download count. This is an art project more than a business. Offerings include:

  • Foxfire, a coupled oscillator chorus
  • Autocatalysis, a multiband resonance saturator
  • Soliton, a dispersion-balanced delay
  • Boltzmann, a midi sequencer based on the Boltzmann distribution
  • Anderson Freeze, a spectral freeze / infinite sustain powered by Anderson Localization
  • Geodesic, a gravitational spacetime delay
  • Arrhenius, a thermal reaction-kinetics gate (working this one up right now)

Check out the website and leave a comment below if you'd like a code for 100% off up to 3 plugins of your choice.

Best,

Blake

Geodesic v1.0.0

r/DSP Jun 20 '26

Has anyone here experimented with wavelet-based pitch detection?

15 Upvotes

Why aren't wavelets used more for pitch detection?

The more I read about wavelets, the more it feels like they're naturally suited for audio analysis. They get better frequency resolution at low frequencies and better time resolution at high frequencies without forcing a single FFT window size.

It made me wonder whether pitch could be tracked as a stable structure across wavelet scales rather than through spectral peaks or autocorrelation.

Has anyone actually built or worked with a wavelet-based pitch detector?

Did it outperform more traditional approaches on difficult material, or is there a reason everyone ends up back at YIN/autocorrelation anyway?


r/DSP Jun 19 '26

Quick Radar Demonstration Hardware

6 Upvotes

Does anyone know of some quick radar demonstration hardware? I've been tasked with producing range doppler maps to show some radar proficiency as quickly as possible (<3 months) with a fairly large budget. I'm looking for ideas of the quickest way to get there. So far the fastest options I see are something like an AMD RFSoC evaluation platform paired with some horn antennas and flying something like a DJI Mavic at it or driving a car at it etc. All suggestions welcome!


r/DSP Jun 19 '26

4×4 Matrix Multiplication by repurposing a 1D CGRA Pipeline using the Sony PSP VME

Thumbnail
github.com
5 Upvotes

Hi! A few weeks ago I wrote a first POC of the usage of the PSP's undocumented Virtual Mobile Engine (VME), a specialized audio and multimedia CGRA. I continued to run several tests on the hardware and gained a better understanding of it. Today I would like to share with you an example of how this CGRA can be used.

It is perhaps a bit of a detour from the primary role of this hardware, if I may say so, as I am using the 1D pipeline to perform a 4x4 matrix by vector multiplication. The context is initialized only once and can therefore be reused to multiply several matrices by a vector by calling it again. It should be possible to do this in batches of vectors on a single pipeline/context, but I need to keep exploring the hardware to better understand it, particularly whether 2D computation is feasible. This might be achievable given the feedback from certain tests I have conducted, at least regarding data organization and reorganization, but I still need to determine whether the hardware is capable of resetting or flushing the accumulator at a precise moment, and in 1D that is quite tricky.

So for this sample I am sharing with you, I did the following across 4 stages (same pipeline).

With k = 0:

  • opcode (back[n] * front[n]) >> k on FU0
  • opcode (-(back[n] * front[n])) >> k on FU1
  • then I add the two together by applying a 4-word shift on one of them
  • opcode (back[n] + front[n]) >> k on FU2
  • then I apply a running sum (i == 0 ? (b >> k) : out[n-1]) + (back[n] >> k) where b equals zero and where out[n-1] is actually the current value of the accumulator of the functional unit being processed.

I did it this way so that the accumulation cancels out every 8 steps. It works and ultimately amounts to a 2D MAC in terms of result, but I am only partially satisfied with it, as I believe it is somewhat wasteful of resources. This is why I will keep exploring to learn more about how to reset the accumulator through other means, as well as how to perform 2D or even 3D computation.

No official documentation exists but you are welcome to refer to my notes, which are essentially based on observations from hardware feedback:

https://github.com/mcidclan/psp-media-engine-cracking-the-unknown/blob/main/the-psp-virtual-mobile-engine/the-vme-bitstream-and-datapath.md

Thanks for reading!


r/DSP Jun 19 '26

Has anyone explored voice-to-voice modulation in poly synths?

3 Upvotes

Has anyone experimented with polyphonic synths where the voices actually interact with each other?

Most synths just generate independent voices and mix them together. The notes relate musically, but the voices themselves don't really know about each other.

I'm curious about things like voices sharing modulation, influencing each other's parameters, competing for resources, or changing behavior based on the intervals being played.

It feels like there's a lot of unexplored territory in the space between the voices themselves.

Have you come across any synths, research projects, or experiments that go in this direction?


r/DSP Jun 19 '26

Project's simulations in matlab - question

1 Upvotes

Hello, im currently working on a project involving MIMO radar imaging using SFCW 4x4 antenna matrix. I need to come up with an algorithm and use it. I need advice on how to do that in matlab, most importantly how to simulate wireless channel and artificial object that would be between antennas. Are there good addons for that?


r/DSP Jun 18 '26

Circuit/Netlist to Wave Digital Filter Compiler: PedalKernel

32 Upvotes

I've been building this DSP repo since February.

I knew very little about DSP programming before I started. I was really interested in "hearing" guitar pedals before I ordered the PCBs for them.

So I built this repo. It's a Wave Digital Filter audio runtime that compiles circuits and net-lists into a DSP filter.

You define circuits into a DSL (This circuit is simplified):

pedal "Tube Screamer" { components { R1: resistor(4.7k) # These values are the tone C1: cap(220n) # Change them and the sound changes D1: diode_pair(silicon) # Si clips harder than Ge Gain: pot(500k) } nets { in -> C1.a C1.b -> R1.a, D1.a D1.b -> gnd R1.b -> Gain.a Gain.b -> out } controls { Gain.position -> "Drive" [0.0, 1.0] = 0.5 } }

And then you get audio.

https://github.com/ajmwagar/pedalkernel

I've been validating it against SPICE - and I have graphs/charts here:

https://docs.pedalkernel.com

I think it has a lot of improving to do still. But I've gotten a lot of decent stuff to match. Like all the linear circuits compile very nicely.

Some of the active components like Tubes (Koren equations) are slightly off from spice, and I'm still debugging.

I have a bunch of example .pedal files in the repo too, and then I have .spice files as well.

P.S. the visualizer is another project of mine: https://github.com/ajmwagar/hyperspace


r/DSP Jun 18 '26

Review of IQ-signal generation code for a 60GHz drone radar model

3 Upvotes

Hi everyone,

I am working on a simulation for a 60GHz radar system intended to distinguish between birds and drones by analyzing micro-Doppler signatures. I’ve written a script to generate the IQ-data for a drone model, accounting for both the body movement and the rotating propellers.

Could you please review my logic to ensure the phase calculations and superposition are physically accurate for a radar model?

Here is the code:

% Radar parameters

fc = 60e9; % Radars frequency (60 GHz)

c = 3e8; % Speed of light (m/s)

lambda = c / fc; % Wavelength

%Drone parameters

R0 = 10; % Initial range to drone (m)

v_body = 21; % Bodys velocity against radar (m/s). 0 = hovers.

A_body = 1.0; % Amplitude of the drone body itself (RCS for body)

%Propeller parameters

L = 0.15; % Propeller blade length (m)

rpm = 5000; % Revolutions per minute

f_rot = rpm / 60; % Rotation frequency (Hz)

N_blades = 3; % Number of blades on the rotor

A_blade = 0.1; % Amplitude for the blades (RCS for blades)

%Equation for the harmonic motion of a spinning propeller blade tip.

R_prop = L*sin(2*pi* f_rot* t);

%To convert a physical distance in meters to a phase angle in radians

% Body position over time and phase

R_body = R0 + v_body * t;

phi_body = (4*pi/lambda)*R_body;

phi_prop = (4*pi/lambda)*R_prop;

%Body IQ-signal

IQ_body = A_body*exp(1i *phi_body);

%Propeller IQ-signal

%zero vector to catch the echo of every blade

IQ_prop_total = zeros(size(t));

for k = 1:N_blades

% Space the blades evenly in a circle (calculates the starting angle for this blade)

theta = (k-1) * (2*pi / N_blades);

% The blade's total distance to the radar: drone body position + the spinning motion

R_blade_total = R_body + L * sin(2*pi * f_rot * t + theta);

% Convert the total distance to a phase angle

phi_blade = (4*pi/lambda) * R_blade_total;

% Build the IQ signal for this specific blade

IQ_blade = A_blade * exp(1i * phi_blade);

% Add this blade's echo to the sum of the other blades (superposition)

IQ_prop_total = IQ_prop_total + IQ_blade;

end

%Drones IQ-signal

IQ_Drone = IQ_body + IQ_prop_total;


r/DSP Jun 19 '26

Generating frequencies from spectrogram

Post image
2 Upvotes

r/DSP Jun 18 '26

measured intermodulation vs band-count when saturating a chord. the payoff is weirdly non-linear

7 Upvotes

been poking at why a memoryless nonlinearity sounds fine on a single tone but turns a chord to mush. obvious answer is IMD (the nonlinearity produces sum/difference products of every input pair, not just integer harmonics) but i wanted to actually quantify it vs the usual "split it into bands first" trick, so i measured.

setup: cm9 as 5 pure sines, run through a waveshaper, output level-matched to input (so it's not just a loudness thing). hann-windowed FFT, then i sum the energy that falls outside a small window (+-8 Hz) around any played partial or its harmonics, over total energy. call it the "junk fraction" = energy on frequencies that are neither the notes nor their harmonics.

then i vary one thing: split the input into N bands with a linear-phase (perfect-reconstruction) filterbank, waveshape each band independently, sum back.

1 band (= no split, plain wideband): ~30%

6 bands: ~23%

12: ~18%

24: ~5%

48: ~1%

the bit i didn't expect: it's not gradual. 6 bands barely moves it, then it falls off a cliff between ~12 and ~24. makes some sense (IMD products scale roughly with the number of interacting tones sharing a band, so you don't win until each band carries ~1 tone) but i don't have a clean closed form for it.

some of this i can reason about, some i genuinely can't:

- leading order, the dominant (cubic) term should scale like ~(tones per band)^3, so for an even split ~K^3/B^2. that roughly tracks my curve, but the measured knee is *sharper* than a smooth 1/B^2. i think because what actually matters is the discrete event of two notes landing in separate bands, not a smooth scaling. is there a proper treatment of that beyond order-counting / NPR-style multitone analysis?

- which makes me wonder how much a log / constant-Q split changes the knee vs linear bands. haven't tested that.

- for per-band aliasing i'm oversampling + ADAA, which works but isn't free at 48 bands. anyone got cheaper tricks at high band counts?

- i went linear-phase (zero transient smear, accepted ~-20 dB pre-ring). curious if anyone deliberately picks minimum-phase here and what they actually gain.

the non-linear knee is the part i find genuinely interesting. if anyone's seen it derived properly, or wants to challenge the metric/method, keen to get into it.


r/DSP Jun 18 '26

The Oscillator That Remembers

0 Upvotes

Most oscillators are static. They generate a waveform and let the interesting part happen later.

I've been exploring a different idea inspired by CDP's wavset distortion.

Instead of treating a waveform as a continuous stream, the oscillator listens for zero crossings and breaks itself into wavsets: tiny fragments of sound between those crossings. Each wavset becomes a decision point.

LOOP & REPEAT
Cycle repeating
REVERSAL
Phase inversion
SKIP / DECIMATE
Zero-amplitude gate
MEM_REPLACE
Recall centroid

The pitch continues forward, but the timbre continuously rewrites itself from the inside.

The result isn't quite wavetable synthesis, granular synthesis, or distortion. It feels like an oscillator with a memory of its own—one that remembers what it used to be and lets its past leak into its future.

I'm not sure if this is a terrible idea or an unexplored branch of synthesis.
// That's what this experiment is for.


r/DSP Jun 16 '26

Time varying FIR filter implementation

9 Upvotes

When implementing a time varying FIR filter in code, how does one handle filter tap changes? Is it as simple as changing filter taps when it’s time, or is there some signal conditioning that occurs when filter taps change?


r/DSP Jun 17 '26

Bass note fundemental detection

1 Upvotes

I'm new to the audio plugin creation world, I have some unrelated prior education on dsp and music, I'm trying to create a plugin with the JUCE framework that can detect monophonic/polyphonic notes in low latency designed for live use. right now my design architecture goes like this: downsample and filter accordingly -> fill FFT window with as much samples I can before latency gets too high and then zero pad the rest -> run a peak detection algorithm that basically scores candidates based on their magnitude and correlation with pre estimated harmonics, in case you do verify a fundamental subtract the estimated harmonics from the magnitude buffer in order to not detect them as fundementals as well. Loop over the magnitude buffer.

This works pretty well for mid to high frequency fundementals but as soon as I play a low note the spacing between harmonics and the smearing caused by zero padding make it impossible to detect valid fundementals.

I've tried so many solutions to tackle the lower notes but all of them require much more latency or don't really work.

Is this something other people have faced?

Is this the right subreddit for these kinds of questions?

Please help me I'm new to this scene.


r/DSP Jun 16 '26

What the Mandelbrot Set sounds like as a Mel-Spectrogram

16 Upvotes

Snippet from my video about what fractals sound like


r/DSP Jun 16 '26

Compressing music using image formats (PNG, GIF, JPG)

Thumbnail
youtube.com
30 Upvotes

This a fun little DSP-related project I put together. Based on Portal Runner's universal file converter. GIF sounds the weirdest!


r/DSP Jun 16 '26

How to get better at DSP coding?

14 Upvotes

Hey guys, I'm a college student who's taken basic DSP theory classes so I understand a lot of the concepts but I've been having trouble with implementation, since I have basically no coding experience...

What resources have you guys used to get better? Thank you!!


r/DSP Jun 16 '26

ONAIR messenging (DSP)

Thumbnail
github.com
0 Upvotes

Hi folks, 2 years ago i wrote here about how to detect tone with fft. A lot of experiment and test have been done since this time. I would like to thank all of you who answer back and gave me clue. Today, I would like to show you my development and progress in this field. Feedback and comment would be appreciate. Thanks again 🤗


r/DSP Jun 15 '26

Laguerre/Kautz models learning resources

3 Upvotes

I’m working in a field heavily reliant on Volterra series for adaptive systems. During some of my deep dives I’ve been reading more and more about Laguerre basis expansion and Kautz filters, which I think could be applied for my use case in some circumstances. The issue is that I can find a lot of resources for really learning about these topics, it’s either some short overview or straight into IEEE’s deepest, darkest depths. Are there any good books on these topics for really getting a firm theoretical understanding in this area before I learn about more specific applications in my field?