[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