Yes, it has. As you might know (if not, have a look at page 202 of
your manual :) the waveform can range between 0 and 255 - normally, the
user can access only 0 to 74 (SAW to DRUMS5). Each of these is a "virtual"
waveform made up of 16 multisamples built from zones, this zone entry points
to a waveform parameter set (raw wave, coarse & fine tune plus an additional
parameter).
How to access
Normally, we can't access waveforms above 74 - but by editing program
dumps we can. If you want to experiment yourself, the oscillator waveforms
are stored at positions 0x56, 0x60 and 0x6a of an SQ80 toolkit's program
dump (or at these locations plus P times 102 if you want to edit bank dump
files, P is the program number ranging from 0 to 39). The OS is prepared
for these unusual waves since it lists them as WAV075 to WAV255. But what
does happen internally?
Tech Talk (referring to OS Version 1.8)
Looking at the OS sources we know that the wave number is multiplied
by 16 and taken as an offset to the multisample table base (pointing to
the appropriate waveform - read: multisample), the played note (MIDI key
value) is divided by 8 to get the referring offset to the respective raw
sample pointer (multisample zone) - this pointer now is multiplied by 4
and taken as an offset to the raw sample parameter base. (Confused now?
Read again slowly }:-)
Now, what a "hidden" waveform really does is just pointing somewhere
"behind" the multisample table accessing the whole area between $1000 and
$1fff of ROMLOW as multisample table (instead of $1000 to $14af). These
values are taken as an offset for the raw sample parameter table at $14b0:
If the addressed raw wave is between 0 and 150 just the ordinary waves
($14b0 to $170b) with their parameters are accessed, between 150 and 255
we point somewhere "behind" that table (up to $18af) into other tables
or even menu routines which results in wrong wave offsets (accessing wrong
pages), incorrect wave sizes and weird playback frequencies.
From this it´s clear that these hidden waveforms might sound different
on diverse OS releases as that tables and code behind the wave might not
be the same on the various OS revisions.
So what does it sound like?
Mostly, these hidden waveforms are quite unusable since the waveform
changes drastically from one sample zone (8 keys) to another. But if you
stay within a zone you can get very athmospheric, dense and noisy sounds
- sometimes you hear the waves you already know but somewhat distorted,
crackling or with a underlying hiss. If you are composing "ambient" music
such as Future Sound of London (just to name an example I like very
much) you might find these waveforms useful (especially when playing melodies
you get some sort of rhythmic "wave sequencing" due to jumping between
very different waves).
What about expanding waveforms?
Looking at the OS that´s an easy task: We just need to point to
different memory locations holding multisample zones and raw wave parameters.
Unfortunately, there´s not much space left in the OSROMs so we need
to do this in an extra memory area, easiest would be a special cartridge,
more sophisticated is a ROM expansion done by fully decoding the memory
area between $6000 and $6fff where the peripherals (DOC, DUART, FDC, Mapper
and DAC) reside.
|