I'm sure the capacitors will work fine at an angle.
I know ascetically you want it to look like the original, but since it's not normally seen, why worry about how it looks?
Smaller caps may have a shorter operating life than the larger ones.
If you go with an axial lead device, you might also consider a slightly higher voltage device (e.g. 35V) to help improve reliability.
Assuming that height is not a problem, you may be able to fit an axial lead type (below) by standing it vertically.
It may require splicing a wire to the top lead to make it long enough to reach the board hole, but wire length is not a factor in the application of this capacitor.
Because of oversampling, I think any of that small PWM phase-shift from sample to sample would not be audible, as it's occurring at ultrasonic frequencies, and would be filtered out by the output PWM filter.
But I'm willing to be proved otherwise.
The "skew" is just a shift in time of each PWM pulse from the center of the sawtooth.
Since that is a constant shift for each pulse, I don't see how that can add distortion to the modulated signal.
Yes, it does rather sound like the common "hey, I just invented a perpetual-motion, over-unity motor-generator device". :rolleyes:
Of course you need a battery to get it started.
How does whether its a triangle or a sawtooth affect the duty-cycle accuracy of the square-wave?
Either a triangle or a sawtooth will generate a 50% duty-cycle when the modulation input is 1/2 the PP voltage of either wave-shape.
For your interest, here's the LTspice simulation of a PWM circuit using a transistor sawtooth generator with about a 250kHz frequency, along with a fast LT1720 comparator:
The Demod output is from a low-pass filter to show the demodulated PWM signal.
Yes, you must consider the tolerance of the real components you use.
The NE555-1 model I posted should give close to the real timing values if you include the various tolerances in the simulation.
Here are the 555 transistor model files.
I had to zip them since this website, in their infinite wisdom, won't allow me to download LTspice model files.
The .sub file goes in the LTspice lib/sub folder, and the .asy file goes in the lib/sym/misc folder.