triangle waves now take fill factor into account (yay!)

this means you can now generate sawtooths
cleanup