Last Friday I was over at Mike Bailey's house discussing what EVO's feature set needs 
to
be.

Since then I have been preparing for a vacation that starts on Friday and getting
everything squared away at work has kept me really busy.. I am just now catching up on 
the
list mail.

I see that Mike has already posted a few of his ideas.

What became most apparent to me as we were going over all the UI blueprints that he has
created in word is that it will take me WEEKS to transcribe it into a written spec doc.
And
even after I have it written down it still probally won't be as descriptive as just 
looking
at the mockup he created in word.

So what I think needs to happen is for all those people who were interested in working 
on
the UI contact me off-list ([EMAIL PROTECTED]) and lets see about getting you a copy 
of
the word documents so that you can help us refine the interface.  Also if anyone 
want's to
spend the time to convert the word 2000 docs into web pages that would be really 
helpful.
Word has a "Save as Webpage" option but the resulting pages it generates only 
marginally
resemble the original layout.

Also I was thinking about createing a SourceForge project for EVO.  Anyone see a 
reason not
to?  It will give us a list for EVO developers plus web and ftp space.

Lastly I am including what written specifications Mike did come up with before we 
agreeded
that this was going to take forever.  Even though it's incomplete I post it because I 
will
be leaving thursday and won't really be active again until after next week.  (I do 
plan to
try and read the archives while out though)

I left Mike's original wording in place and everything in between the <>'s are my 
comments.

===================================================================
Begin Spec 0.0.1

EVO  PROJECT  SPECIFICATION   OUTLINE   VERSION  .1


WAVE  RENDERING :

A method of triggering the audio files directly from the harddrive with the ability of
routing the signal to configurable outputs for multi-output sound cards.
This method allows for large size audio files to be triggered without the constraints 
of
ram.

< Duh.. Thats what this is all about  *grin* Just kidding Mike.  The configurable 
outputs
for multi-output sound cards hasn't shown up any any framework example though>

GESTURE  MODELING:

A program structure that is somewhat like physical modeling synthesizers but isn't
dependent on preset waveguide algorithms but rather uses real world sample waveforms 
that
mimic the technique or property of a particular instrument that is being modeled which 
can
be manipulated by DSP functions like audio convolution to help morph in between various
gestures for realistic performance and detail.
EX.

A TENOR SAXAPHONE MODEL:
   ELEMENT 1: BREATH NOISE WAVEFORM
        Velocity signal from breath controller can be used to manipulate
                the gain and color of the breath samples and a second controller
        can crossfade the point where the breath noise stops and where the
        Actual pitch samples begin

   ELEMENT 2: PLUNGER DOWN
        A simple layered element of key sound clicks for each key sampled
        with plunger striking down and performed back by key attack of
        the midi controller.
        Volume controlled for presence in mixes and can be randomly generated

   ELEMENT 3: KEY CLICK UP
        A simple layered element of key plunger release sounds for each
        key sampled with plunger releaseing and performed back by key release
        velocity of the midi controller.
        Volume controlled for presence in mixes and can be randomly generated

   ELEMENT 4: VELOCITY BLOWN PITCH SETS
        Layered element that uses audio convolution to morph between each
        velocity element pitch set in real-time so that when the breathnoise
        element is off the pitched sets are enabled and the varied velocity
        sets are morphed in and out depending upoun  the signal from the
        breath control velocity Control.

   ELEMENT 5: GROWL SOUND PITCH SETS
       Layered elements that uses audio convolution and can be morphed
       in and out of the VELOCITY BLOWN ELEMENTS for smooth interpolation
       and reproduction of gesturing]

   ELEMENT 6: VIBRATO PITCH SETS
               Layered element that is assigned to a separate enable controller
       than from the previous elements and can be smoothly morphed in
       and out of any other element that is enabled.


< Ok... I don't begin to claim that I understand totally what he is getting at here 
(even
with him trying to explain it to me)  It seems to me that everything Mike wants here 
can be
acheieved with mixing samples in and out of the audio stream depending on key and
controller messages from whatever device you choose to send them. But Mike seems to 
think
different  Part of the problem for me is that I don't quite have handle on all the 
terms
used to describe various types of fadeing and mixing effects.   Perhaps some kind soul
could produce a glossary of terms so that we can all begin using the same terms to 
mean the
same thing>


AUDIO  CONVOLUTION: (AUDIO MORPHING)
In graphics convolution and morphing techniques you have two or more pictures smoothly
interpolating graphic properties like color hue ,texture ,size ,shade ,light ,etc.
In audio we have properties like pitch,freqeuncy,amplitude,resonance,.etc.
We could use this technique for  crossfading that allows for smooth continuos morphing 
from
a source sound to the target sound or multiple target sounds to recreate physical 
modeling
techniques or new experimental sounds that don't exsist in the real world. (Applied as
real-time performance or as a DSP wave process) The behavior of a linear, 
continuous-time,
time-invariant system with input signal x(t) and output signal y(t) is described by the
convolution integral The signal h(t), assumed known, is the response of the system to a
unit impulse input. To compute the output y(t) at a specified t, first the integrand 
h(v) x
(t - v) is computed as a function of v. Then integration with respect to v is 
performed,
resulting in y(t). These mathematical operations have simple graphical interpretations.
First, plot h(v) and the "flipped and shifted" x(t - v) on the v axis, where t is 
fixed.
Second, multiply the two signals and compute the signed area of the resulting function 
of v
to obtain y(t). These operations can be repeated for every value of t of interest.

< Danger Will Robinson, Danger.  Heavy math plagerism Alert.  Mike basically lifted the
above paragraph from webpages off the net.  "I don't understand it but it sounds cool".

The feature that Mike wants out of this is being able to make his gesture modeling as
realistic as possible.  I leave it to someone who understands this better to tell me if
this is the right tool to do it. >


AUTO-MAPPING :

This feature is a set of automatic DSP functions and data filing macros that speed up a
sampling project by providing the framework of pre-defined rules and variables given 
to a
specific instrument or project that is to be recorded. (Somewhat like an instrument 
wizard
and template)

1. PITCH DETECTOR   [on/off and pitched or static mode]
     This function would detect the pitch of the sampled waveform and
                     automatically name the waveform and assign  it to the appropriate
     key range automatically.

< What Mike wants to be able to do here is when you are creating a sample set be able 
to
tell the artist to run a slow scale with silence inbetween notes.  EVO would determine 
the
closest match to the pitch of that note on the keyboard and assign it to that key.  
This is
to try and remove the "Ok give me a A above Middle C",  "Good" "Now B", "Now C", etc 
from
the process>

2. VELOCITY DETECTOR  [on/off]
     This function would detect the amplitude of sample and automatically
     assign it to the appropriate velocity range either used in conjunction
     with pitch detection or manual selection of key range.

< Again another feature to help simplify generating sample sets.  It would 
automatically
assign a velocity range to the sample.  Note that this would not be a loudness in the
absolute sense but more of a relative setting.  Ex.  There would be a velocity 
divisions
setting for the sample set you are taking.  Lets say this is set to 5.  You would then 
tell
the artist to give me 5 of the same notes from soft to loud.  EVO would sort the 
samples in
order of increasing loudness and assign the quiet one to velocity ranges 0-24, the next
loudest to 25-49, etc. >


< I thought I understood everything in the following sections but I seem to have 
forgotten.
I will try to get clarification on the following 4 feature when I return from vacation.
        Sorry Mike... I THOUGHT I understood>

3. AUTO-LOOP  [on/off (zero cross enabled)]
     This function would allow for the user to create LOOP TEMPLATES of a
     specific type of sound like a bass ,vioiln ,flute ,sax ,synth,..
     (any infinite sustain loops) and be able to automatically apply to 
     new samples of the same type of any length and use the template as 
     a basis for finding the best loop section and proportionally scaling
     samples of durations longer or shorter than the original sample template.

4. AUTO-FADE   [on/off and type and length from end (determined by auto length)]
     This function would allow the user to enable the computer to
     automatically fade samples in the same group to the same decay time.

5. AUTO-LENGTH  [on/off and length of audio]
     This function should allow the user to set preset sample waveform
     lengths for the sampling project wizard to both save memory and create
     perfectly tuned samples.

6. AUTO-SHAPE [on/off]
    This function would allow the user to assign an automatic waveshaper
    to all groups of samples for precise sounding amplitudes and waveform molding.

7.THRESH HOLD SAMPLE  [on/off and min threshhold in DB]
    This function would  enable recording of a sample when the amplitude
    threshhold was met
    Scalable in DB and has a set preroll parameter that makes sure to catch
    the beginings of the attack portion of a sample.

< Just like the trigger level on my Digital Oscope >

3-DIMENSIONAL OPEN SOURCE INTERFACE:

Open source 3D graphic interface with design mode for creating
customized skins and textures.  Features to include stretchable dividers
and resizing windows.

< This is where you just have to see the word files he has created.  They look great! >

CONTROL-WARE  :

Control-ware allows the user to create custom controller interfaces for there projects.
All of EVO's parameters are assignable to customized controls on the project level so 
that
you could have different control-ware layouts for different channels if you would like.
EX. Assigning channel one to a program called "ANALOG SYNTH" aptly named to fit what 
the
program is modeling. You can assign to channel one a controlware interface that has 
all of
the useful real-time control parameters that would be associated with the program 
"ANALOG
SYNTH".

< I think what he wants here is just the ability to store ALL the setup information 
with a
project file.  I know his application is to remotely be able to configure the sampler
exactly back to the way is was when the original song was created. >

INTEGRATED  SEQEUNCER  :

The main feature for the seqeuncer is for it to be integrated internally with EVO so 
that
all of the programs editors are available within the seqeuncer in a visual 
representation
so that operations like LFO rates, Reverb, Decays, Envelopes, Noise gates, Delay Beats,
Filter Decays, etc. The next important feature is for the track parameters to include
access to the project and program selection.

< This could also be accomplished with a external sequencer that just understood how to
exchange all the above data with the EVO system. >

Modes and search function that stores bank style searches instead of accessing some 
type of
instrument name list. The seqeuncer simply shows all of the compatible files on the 
hard
drive and allocates in them by the MD5 HASH of the file so that  there is one big 
bank-set
with search files used as sub-banks so that when a song is created in the seqeuncer all
instruments associated with the song and channel as well as volume/pan/tuning/velmap
information are remembered without having to load some sort of bank set that matches a
particular song.
(When files are revised it retains its original MD5 HASH) or (when a file is deleted
/corrupted that was associated with a song the following data is stored in a note file 
that
tells the seqeuncer what the name of the file was and from what folder name it was
originally stored as well as its original MD5 HASH so that you can either re-import 
that
file to that same file location or send it to a new one.)

< Mike gave me first hand examples of why this would be really useful.  Basically 
there is
no common instrument name link between the sequencer he uses and giga-sampler.  So 
when you
load up this really cool song in the sequencer how do you go about remembering what
instrument samples you had loaded on each channel?  It's a bitch.  He showed me the 
system
that he had worked out for himself which worked mostly ok but had several problems.
Especially when you begin to maintain a large ammount of samples.

In EVO (and anything compatible) the sequencer and the sampler would both use a common 
ID
for the instrument sample so that when you load up a song the proper samples are auto-
magically identified and loaded.  Samples the song uses that you don't have would be
identified and you can ignore, be promped to choose a replacement, or the let the 
program
choose for you using the verbal description system mentioned in the INTEGRATED 
LIBRARIAN.

The common ID would be the MD5 hash of the sample and its configuration info.  That way
every sample would automatically have a unique ID that is totally independant of the 
name
and the integreity of the sample could be checked as well. >

ALGORITHMIC  OPERATORS :

All control sources and layers can be manipulated by algorithms separate from the 
real-time
effects and program editors for extreme processing power.
Combine controllable filters, pitch, amp generators, EQ, Sine, Square, Triangle, FM
synthesis processors to manipulate the sound using traditional audio DSP.
All parameters for each relevant process are completely controllable from remote 
hardware
or internal Control-ware.
All of the parameters are to be in beats per minute as well as in real life 
measurements
like hertz and decibels.

REAL_TIME  EFFECTS:

Real-time audio effects are available on sixteen channels of midi routed on the layer
level.
Reverbs, Delays, Echo, Chorus, Flange, and Distortion.
All parameters for each effect are completely controllable from remote hardware or 
internal
Control-ware.
All of the effects are to be in beats per minute as well as in real life measurements 
like
hertz and decibels.

INTEGRATED  LIBRARIAN :

Integrated librarian for storing and retrieving EVO files with intelligent search and
allocation functions for easy archiving, searching, storing, and organizing.
All EVOS files can be tagged with keywords for retrieving files by using specific 
language
like blue, bright, dark, heavey, light, distorted, clanky, metallic, soft, liquid, 
organic,
airy, breathy, dirty, evil, majestic, soaring, floating, pulsating, wacky, random, 
fuzzy,
popping, fat, thin, hyper, static, low, high, etc.
This allows the user to create identifiers to any of the files that EVO uses.
Project Files, Program Files, Layer Files, Element Files, Wave Files, Effect Presets, 
Skin
Files, etc
One could create a system of searching for banks of sounds that match the verbal 
identifier
that your looking for likes dark pads or lush strings. By using tags as well as program
names you can search by type (bass) or by the verbal description of a bass like (silky
fretless as opposed to a thumping jazz fretless.)


< When you start dealing with the ammount of samples Mike has loaded on his HD you 
quickly
realize why this feature would be VERY handy. >

CD  IMPORT PROGRAM:

1.The import feature should include compatibility with the most common formats.
   SF2, WAV, AIFF, GIG, AKAI, ROLAND, KURZWEIL, EVO.

< Pending spec availability... or someone to RE it>

2.Demo File function will allow custom midi files to be used to hear an instrument 
before
it is imported to harddisk. (Specific midi files would be used for specific instruments
that are being demoed.)

< When you are importing a library CD there isn't any good way to listen to the sample
before you go through all the trouble of converting it and adding it to you library.  
You
could create test midi files for various instrument type like Piano, drums, bass, etc.
Then if you wanted to here what a sample was going to sound like EVO would convert it 
to a
tempory directory and play the midi file with that sample.  You could then choose to 
add to
the library or to dismiss >

< I am not totally sure about the next few options... >

3.Batch converter will allow search from multiple partitions at once and have the 
ability
of saving batch
Searches to cd names for quick reinstall of files if ever needed as well as the "batch 
as"
project or program function allows the user to create project files or progam stacks 
before
they are imported to hard drive.

4.A search function will allow batch conversion of like named instruments or file 
sizes.
Must have the ability to store search key words like: (Bass, Piano, Dark, Bright, Big,
filter, etc.)

5.Two-way conversion is supported so that you can import as native format or as the 
host
format of EVO
Ie. (Akai stays akai upon import or Akai can be converted to EVO for further 
enhancement)


PROJECT TEMPLATES:

Create sample instrument procedure templates for building similar sampling projects 
into
wave-modeled instruments quick and easy. A template contains all relative parameters 
for a
specific project to save time in the instrument creation process.
Parameters such as the amount of layers, elements, waves and velocity cross-switching
levels, volume, panning, envelope settings, LFO settings, controller assignments, 
effects
settings,loop section ratios and temporary name fileing for each element or technique
created


< Well thats what we have so far...  The rest is fill in the blanks...

Erk... It's late.. Must sleep... >


PROJECT EDITOR:

The project editor is to include the following features:
1.
2.
3.
4.
5.
6.
7.

PROGRAM EDITOR:

The program editor is to include the following feaures:
1.
2.
3.
4.
5.
6.
7.


LAYER EDITOR:

The layer editor is to include the following feaures:
1.
2.
3.
4.
5.
6.
7.


ELEMENT EDITOR:

The layer editor is to include the following feaures:
1.
2.
3.
4.
5.
6.
7.








































Reply via email to