How to simplify the Fourier Series Using an Approximation?
Sounds like bandlimited synthesis.


  with the added ability to change the lowpass cutoff frequency of the signal dynamically.


That makes it even more complicated.


The simplest way to do this right is additive synthesis, as you know.   That way you can adjust each harmonic's frequency and phase and amplitude on the fly. Yes, there are a lot of calculations if the fundamental frequency is low, but you can use approximations of sin() if that speeds things up.  The 2-MAC resonant filter/oscillator (1, 2), for instance:




or various polynomial approximations with varying amounts of distortion:




If the waveform is fixed and a submultiple of the sample rate, you could use IFFT synthesis, but for anything else I imagine this would be difficult because the harmonics cover multiple FFT bins.  Maybe with overlapping and fading between chunks?


Otherwise the best solution depends on what exact waveform you're trying to synthesize.  


If you only need a "sawtooth-like" waveform, for instance, you can use the DSF directly, which produces waveforms with harmonics that fall off linearly:





but if you want an actual square wave you use the DSF to generate a "bipolar" band-limited impulse train (BLIT):




and then leaky-integrate the sum. 2

These methods can't be used for arbitrary waveforms, however, and can't be used for swept-frequency chirps or swept-frequency LPFs (as you want?), since the harmonics suddenly disappearing from one sample to the next produces a pop or click which can't be filtered out after the fact.

You could probably use this method for the low harmonics and then combine with additive synthesis of the top harmonics and then fade those in and out to prevent the clicks.  In other words, as a harmonic disappears from one sample, you seamlessly replace it with an additive-synthesis harmonic at the same frequency and phase, which you can then fade out more smoothly.


Wavetable synthesis, fading between wavetables as harmonics disappear?
Then there are other methods.  :)


https://ccrma.stanford.edu/~stilti/papers/blit.pdf