[sdiy] PPG my ESQ

Rainer Buchty rainer at buchty.net
Sat Jul 9 18:23:45 CEST 2005


>Naturally the PPG or VS tables do NOT match the original ESQ tables and
>internal patches get "funky". That is either good or bad depending on
>your perspective.

Ah, but you can tune that if you adjust both, sample zones (each wave as
seen by the user is indeed mapped to a 16-entry multisample table) and
raw wave parameters.

Since the ESQ1 has much unused space in its ROMs, you can even tweak the
respective pointers and have up to 256 user waves built from a total of
256 individual raw waves.

The tables are fairly easy: each multisample zone covers 8 keys
(starting with MIDI key 0), 16 entries give you the entire 128 key
range.

For example, this is what the SAW wave really looks like:
  fcb $34,$34,$34,$34,$34,$35,$36,$36,$37,$37,$38,$38,$39,$18,$16,$15

We see that the SAW wave maps to raw wave numbers $15, $16, $18, and
$34-$39. The latter are individual SAW wave samples, $18 is SAW2, $16
OCTAVE and $15 SINE.

Each of those consists of 4 bytes, e.g.

  fcb $c4,$09,$00,$00     ; saw.1

First byte is the pointer to the respective waverom page, byte 2 is a
control word (see below), the last two are semitone shift and fine tune;
those last two only apply to "real" samples not just single-cycle waves.

The control word is used for extended wave addressing (bit 7 set: switch
between 128kB sections in the SQ80, most likely unused in the ESQ1 which
lacks the use-CA3-as-highest-wave-address-bit hack), rest is fed into
the wavetable size register, i.e.

bit	function
7	unused
6	bank select (switches between 64kB banks)
5-3	table size (000=256, 001=512, 010=1024, ... 111=32768 bytes)
2-0	address resolution, i.e. which bits of the phase accumulator
	(depending on wave length) are used for address generation
	(000=16-9/2, ..., 111=23-16/9); as a rule of thumb bits 2-0
	should match bits 5-3

To patch your ESQ1 you need to

- create the tables and throw them "somewhere" into an empty space
  (preferrably in the same bank as the old ones to avoid further
  patching of the sound routine)
- adjust the multisample pointer in the sound routine
- adjust the raw wave parameter pointer also in the sound routine
- disable the 32-wave limit check in the edit routine

Assuming, that you run ESQ1 OS 3.5 I can dig for the correct locations.

Rainer






More information about the Synth-diy mailing list