How I Created the Perfect NES Sound Chip

My primary goal (or experiment) in this video was to remove the limitations of the NES (and Famicom) sound chips. LINKS: Akumajou Densetsu - Demon Seed I started with the triangle channel and was able to make it output pure triangle waves. Then, I also modified the noise channel so that it can output floating point samples. However, the difference is extremely subtle, so I did not demo it in this video. However, this is my subjective opinion, but it now sounds closer to the noise output of the Commodore 64’s 6581 sound chip IN SOME INSTANCES. I also tried to interpolate the DPCM channel linearly so that it won’t make huge steps up and down, but it proved to be harder than I thought. Finally, I made some touches to the mixing code so that all channels output floating point data, all the mixing is performed using floating point operations, and all the channels are mixed linearly. This means that the triangle, noise, and DPCM channels won’t affect the volume of each other, which is often the reason when the triangle, noise, or DPCM channels are more quiet than the two square wave channels. My second target was the VRC6. I spent three days trying to interpolate the sawtooth channel linearly, encountering a problem where a higher pitch results in a louder volume, but it seems that I only had a problem with my interpolation formula and I was able to fix it at day 3. Same with the 2A03, I made it so that all channels output floating point values, and so that the mixer performs floating point operations on them. I also tried to improve the Namco N163 sound chip. Normally, a sound chip would mix the output of each channel via addition, and the result would be output 44 to 48 thousand times per second. However, this sound chip does not have a mixer at all. Instead, the value of each channel is output in sequence like a round robin. The more channels the N163 is working on, the longer it takes for each channel to get its turn to output its data, and this introduces aliasing noise to the output. Fixing this should make it sound better theoretically, but I have not implemented it yet so we will have to see in the future. Finally, I had my eyes on the VRC7. The VRC7 is an OPLL variant, and the OPLL does some operations using fixed point values that would probably fare better using floating point operations (like computing sine wave samples). However, this proved to be daunting to implement, and it turns out that just improving the digital-to-analog converter so that all mixing operations are done using floating point operations was enough to make the chip sound extraordinarily good. Doing all these fixes were tiring and it took me a lot of time. But the result was very much worth it. Listening to some famous NES soundtracks like Megaman, Castlevania 3, Journey to Silius, Ninja Gaiden, and Gradius II, I can definitely say that there IS an improvement. Feel free to request any song in the comments section that you might want to hear using an improved NES sound chip!
Back to Top