[linux-audio-dev] EVO spec 0.0.1

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-dev] EVO spec 0.0.1
From: Richard Smith (ras2_AT_tant.com)
Date: Wed Jul 19 2000 - 21:57:22 EEST


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 (rsmith_AT_bitworks.com) 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.

 


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Wed Jul 19 2000 - 11:05:40 EEST