Kawai K4: Really a 16 bit synthesizer? Only partially!

I started to analyze the K4r. The first thing I did is to dump the contents of the Firmware EPROM and the Wave ROMs.

I dumped the firmware just to verify that the content on the chip matches the firmware image that I already had on disk, which it does.

Wave ROM dumps

In contrast to the K1, the K4 has three Wave ROMs in total.

From left to right: Kawai K4 Wave ROM chips U40, U39, U38

Nothing unexpected so far. As the K4 claims to be a 16 bit sampler, it was expected that it needs more storage for the samples.

After having dumped all of them, which was very easy due to them being socketed this time, I loaded them into my wave editor to take a first look. I imported the raw data as 16 bit and listened.

Analyzing Wave ROM chip data

While I had no issues with chips U39 and U40, chip U38 (the rightmost one in the picture above) sounded like garbage. What I also noticed is, that the former two chips sounded a bit distorted, had a lot of noise and the pitch seemed to be pretty high.

I looked at the data in a hex editor and was surprised to find content that much more looked like 8 bit samples rather than 16 bit samples. This can be seen by adjacent bytes constantly rising or falling, as below:

I changed the import format and loaded them again.

To my surprise, chips U39 and U40 sounded just fine now! A little bit of 8 bit noise, but nothing unexpected.

K4 Wave ROM chip U39

I guessed that the K4 somehow creates 16 bit samples by combining the contents of the chips together. But I had three chips only, where are my remaining 512k of data that I would need? Maybe the samples are 12 bit?

Chip U38 is special

I took a closer look at chip U38, the chips that only produced random noise so far.

The end of the chip data raised my attention as it looked like sample data:

Chip U38 data

What do we see here? We see eight least significant bits of a sample. This proved that this is not „random“ data but actually raw sample data. It furthermore cleared up that this chip does not contain a nibble for each of the other two chips to create 12 bit samples.

If this chip contains the LSB of another chip, to which chip does this data belong?

This can be tested by looking at the frequency spectrum of all three chips. Obviously, for chip U38 this is mostly noise, but not everywhere. For U39 and U40, we see regular frequency spectrums of sample data.

U38 -Frequency Spectrum
U39 -Frequency Spectrum
U40 -Frequency Spectrum

Do you see it? There is a relationship between the two chips U38 and U39.

Getting 16 bit samples out of two chips

I wrote a small program which combines the contents of these two chips to form 16 bit samples and loaded the result into my wave editor.

Gotcha, now we have 16 bit samples. If you look at these two pictures, you can see the difference immediately. The lower picture has got a much lower noise floor and it sounds much cleaner.

Chip U39 – 8 bit samples
Chip U38 and U39 combined, 16 bit samples. U39 = MSB, U38 = LSB

What about chip U40 then? I also tried to merge chips U38 and U40 but this did not work out, as expected. As there is no data left, the conclusion is that chip U40 is used as a source for 8 bit samples.

Conclusion

Although Kawai claimed that the K4 is a 16 bit synthesizer, this is only partially true as only half of the sample data is 16 bit, the other half is 8 bit.

What they did to hide it is to move all samples with lots of noise, like flutes, the choir, cymbals, snares and others to chip U40 which holds 8 bit sample data.

Samples without lots of noise like the piano, basses, acoustic guitar and others are stored as 16 bit samples. Chip U38 carries the 8 bit LSB while chip U39 8 bit MSB.

What I also found out is that the single cycle wave forms have more multisamples and the PCM wave forms are now partially multisamples, too! Which should give a quality boost compared to a K1.

Nevertheless, the K4 is more similar to a K1 than one might think. Most chips are identical, the firmware dumps look quite similar (same velocity curves, KS curves etc.) and the K4 even has got lots of 8 bit samples still!

Stay tuned, more to come! 👍

Kawai K1 VSTi: I dumped all 200 PHm presets – free download

As you might know, I was always interested to have the presets of the Kawai Phm Pop Synth Module. The PHm uses the same synthesis engine as the K1, the only exception is that the 200 presets cannot be edited. Not even via SysEX, as the PHm neither sends nor recognizes SysEX at all.

The PHm has some presets that never appeared on ROM cards for the K1. Due to a thread on KVR, I asked myself if there is a chance to extract the PHm presets from the device.

I have the device so I opened it and looked for chips that are ROMs. I have not been able to find any chip, so I wondered where the presets are stored. I guessed that they might be part of the Firmware EPROM.

I searched in the net and found the data sheet. This not only gave me the pin layout, but it also revealed something interesting: The EPROM of the PHm is 64kb, while the K1 EPROM is only 32k. This raised chances that it contains the presets.

PIN out of the PHm Firmware EPROM

Dumping the ROM was pretty straightforward, as I did this already for the Wave ROM. The only thing I needed to change is to change the wiring and the code a bit, as the firmware only has 16 address lines.

PHm Firmware EPROM sitting on an Arduino Mega

I dumped the rom and converted it to binary and started to look for the presets. Searching for presets by name didn’t lead to any result so instead, I searched for usual patterns that I already know because of the K1 Single format.

Given that 200 presets need about 20k of space, I quickly found them and began to compare the content against some presets that I know exist on the K1, too (on ROM cards).

Below is a picture. the upper part is the PHm firmware, the lower part is the SysEX of the K1 preset „ID-4 Hold a key“ from ROM card J1-02.

K1 ROM Card J1-02 preset „ID-4 Hold a key“ compared to content of the PHm firmware

After some analysis, the differences are very minor. Compared to a K1 Single preset, the differences are:

  • No sysex header (F0h, …, 8 bytes)
  • No name (10 bytes)
  • Compared to the K1, they slightly adjusted the presets volumes (byte 11)
  • Byte at position 22 is missing in a PHm preset => A bit surprising to me, but apparently Source Mute is not supported by the PHm module
  • No sysex terminator (F7h, one byte)

After I figured out the format, I wrote a small conversion tool that converts all 200 PHm presets to K1 presets. Feel free to download them here! The Zip contains each preset individually and one .syx that contains all 200. The K1v can load it directly.

Download

A small request: If anyone has got a Kawai PH50 firmware, can someone send me a dump? I’d love to extract the Ph50 presets, too!

Note: The PH50 presets are not identical to the PHm, although frequently stated on some websites. Just look at pictures of the device, the preset list is printed on it and it is different from the PHm list.