Can the Servo lib be made to control more than 12 servos per timer? Maybe!

DuaneB:
the reason it is not done this way is that you would need to loop through the servos at every pin change to see who should go next, with 20 servos that would be a lot of 16 bit operations.

You are mistaken.

You see this?

That is a circuit I built, which has an array of 64 multiplexed LEDs. Nothing special about that you might think, and I wouldn't blame you since the video doesn't demonstrate it very well, but if you look closely, you may notice the LEDs that aren't brightly lit are displaying a gradient. That's pulse width modulation. On a multiplexed display. How did I achieve this? By sorting the LEDs so as I illuminated each column of the display I needed only check the time against the next LED to turn off.

alternativley you could try and sort the servos at the start of each frame but again lots of 16 bit operations.

There's no need to sort the servos each frame as long as you keep your list sorted. When you set a new angle, all you need to do is a quick binary search to the left or the right of where the previous position was in the list to figure out where to insert the value, and you're done. Yes, this requires a few operations. But setting the servo position doesn't need to be super fast. Servos can't respond within microseconds to a change in position anyway. Where speed is important is in the servo interrupt, and that would be super fast with the list already sorted for it.