[sdiy] PPG my ESQ

Grant Richter grichter at asapnet.net
Wed Jul 13 21:15:12 CEST 2005


Thank you, Rainer, for all the excellent information.

If it is not too difficult, I would appreciate any additional  
information you may have for entry points and memory mapping for  
indirect addressing of the waveform ROM.

This got me to thinking about what other factors in such "digital"  
devices might be manipulated experimentally. The ESQ would be a  
candidate, I have seem working ones as cheap as $50, and didn't they  
make like 50,000 of them?

For example, if the patch data is stored as a series of 8 bit values  
in non-volatile RAM, an A to D converter could be "wedged" at some  
address location to allow that value to be controlled by a voltage in  
real time. As long as you do not disrupt the internal read timing of  
the micro-p.

A 20 MSPS A to D is only 5 dollars. If you combined that with a  
multiplexor and an FPGA to handle the "false" RAM address latches and  
address decoding, a large number of data points could be made voltage  
controllable in real time with little additional hardware cost.

The idea of starting with a good platform and then modifying it to  
create new synthesis methods has some appeal. You do not have to  
write much code, since most functions are there already present and  
debugged. Plus, adding analog control to strong digital synth engines  
could be musically useful (or produce novel results).

Sort of a higher level "circuit bending" technique.

On Jul 9, 2005, at 11:23 AM, Rainer Buchty wrote:

>> 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