You can quickly see what different compilers will do, using Godbolt compiler explorer.
Just type in a non-inline function and ignore any function-call overhead, like the return at the end (bx lr).
...
Type: Posts; User: sublinear
You can quickly see what different compilers will do, using Godbolt compiler explorer.
Just type in a non-inline function and ignore any function-call overhead, like the return at the end (bx lr).
...
Good point, you can sum the harmonics up to Nyquist to accurately synthesize these waveforms. When using wavetable synthesis, this is a great way to generate the bandlimited wavetables. But it can be...
Just curious, what would be the specs on the resampling you want to do?
Years ago I wrote a very fast polyphase resampler for a previous Cortex-M4 project that I'm happy to contribute.
It used...
Hi Paul,
The noise-shaping is actually correct, because the signed shift does truncation toward -inf. The quant error is guaranteed to be a positive fraction in [0,1]. If you round instead of...
The original poster is right in that if you generate a trivial square or sawtooth at the target sample rate, it has already aliased and is too late to filter it out.
An obvious solution is to...
To get good performance on older Teensy's, most of the audio code uses fixed-point instead of floating-point math.
In this case, biquad coefs are converted to fixed-point with sign bit, one...
That's what I did with my Newhaven OLED. In ssd1351.h, I changed it to
#define SPICLOCK 16000000
and was able to run the Teensy 3.6 at full speed.
I think you're right, the theoretical operation-count for partitioned convolution seems to always be lower than unpartitioned. In practice, when FFTs get too small (32-point RFFT is only a 16-point...
@WMXZ For a filter with L=129, I think the standard FFT convolution (N=128 and NFFT=256) is the way to go. With a minimum-phase filter, you'll have near-zero added latency and great efficiency. You...
For partitioned convolution, the filter and the output are the same, only the machinery is different. The basic idea is to think of your long filter as the sum of shorter filters (where all but the...
Nice work! If needed, there are several ways to reduce the latency further:
1) Instead of one big FFT, you can use uniform-partitioned FFT convolution to operate in blocks of 128. Slightly less...
You forgot that the original code correctly saturates when the left-shift overflows. It's the same problem that Paul describes above with __SSAT(y<<n, 31). Bits are lost during the shift before...