I tried to program DSP for a little while, in C, as a VST plugin.
It worked out allright. I tried some popular things. But I stopped doing it, since I had my fun, and there is a lot of idolatry in the DSP business as it is connected to Pop. And it is not really economically feasible either. But I worked out some optimal things.
The common synth filter, is 4 one poles. with negative feedback around for resonance, and clips the input. It is a very popular sound. One may want to have shaped/curved/saturated oscillators for this aswell, for vintage resonance dynamics, like a Roland TB-303. This can be done with a keyfollowing onepole bassboost filter aswell, for no additional aliasing.
I also made a dithering algorithm. But in these days one really should move to 24bit anyway. But here one needed atleast 80bit precision, something many do not know, and the dither is reduced to mostly a noise, rather than coding the audio into lower resolution, like it should do.
And I made a limiter. With lookahead attack, and release under a threshold. Coupled to a FIR filter, filtering attack, and getting a more filtered release aswell. It seemed to work best, trying to hide the artifacts, and fits the lookahead perfectly. The trick here is getting the FIR filter good enough, as it only typically use 1.5ms lenght, fitting the lookahead time. (64 samples @ 44.1k).
And I also made a gaussian IIR EQ. And the slope/phase could be optimized for similar sound in/out. This is really the best EQ I have heard. Very firm sound. I just made a 5 band EQ with little GUI, so someone else will have to make a bigger plugin of it, with more sophisticated math, if wanted. Getting the onepole IIRs in parallel for gaussian sum impulse response, was a feat enough for me. But I don´t even know if the level out there exists to understand it, as many simply want “analog” plugins. When really also FIR is really the more digital filtertype.
And I did some thinking on D/A converter design. These are usually done by filtering bitpulses, so that they are reconstructed to an analog signal. The problem here is that many use filters with ripple, giving overshoot on the output, changing the waveform. I would rather say use a gaussian approximation, without ripple, keeping waveform shape, and rather trying to make the bitpulses as high frequent as possible, so that the necessary filtering still happens.