I could only test the algorithm with my hardware and until now nobody else posted results of some tests. So there is not much empirical data. I assumed thatIs the results what you expected?

the results are much better than with results of your test with the analog signal.

Regarding your questions about the resampling algorithm: First I want to mention that I wasn't involved in the developement of the algorithm.

You are probably aware of that, but I want to mention it in case somebody skims the thread and gets that impression.

In the introduction of the document, the authors write:

"The algorithm effectively implements the “analog interpretation” of rate conversion, as discussed in [1], in which a certain lowpass-filter impulse response must be available as a continuous function. Continuity of the impulse response is simulated by linearly interpolating between samples of the impulse response stored in a table."

In section 3.3 they further desribe the “analog interpretation”. If you stick to this interpretation, then there is no L and M factor. A new sample can be computed at arbitrary times t

by shifting the sinc filter to t, computation of the interpolation weights by evaluating the sinc-function and computing the linear combination of the input samples.

If you want to interpret the algorithm in the "standard" way, I can tell you at least what L is: The table with the lowpass-filter contains a densely sampled version of the filter.

L is the factor by which the lowpass-filter is more densely sampled than the input signal.

The algorithm first interpolates by a factor L and new samples are computed at arbitrary positions by linear interpolation of the signal.

At the Teensy implementation a Kaiser-windowed sinc-filter is used as lowpass-filter and the limiting factor is the size of the table that stores the coefficients of the filter.

L depends on the length of the filter. So I can't tell you a single number, but give you an examples of N:

Currently the size of the table is 20*1024 + 1 samples (MAX_FILTER_SAMPLES in resampler.h / only one wing of the filter is stored).

The default resampling parameters are:

attenuation=100

minHalfFilterLength=20

maxHalfFilterLength=80

Let's say the input frequency is 48kHz.

The lowpass-filter is designed as described here:

https://tomroelandts.com/articles/ho...-kaiser-window

Parameter b is chosen in order to prevent aliasing frequencies below 20kHz.

This results in a filter length of 77 ( 2*input.getHalfFilterLength() +1).

N=floor(20*1024/38)=538