Here’s v0.2 with pwm:
webs.hogent.be/~032573mh/coresound_v0_2.zip
I used a modified lfo source file from the analog toolbox for this
the lfo modulates the PWM amount
you can control:
initial pwm: cc#10
lfo rate: cc#11
lfo on/off: cc#12
note that this is pwm on the output square wave,
the output is still 1bit!
the next version will use a 8bit parallel dac (R2R of integrated) connected to PORTB
PWM output is good, as would be an 8-bit (or better) R2R ladder - forget about DACs, they’re too pricey!
Right now I’m using a integrated dac so that I don’t have to solder all of those R’s
but I guess the R2R from AOUT_LC will do fine… I would connect it straight to PORTB, without the shiftregister
Doing a filter in software requires effort and knowledge of signal processing concepts.
I don’t think it’s possible to implement a filter with the current setup (non optimised C coding)
but it sure would be nice to have 
@ Michael
Nice work on the speakjet, I have found the frequency calculation part
The problem is that the pic has to calculate those 4 sinewaves and mix them together in software
wich would require a lot of multiplies…
Regarding your experienced approach I assume you already know this, but anyway… I hope you don’t mind these notes…
All comments are welcome :-)
the approach right now is actually quite simple:
increment a 16bit counter with a fixed frequency (2Mhz),
the size of the increment determines the frequency
take the top byte of the counter and…
output straight to dac: saw
use as index to a sine table: sinewave
compare against a value, if lower output 0 else output 255: square with variable pulse with
… and so on 