Nemesis wrote:You can only set independent frequencies for channel 3, but every operator in every channel has a "multiple" register, which allows you to set that operator to a harmonic ratio of the common frequency for that channel. The available settings are 1/2, and 1-15. So, even though the common frequency might be 440, you could set operator 1 to 1*freq, operator 2 to 3*freq, operator 3 to 5*freq, and operator 4 to 7*freq using the separate mul register setting for each operator.
The completely separate frequency registers for each operator which you can set for channel 3 allow you to set frequencies for each operator that are inharmonic, which is actually not that common a thing to require. The separate detune register for each operator can be used to achieve slight inharmonic adjustments for each operator, so the completely separate frequency registers are only needed for more severe detuning, or dissonant sounds.
Here's a new version that plays VGMs that use the PSG and/or the YM2612.
DAC timing is still a bit off, so songs that use the DAC may play a bit too fast or too slow, but overall it works quite well both on HW and in emulators.
mic_ wrote:Here's a new version that plays VGMs that use the PSG and/or the YM2612.
DAC timing is still a bit off, so songs that use the DAC may play a bit too fast or too slow, but overall it works quite well both on HW and in emulators.
It includes the VGM packer I've been talking about in another thread, a ROM builder and a player binary (plus the source code for all these things).
Just fire up the ROM builder, drag & drop the VGM files to the listbox (VGZ isn't supported by the ROM builder atm) and press Build. You should get a file called VGM_PLAY.BIN that you can run on your genny or in an emulator.
There are still some quirks.. like that the ROM builder and packer don't accept file names with spaces in them, the playback code doesn't clear all sound registers when you switch to another song, and PCM timing is still a bit off for some songs.
The inaccuracies seem to occur when a lot of short delays are used, like one sample or two samples each. In those situations the playback rate becomes slower than what it should be.
One example of such a song is the last song from Gods ("Complete tune").
Looping would be totally messed up for some songs because 1) the packer would generate loop offsets that were slightly off, and 2) the player only used the lower 16 bits of the offset. I've fixed it now.