EXS Version 2 WantList -- 1: New Zone Parameters:
2002-07-09 by erk_relativity
NEW ZONE PARAMETERS:
xmix map: [off/A/B/ ...]
xmix source: [mid/vel/wheel/ctrl/rand1-x ... /cycle1-x ... ]
xmix sens:
pitch source [mid/vel/wheel/ctrl/rand1-x... /cycle1-x...]
pitch sens:
///USAGE:///
Basically, direct control of a zone's level and/or pitch, with
controlling values routed via factory-preset value mappers.
==MAP==
Assigning a zone to use preset range "A" or "B", allows an increase
in controlling value to bring the zone's level up ("A" zone) or down
("B" zone). Switch to "off" and you have default behaviour (no
change).
=SOURCE=
[velocity]
Layering two zones and setting one to "A" and one to "B", with source
set to "velocity" then gives velocity crossfading.
[wheel/ctrlX, ...]
Setting source to a different controller source allows manual real-
time control.
Note that each zone is still totally independent, in this scheme a
zone being crossfaded doesn't need to "know" who its partner(s) are
(or even if they exist), it's just responding to control values
routed via a preset lookup table. Setting different combinations of
zones to different controller numbers lets you adjust levels (or
other things) real-time via a faderbank, or from environment faders,
so you can adjust relative zone levels or mixes inside your patch as
part of the song.
[randomX]
Setting the source to one of the "random" sources generates a new mix
value randomly for each keypress, so if you have layered and xmixed
string samples or hihat samples, each note played could have a
slightly different (or very different!) mix balance. Very useful for
making a repetitive hihat track come alive (some drum machines have
a "human feel" function that does this).
Set zones to use the same random[X] source if you want them to be
controlled by the same random values (eg random mix A/B), set to
different random[X] sources if you don't.
[cycleX]
"Cycled value" sources run through one of a preset chain of valued
when triggered, so "cycle1" might just alternate between minimum
and maximum, cycle2 might step between three values, and so on.
=SENS=
"Sensitivity" would adjust how strongly the mapped source affects the
mix, so for two zones being crossfaded, low depth values mean that
you get almost a 50:50 mix over the full range with only slight
variation via controller, the default central value allows continuous
control from "full on" to "full off" over the controller range, and
higher values produce "shelving" with a smaller central transition
range.
=PITCH SOURCE AND SENSITIVITY=
Having zone pitch source and depth parameters would allow similar fun
things - you could have the pitch of a sound's percussive component
altering with velocity while the tonal part had constant pitch (quick
cheaty resynthesis), or you could have a subtle random variation in
pitch on each keystrike (humanising a boring string patch or making a
hihat line more interesting without affecting the other drum
instruments), or a more dramatic variation for arpeggiator-style
cycling pitches, or special effects (eg random-pitch noise shots as
part of a drumkit). Imagine a layered hihat where each strike
simultaneously used a different mix of hihat samples (>Random1) and
an independent random variation in pitch (Random2), and allowed a
third "strike" sound component whose level was independently
adjustable by controller number and have /it's/ pitch cycling around
a pseudo-random loop (random3) or alternating between a pair (or
sequence) of pre-set values (Cycle1, 2, 3...)
Fun!
//ADVANCED APPLICATIONS//
If we wanted to get carried away, there could be a range of other
preset "zone mix" or "zone window" options that could be called up to
facilitate fading or switching between more than two layered zones.
So assigning a zone to use map "3f-A", "3f-B" or "3f-C" might call up
a response map that corresponds to the start, middle or end of a
three-zone fade, or using "3sw-A", "3sw-B" or "3sw-C" might allow the
zone to sound at full level, but only over a window representing a
(preset) third of the range.
Taken together, these extra parameters would mean that you could then
do things like taking a guitar patch and fading a feedback tone in
and out with the modwheel, and using another controller to bend the
pitch of the feedback while the note stayed constant, or have pseudo-
arpeggiator effects operating on part of the sound, and alternating
background fret noises on every other note, or every third note
(and/or have the background "fretnoise" sample changing pitch or
level at random, or cycling around a loop).
Or you could have the ultimate sampled TR808 kit, where the user can
call up a range of samples on different keys by controller number
(one fader switches between different kick samples, another calls up
different snares, etc) or have a range of snare samples that can be
continuously mixed between, and the varying mix played into a song,
or have the mix between three or four similar 808 snare samples
changing on every note, to provide a nice natural-sounding variation.
I think all this ought to be fairly easy to implement, it's not
adding any complicated extra layers ot the EXS structure, just a few
extra parameters to the zone edit bit, and adding a few preset 128-
byte lookup tables, and implementing the random/cycle presets.
Oh, and some sort of patch "notepad" would be handy, so that the
person writing the patch could tell the user exactly what's been
programmed into the patch for controllers, human feel, expression,
etc.
=Erk=