I dont think the regulators are the main problem. They are getting quite hot but they have heatsinks on them and ive had one running hotter for a few hours without problems.

The skull is more balanced than any other that ive seen. The jaw servo is in the center instead of at the front. One problem ive heard with this kind of project is that when the power is cut the skull will look straight down. Mine doesnt have this problem. It remains exactly where it was so the servos definately arnt struggling to keep the skull in position.

I did have a servo tester (now blown up after forgetting the 5V regulator) and all 4 servos worked fine with that. If its not my code thats causing the buzzing then there must be some fault on the circuit but i cant find one.

As my code listens for serial data i cant jump into the tight loop too soon but i calculated that it should jump in over 3,000 instructions before the timer overflows. Theres no way my program uses that many instructions in one iteration of the main loop.

Heres my tight loop for servo 1
Code:
Servo_Loop1							; Label: Servo1 tight loop
	
	; Check if Timer3 has overflowed
	BTFSS	PIR2,1					; If TMR3IF=1 Then: Skip the next line
	GOTO	Servo_Loop1				; Nothing to do yet so go back to the start of the loop
	
	BCF		_pServo1				; Turn the servo pin off
	
	GOTO	Servo_Next				; Goto the subroutine that sets up the next servo
The PIC runs at 10MHz with PLL (40MHz / 10MIPS). The servos were quite expensive but their deadband shouldnt be shorter than a few instructions.

Im going to go over my code again tomorrow because ive already found some stupid mistakes in it so there might be more. 1 thing i can think of is that i dont allow 18ms between pulses. There is a gap but i think its more like 10ms. That should be fine though right?