-
Hacking a Yamaha YPT-200 for I²S digital audio output
01/13/2025 at 23:28 • 0 commentsThe Yamaha YPT-200 is many people's first experience with a digital piano. On top of that it comes equipped with a catchy demo track and a plethora of other great songs.
The MIDI output of the keyboard is trivial to record, but no soundbank does it justice. To record the original sound in the highest possible quality, the device can be hacked to gain access to the I²S signal.
To do this I first obtained the service manual. The service manual revealed that the keyboard uses an AK4385 DAC, denoted IC201, located on the DMLCD circuit board. The pinout of the AK4385 is as follows.
Conveniently, the vias used to carry the I²S signals to the other side of the board don't have solder mask and can be easily soldered to. They are located next to the ROM chip. The relevant vias are highlighted below, black being GND.
I soldered jumper wires to them (unrelated colors) and secured them in place with hot glue.
The enclosure has a lot of clearance between the shells on the back, so the jumper wires can easily be left hanging out. They were connected to a logic analyzer.
You will need to crank the volume to the max to get the highest resolution, as the volume is controlled in software on the keyboard. You can silence the speakers by plugging a 1/4" TRS JACK into the headphone output. I would not recommend a TS JACK as that would short out the right channel of the amplifier, which is connected directly to the output. I used a 1/4" to 3.5mm adapter with nothing plugged in for this. The audio can then be recorded using PulseView with a sample rate of 24MHz. An I²S decoder can then be added and the binary decoder output view opened.
After the entire recording has been decoded (which may take a while, yay Python), the binary data can be saved as a WAV. The WAV will then need to be edited in a hex editor to fix the sample rate, since it's hardcoded to 16KHz in sigrok. From offset 0x18 set the bytes to 44 AC 00 00 20 62 05 00 08 00 20 00. This will correct the sample rate to 44100Hz, bytes per second to 352800, bytes per frame to 8, and bits per sample to 32. Enjoy your crispy 24-bit audio!
Here are some sample recordings: