Jeez this took me back to making my own microprocessor keyboard days.
Their system is so clever and it simply amazes me what they did to get so much out of such low clock rates and little memory. Fascinating!
First off, everything tulamide found out I agree with completely. I took my own path and came to the same destination.
What threw me for a while was that there seems to be an error in the chip documentation. If you have a
larger wavetable you have to read it out
faster to achieve a given pitch, not slower. They inverted the meaning. My guess is the document writer was not the designer.
Anyway, the WSR value in the spread sheet gives more information than we need in fact.
The lowest 3 bits (0 to 2) are for the resolution value and this is only needed for the DOC hardware to get in the right range for the pitch called for. Bits 6 and 7 are for the ROM address decoder, so again we don’t need them. What we
do need is bits 3, 4 and 5. These 3 bits describe the code for table size (5 is the MSB). See the chip spec sheet table below.

- WSR interpretation .png (24.41 KiB) Viewed 25443 times
The wave ROM is divided into blocks or "pages" of memory. Each page is 256 bytes long. A waveform can be made up of several whole pages concatenated, or can be a minimum of 1 page (256 bytes).
So we take the base address (starting address of the waveform) from the Wave ROM page in the spread sheet. Then we look at the 3 relevant bits (3, 4 and 5) to find the
size of the whole waveform table, from the table above. Then we divide this size by 256 to find the number of pages used up. If we then add this value in hex to the base address we get the end of file/start of next wave in the ROM.
I’ve checked this method on several randomly selected entries and it’s always worked. I see that the later ROMs #2 to #4 contain much longer waves so there are fewer available in the memory space.
So, to sum up:
The start sample number for a waveform is the Wave ROM page number x 256 (all in decimal).
The end sample number is the start number + the sample number given by the table, based on the 3 bit code embedded in the WSR value. Of course it’s a zero-based count so the first sample is numbered 0.
Here’s a worked example:
If we look at ROM #2 “bowing 2” the WSR is 74h so the binary is
01110100
which means the length is referenced from xx110xxx and we look up 110 in the table to be a length of 16384 samples which is 16384/256 = 64 pages. In hex this is 40h. The base address of the wave in hex is 40 and, sure enough, the next wave starts at 80h. So this complete waveform starts at sample no. 16384 and ends at sample number 32767 (not 32768 because that’s the start of the next waveform).
I do hope this helps the cause!
Cheers
Spogg