Most designs use the 556 timer, which is two 555 timers in a convenient package. I came across some 555's online and decided to go this route. I ordered 4 so I would have enough and after they arrived I set to work. I was hoping to finish it in one evening so I could get on with my classic phone project but it was 3 evenings after all. The delay was mostly because I chose a tiny and inconvenient form factor housing to build the project in, a parmesan cheese shaker that fit a speaker I had laying around perfectly.
First I breadboarded a crude version together using only photoresistors. That one worked fine (after a bit of tinkering and letting the magic blue smoke out once because of a 12v powersupply, whoops.)
When I started putting the thing on perfboard I soldered all the wires directly. Of course this was a mistake because It didn't work and debugging was a pain. I then (painstakingly) made all connections using pin headers. I love it! Feels much more like a product than a hack this way.
I based it on the circuit by Rob the Fiddler.
.1uF = 100nF (code:104) .01uF = 10nF (code:103)
I replaced one potmeter with a photoresistor(not pictured). The two pushbuttons are from this mod I found on getlofi.com. They select different caps for the first 555. The result isn't spectacular yet on my version but this might be because my potmeter doesn't have that much resistance. I'm going to experiment further. One slideswitch is to power it on, the other selects the output, line or speaker. The line output is modeled after this circuit, it's a little weak but no problems yet.