Well, with the modulation, I applied what you said, and for most songs, it comes out very accurate, but with the Rocket Hideout (very high modulation rate and depth), it just sounds all wrong.
As to the triangle volume, I'm still using the 127, 127/2, 127/4 model (albeit with different numbers, since I keep raising the volume to try to find an accurate point).
I think I currently have it as 1 = 127 * 0.8, 2 = 127 / 1.1, 3 = 127 / 1.2, and yet, it STILL sounds FAR too quiet in most songs. I can't understand the lack of accuracy with it, tbh, it's bizarre.
Do remember, it was a whole new music engine. That necessitates the loss (or changing) of some of the previous features. The reason that the emulation of actual GB carts works so well is that it actually uses the original music engine which is built into the carts themselves. Don't misunderstand, the GBA is physically capable of emulating the music perfectly, it's the sound engine which isn't.
A music table is (in Gen 2, at least) a simple list of pointers to the music headers. In Gen 3, it has extra data which tells the sappy engine what type of song it is. Used to put sounds/fanfares into a different memory location, I believe, so they don't interfere with the "main" songs.
If there is no table in the Gen 1 ROMs, we'll have no choice but to put all the pointers in the ini, sadly. I can't find one, but I'm assuming it follows the same format as Gen 2's. Problem is, I tried "pointerifying" one of the header offsets, and found no reference to it anywhere in the ROM, so I'm bemused.
Thing is, GBC pointers look nothing like a GBA pointer, and they can be confusing to get to grips with.
I'll give you an example: Say we want the pointer to 0xE906E (which happens to be the music table location in GSC (USA))
First, you divide it by 0x4000 and take the INTEGER DIVISION (so ignore anything after the point) result. This number is known as the ROM Bank.
In this case, it's 0x3A.
Now, subtract (0x4000 * 0x3A) from 0xE906E -> you get 0x106E.
Now ADD 0x4000 to that number and then reverse it: 0x106E + 0x4000 = 0x506E
Reverse: 6E 50
Finally, append the ROM Bank to the front of it and voila, one GBC ROM Pointer: 3A 6E 50
Confusing, huh? It makes sense in terms of the GBC hardware though. They had to make use of extremely limited memory, and as such, loaded chunks of 0x4000 bytes of the ROM into memory as and when it was needed. The memory location this started at was 0x4000, explaining why there's an additional 0x4000 added to the pointer.
It actually references memory location 0x506E in memory when ROM bank 3A is loaded. Make sense?