[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference napalm::commusic_v1

Title:* * Computer Music, MIDI, and Related Topics * *
Notice:Conference has been write-locked. Use new version.
Moderator:DYPSS1::SCHAFER
Created:Thu Feb 20 1986
Last Modified:Mon Aug 29 1994
Last Successful Update:Fri Jun 06 1997
Number of topics:2852
Total number of notes:33157

270.0. "Velocity Sensitivity and the DW-8000" by BARTOK::ARNOLD (John E. Arnold) Wed Mar 12 1986 13:17

    In the review of the Korg DW-8000 in the March '86 issue of Keyboard, 
the reviewer states that the velocity sensitivity settings (for volume and 
timbre) range from 0-7.  I thought that the MIDI spec provided for 
something like 128 gradations of velocity.  Am I correct to infer that the
DW-8000 will respond to playing with only 7 or 8 noticeable levels of
volume/timbre change or am I mixed up? 

    How does this treatment of velocity compare to a more upscale synth
like the DX7?  The reviewer didn't mention whether this was "normal" for
velocity sensing instruments or a shortcoming. 
T.RTitleUserPersonal
Name
DateLines
270.1Sensitivity vs SensitiveRSTS32::DBMILLERFormerly GROK::MILLERWed Mar 12 1986 14:1717
    I believe that velocity sensitivity in this case is used to indicate
    the player's normal velocity.  Some people really bang on their
    keys while others maintain a lighter overall touch.  A lower
    velocity sensitivity would mean that the person who banged on their
    keys would get the full effect if not reduced.  A higher sensitivity
    would mean that a person with a light touch would have it 'translated'
    to a heavier attack.
    
    Someone who is used to a non-sensitive keyboard would probably have
    a soft touch, and would have difficulty when first playing a keyboard
    that was velocity sensitive.
    
    Hope that was comprehensible.  A Mirage has 63 settings of velocity
    sensitivity, and the default value is 30, or what they claim to
    be an 'average' touch.
    
    -Dave
270.2A Conjectural ElaborationERLANG::FEHSKENSWed Mar 12 1986 16:5853
    Let me try to restate what I think Dave was saying (I think he's
    right) - An actual velocity (time to move the key from rest position
    to fully depressed) must be mapped onto the 128 values that the
    MIDI spec defines to encode velocity.  Let's call the key velocity
    K and the resultant MIDI velocity M. The set of values assumed by
    K depends on the physical construction of the keyboard and the player's
    strength.  The set of values assumed by M is defined by MIDI to
    be 0..127 (decimal radix throughout).  (M=0 is defined by MIDI to
    mean "note off".)  Mapping K onto M (linearly) requires that at least
    two points be defined; call them (Kmin, Mmin) and (Kmax, Mmax).
    Mmin and Mmax are defined by MIDI to be 1 and 127 respectively.
    Kmin is defined arbitrarily by the keyboard designer.  Too low a
    value and the keyboard might have to wait several seconds before
    emitting a sound.  I assume they define it so the keyboard feels
    responsive to a light touch.  "Lighter" touches don't get you anything
    other than slower keyboard response.  E.g., if I strike the key
    REAL slow, I get the same MIDI velocity (Mmin), it just takes longer for
    the key to realize it's been struck.  (Some velocity sensitive MIDI
    controllers do in fact allow the user to define Mmin different from
    1 - e.g., the Roland Octapad - see my review elsewhere in this
    conference.)

    OK, now we can map K to M:
    
    	M = Mmin + (K-Kmin)*(Mmax-Mmin)/(Kmax-Kmin)

    This is a straightforward linear interpolation.  We can rearrange
    all of this stuff and fold constants together to get something that
    looks like:
    
    	M = C1*K + C2

    The velocity parameter you select from the front panel probably
    picks values of C1 and C2.
    
    Now, real implementations probably don't want to do a multiply on
    each key event, and if ROM is cheap you just do a table lookup instead:
    
    	M = T[V,K]
    
    with T being the lookup table and V the value of the velocity parameter
    selected from the front panel.  The granularity of K can be
    surprisingly coarse - many experiments indicate that real musicians
    (pros too) can in practice only articulate a handful of distinguishable
    dynamic levels.  Let's be generous and cover everything from pppp
    to ffff with mp and mf thrown in for good measure.  That's 10 (!)
    distinct values.  Round it up to 32; then T only needs 256 bytes
    of memory (32 dynamic values measured * 8 parameter values at 1
    byte per entry).
    
    I'll admit that I'm winging it here - I don't know if this is how
    a synth really does it.
    
270.3Further ElaborationERLANG::FEHSKENSThu Mar 13 1986 09:057
    One more thing - the table lookup approach allows you to do a nonlinear
    mapping, if such turns out to be useful.  The subscript calculation
    can be made arbitrarily cheap if the range of each index is a power
    of 2 (e.g., 8 and 32), as the byte offset into the table can be
    calculated by a shift and inclusive or, much faster than a multiply
    and add.
    
270.4I think I understand it now...BARTOK::ARNOLDJohn E. ArnoldFri Mar 14 1986 12:4738
    After reading the 2 responses to the original note, I went back and 
read the review and the DW-8000 brochure.  Now it makes more sense...

    It appears that the sensitivity setting is somewhat related to these 
explanations but not exactly.  From a graph in the brochure, it becomes 
apparent that a setting of 7 (on the 0-7 scale) lets the keyboard respond 
to touch with the maximum difference of velocity or timbre (since there's 
a velocity sensitivity setting for each of the VCA and VCF).  In the 
following examples, I'll presume we're talking about volume differences.

    example: setting 7

           __________           <==== volume when max. velocity detected 
          /          \
         /____________\         <==== volume when min. velocity detected  
   _____/              \_____________ 


    As the value of the parameter is reduced, this picture converges 
toward the middle.  That is, the "fast" attacks sound softer and the 
"slow" attacks sound louder than at a highr setting.  I presume that at a 
setting of 0, all keys are sensed at the same volume regardless of 
velocity.  (I think this convergence is the "feature" that the Keyboard
reviewer said might strike some people as odd.) 

    Therefore, an example of setting 0:

          ____________
         /            \         <==== volume when any velocity detected  
   _____/              \_____________ 



    I think this makes sense as an explanation of what those parameters 
do.  With a setting like this on my PF-15, I could make the harpsichord 
sounds not be velocity-sensitive like they are now!  Thanks for the help.

- John -
270.5Other Velocity EffectsERLANG::FEHSKENSFri Mar 14 1986 13:5513
    Note that there's two things going on here - one is how the keyboard
    maps actual velocity to MIDI velocity, and the other is what the
    synth does with that MIDI velocity information.  Fancier synths
    will allow you to affect other voice parameters besides overall
    volume. E.g., higher velocities may result in shorter envelope times,
    especially faster attacks.  Higher velocity may also open up the
    filter more, causing the sound to be "brighter" or have higher harmonic
    content.  The most capable synth in this regard that i am aware
    of is the Oberheim expander and the Matrix 12 and matrix 6 synths
    that adopted the expander's technology.
    
    len.