Proper Algorithm for SNES Pitch Modulation

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Proper Algorithm for SNES Pitch Modulation
by on (#150390)
Hello all,

I'm trying to figure out what the proper algorithm is for the SNES pitch modulation. I have implemented my SPC player to use the algorithm specified in Anomie's apu_dsp.txt, which is:

Code:
pitch += ((voice[x-1].outbuffer >> 5) * voice[x].PITCH) >> 10;

The output wave result that I get is an exact binary match output to Blargg's SPC emulator. Here is the output direct from Blargg's emulator for the first 7 seconds of "The Oracle" track from Secret of Mana:

https://dl.dropboxusercontent.com/u/362 ... g_pmon.wav

However, Anomie's algorithm does not seem to modulate the output "enough". What I mean is, when I listen to some tracks that use pitch modulation on various SPC players they seem to modulate quite a bit more. For example, listen to the first 7 seconds of "The Oracle" track from this video:

https://www.youtube.com/watch?v=GJX-s41D3Dc

Of course, one could argue that maybe it's actually the case that the other SPC players are modulating the pitch "too much". Haha.

Any thoughts? It would be awesome if someone could try one of the games with pitch modulation on a real SNES (like Secret of Mana - The Oracle) and see what the output really sounds like. Unfortunately I don't have that particular game. Another game (which I also don't have) that I know that uses pitch modulation in quite a few tracks is Packy and Marlon: Playground 2, House 4, Unknown Song 9, Unknown Song 13