Sorry for not positng for a while, I've been extremely busy with other endeavors including thinking about college, and I'm itching to get back to work on NeoGameBoy, which has been gathering dust on my hard-drive for some time now. I see that you all are working on sound, and so I figured I'd make a post to help you guys get stuff up and running.
As far as decoding and playing waveforms goes that is fairly easy and straightforward, however actually creating the other channels (noise, sweep, etc..) that is a bit trickier. The noise is not very straightforward, though it sounds like it should be. The most common way of creating noise, and the one that is most likely correct, is to create
Gaussian Noise. I did some research on this when I was working on PS2SP, and understanding it requires some basic knowledge of calculus. Gaussian noise is really quite simple, though the math to actually create it can be less simple. Gaussian noise is a pattern of waveforms which is evenly distributed across all frequencies. You can find a simple method for generating semi-gaussian noise on the fly
here. For more information on the math I would look
here. Hope this helps, I'll try to dig up some of my notes on ADSR later today.