[sdiy] PPG my ESQ

Rainer Buchty rainer at buchty.net
Wed Jul 13 22:15:56 CEST 2005


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

Neat. Looks like the tables are exactly where they are in SQ80 OS1.8 (of 
which ESQ1 OS3.5 is essentially a backport, so I'm not too surprised).

You'll find the multisample mapping from $1000-$14cf/OSLO -- and 
indeed being identical to the SQ80 waves, i.e. also containing 
information about the SQ80-specific waves.

Same goes for raw parameters at $14b0-$170b/OSLO.

Wave names are stored at $63b8-$6477/OSLO, but this time restricted to 
the original 32 ESQ1 waves. No space left for additional wave forms at 
that very place, so you might use some other memory area for wave names 
and change the hook at $4beb/OSHI (=$abeb effective memory address).

Spare memory area for own experiments you have from $2558-$2fff and also 
from $678e to $6fff, but then you need to adjust banking of OSLO (which 
gets banked 4k-wise into $7000-$7fff), i.e. setting the DUART to select 
bank 2/6 instead of bank 1 or using the respective bank switch routine 
in OSHI.

Also spare are $7223-7fdf in OSHI; since OSHI is completely available 
between $8000 and $ffff, this might also be an interesting area to use 
since you don't need to fiddle around with OSLO banking.

Although I'd use that "upper memory" area for hooks and extensions, like 
selecting the desired OSLO bank, get required data, and changing back to 
the original bank.

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

...and don't I have >20 replacement boards left? :)

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

Go ahead. The cartridge slot is your friend: from $0000-$0ff0 the 
"CARTA" bank is stored, $1000-$1ff0 holds "CARTB". Just flag $1ffd/$1ffd 
to let the ESQ know about data present. You could even run your very own 
code out of a cartridge, if you put the "magic cookie" 0x55 into address 
$1fff of the cartridge. (Forget about interrupts, though, since these 
are hard-coded to routines in OSHI, i.e. the reset vectors are not 
alterable without patching OSHI first.)

Timing is no problem as long as you update memory on the "wrong" E phase 
(E=0) while the 6809 is not accessing the bus.

However...

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

...that wouldn't work as expected, since the ESQ1 will translate the 
sound data into a different data structure for sound generation; this 
happens once at program change for a given channel (keyboard=track0, 
track1-8 of sequencer).

Edit data is translated with every new keystroke, so still impossible to 
just mangle the edit data for *realtime* alteration.

So what you need to do for realtime efforts is to directly mangle with 
the realtime data; however, this requires diving deep into the voice 
assigner to keep track of which track (see above) is assigned to which 
hardware voice realtime data slot. Not impossible, but a major effort.

Rainer



More information about the Synth-diy mailing list