Wow! I did a ton of work on the audio engine, and it's working much better than I expected - in fact, I'm kind of in disbelief that it actually works! Here's a brief summary.
At the start of the Jam, I had implemented the triangle wave and the noise channel and done some basic sequencing in a rather strange way, by creating an audio buffer for each note and passing them to the Web Audio API each with its appropriate start time. It actually works, and plays coherent audio just by stuffing the entire score through like that.
But then, say I want to render an audio file... Since it's in several hundred buffers the only way would be to capture everything as a separate media source and I didn't want to do that. Moreover, the NES doesn't work that way, and having each note as its own buffer resulted in them overlapping and producing an inauthentic sound. What I wanted to do was have a single buffer for each channel, so they could be mixed and rendered appropriately. I also hadn't even started the pulse channels for the leads.
This was all implemented in the last couple of days, and I'm quite surprised how well it came together!
I'm so pleased with it that I'm not at all concerned that this is all orthogonal to the development of a game. But is it? Mario Paint is arguably a game. Sure, it also contains art and animation elements as well as music creation, but how about Little Sound DJ? Is that not a game? I'm not even sure whether I care. I'm riding the wave, and so far have exceeded my expectations.
Ultimately, I think I'll avoid being disingenuous by trying to stretch the definition of a game, and instead just take the position that a music engine is an essential part of developing a game, and if that does turn out to be all that I get to, so be it. The point of a game jam is that there is limited time and limitless areas of potential focus, so in a sense it represents a no-win scenario. What the developer chooses to emphasize and neglect becomes one of the primary forms of expression.