It's not the [metro] that is shaky in your patch, it's the [impulse~]! Attached variation proves this.
Impressive - thanks!
Pd's messages come in two kinds: regular, GUI-generated messages and
so called "clock-derived" messages. The time objects in Pd like metro, delay, pipe etc. all generate clock-derived messages. Their timing is not affected by dsp-blocks at all.
However, and now comes the important trick: DSP objects need to do some extra work to make use of the accurate timing of clock-delayed messages, when converting these messages to audio signals. So far, the only object that does this is vline~ AFAIK. You may want to have a look at its source to check out what needs to be done to convert from control messages to signals with accurate timing.
I better do that so I can fix impulse~. Arrrggh.
Eric