Jump to content

Velocity Sensitivity


dfro
 Share

Recommended Posts

Hello all,

     First of all, please excuse the length of this post.

     I am interested in building a velocity sensitive midi keyboard and a velocity sensitive pedal board.  "Why build a velocity sensitive pedal board?," you may ask.  Well, the main reason I want to use a pedal board is to play the B4, however there are some great synth basses and sampled basses that would sound great with velocity.  I also think velocity sensitivity is an indispensable aspect of my musical expression.    I am mainly a jazz pianist, who wants to learn how to play jazz B3 (B4).  If I make a midi B3, I also want it to be a controller for the plethora of velocity sensitive sounds that are available.

     I am new to the midibox projects, but I have tried several times to adapt the processors of existing keyboard controllers to a custom keyboard I am building.  I have designed and created several pcb's to house the scan matrixes and the SPDT spring switches that you often see in old keyboards.  I even gold plated them so that they would not corrode.  But up to now, I have not been able to get a dependable scan of the key motion.  At the time of my last midification attempt, I knew very little about electronics;  and the inner workings of the chips remained a mystery to me.  Now with the Midibox OS and apps I am filled with hope.  I know I can get this keyboard working just like I want, and also understand its inner workings.  I have begun to study some books on PIC programming, with the goal of understanding every word of the MIOS, if that is possible without being a programmer for a living.  I am excited to see where the documentation project goes, also.

     The main question I have currently is --- Is there any interest in putting velocity sensitivity in the MIOS?  How hard would that be? Would it require an extra module to be created?  I think it would be a great addition to an already awesome arsenal of applications.  

     What does everyone think?  I am not asking for free programming from the senior midibox programmers.  I would like to contribute in any way I can, if there is a shared interest in adding this feature.  Learning to write code is a goal of mine, but I am just getting started.

     This is probably an ambitious addition.  I do know from the little I have tinkered, that the chip scans each SPDT switch, which is arranged in a diode matrix.  When a key is depressed about a third of the way, the horizontal spring, which has been held up by the key, now releases from the top contact.  Then after another third of the key travel, the bottom contact is closed against the spring.  The chip times how long this took and generates a number from 0 to 127.  If it took a short time a high velocity number is generated.  If it took a long time a low velocity number is generated.  A note off message or a zero velocity message is sent when the spring has released from the bottom contact and contacted the top contact.  The standard distance that a piano key travels is around .390".

     It probably would take a lot of tinkering to come up with some velocity curves that would feel and sound good.  On the switch boards I made, I worked out a way to make the upper and lower contacts out of brass rod, which I bent into little staple-like shapes and then had gold plated. I made a simple jig to help me solder them in place with a fairly even gap between them from key to key.  After soldering them, I put a fillet of epoxy at their bases to ensure that they were stable.  I could send some pics if people are interested.

     If this is not a feature that will be added any time soon, I would like to try to use the mkcv128 velocity sensitive keyboard MIDI encoder created by Jordan Petkov and sold at:  http://www.geocities.com/midiboutique/.  I would then like to midi merge it with a midibox project for all of the other control features.  Does anyone have advice on how I would make this work?  Would I just use a midi merge module to wire it into a core module?  

     In the mean time, I am going to dive in and make some core modules, a jdm, a midi merge module, and a din module.  I'll work out all the specifics as I go.

Peace!

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

Hi,

I had a look at the keyboard I/f site of your link.

Why not use Midiout from one of the Velocity sensing scanmatrix controllers wired to Midi in of a MIDIBox64 derivative (they have Merge function already).

You will be up and running very quickly this way. You can assign control functions and further customize the operation of your rig by editing and downloading MB64 ini files. You could then begin learning MIOS functions (and PIC programming) and further customize your setup. For example you could write a function that simply translates incoming velocities to whatever curve you wish, create splits and crossfades and whatever other master keyboard functionality you wish.

I suggest you use standard modules (ie kbd adapter like you suggest, and a MIOS core) and use them to customize to get exactly what you envisage. This way you will be operational very early and can concentrate on adding the unique features you desire. This way way you avoid spending all your time reinventing the wheel.

On the subject of deriving velocity curve, if you parameterise the response curve to several CC's representing breakpoints and slopes, assign these to

control surface knobs, experiment. If you discover some "ideal" response curves they could be encoded (in various ways) to MIOS application user functions that can be recalled via pushbutton for example. Of course this requires programming skill but it's scope is limited to converting CC's into a numerical function that shifts and scales velocity bytes (and of course developing some knowledge of MIOS).

cheers

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...