There is a modification to an original Game Boy that involves replacing the internal crystal oscillator with one of a different value, documented by the genius Gieskes. Often, a value of 2MHz is used to replace the default value of 4.194304 MHz because 2MHz crystals are easy to find in shops and on the internet, or at least thats what I do.
However, this creates a problem, in the sense that the crystal oscillator is responsible for controlling all timing aspects of the Game Boy including the frequency pitches of the pulse oscillators.
As a result, the underclocked Game Boy plays back just under an octave lower than its unmodified counterpart. This tuning difference is annoying and means that its not very satisfying to use an underclocked Game Boy at the same time as a normal Game Boy or any other instrument.
The idea for a solution to this problem comes form Tom Gilmore aka 10k.
The easiest way to remedy this problem is to simply replace the tuning table inside of LSDJ with a newly created tuning table that uses 4Mhz as a master clock source (which is 2 * 2MHz) instead of 4.194304 MHz. As a result, a C3 will play back on the unmodified Game Boy as a C2, instead of some disgustingly out of tune B or something similar.
Open up the LSDJ ROM in a hex editor. I use Hex Fiend for OS X. Find the tuning table in the LSDJ, which starts just after location $6D30 with the bytes 2C 00 9C 00 06 01 etc. Select
216 bytes starting with 2C and 00.
Now, paste the following 216 bytes over that area of memory:
Save your ROM file, flash it onto a cart and then pop it into your underclocked GB. Enjoy! You can sync your normal Game Boy as slave from your underclocked Game Boy as master.