I can do 4 pins, and can make it work with 3 pins as well. The 12v line will come from the controller 12v, so make sure the 12v power supply you get for the controller has enough amps. I don't have a 4 pin fan, so I'll have to get one from newegg or frys.
for led's, my initial design is as follows:
set the levels for each channel to get the desired combined color, one for day and one for night.
set the max brightness for day and for night
the default will just use sunrise/sunset times for some coral reef location (maybe great barrier reef so season is opposite), and will ramp up to noon and ramp down to sunset using sine function. With sine function, 1/3 of the time will be above 87%, 1/3 will be betwen 50% and 87%, and 1/3 is 0% to 50%. I'll probably add a noon length setting, where you can specify the minutes you want noon to last (noon=100% of brightness).
This gives you varying sunrise/sunset times and day length. I think the day length range is between 11-13 hours. If noon is 90degrees, where sine(90)=1.0 (max brightness), sine(60)=0.866 and sine(30)=0.5.
I'll code such that you can swap the updateLED function with your own custom function. The calculation of sunrise, sunset and moonphase is done once a day after midnight. The rest of the (integer) calculations are done in the interrupt routines.
I'll remove the 10v pwm circuit from the diagram, as I think 10v pwm is obsolete. I'll initially be using 16bit resolution 250hz pwm. I can change that later if needed.