Archive for September, 2015

Keyboard tinkering

As I mention elsewhere in the pages I’ve been playing keyboards on and off for over 30 years now, a passion that came about from being interested in electronics and computers first, then wondering how to make music with them second.

So anything that combines the two is bound to be a bit of fun in my book.  I did just that this morning and thought would post what I learned along the way – might be of interest to others and I’ll know where to find it too :)

Back in about ’87 or ’88 I had a keyboard rig that used two Yamaha KX-76 controller keyboards – for anyone unfamilar these are keyboards that just produce a MIDI data stream that in turn goes into some other device to create the actual sounds.  To this day I’ve still got the two KXs and consider them one of the better feeling “synth action” keybeds out there.  A little noisy acoustically – so perhaps not ideal in a studio setting, but for band work ideal.  In any case, I digress…

Like most keyboards the KX-76s are velocity sensitive – the harder/faster you press, the louder the sound.  Velocity sensitivity is generated by firmware in the keyboard by working out how quickly the key has been pressed.  In practice this is usually accomplished by each key having a pair of switches (or a single leaf style switch with two positions as is the case in the KXs) that are set up so they change state one after the other as the key moves.  Time how long it is between the first one switching and the second one and you have a figure that can be turned into velocity.

The above is all stuff I’ve understood intuitively for some time, but I’ve often wondered just how quick this time interval between the two switches is – one day I’d like to build a controller of my own and this is a fairly important design consideration.  So this morning with a bit of tinkering around I was able to do some experiments to find this out – hence the setup in the photo above.

Turns out the shortest interval is around 5ms up to 20ms+ for a very slowly played key.  Anything over about 10ms seemed to be interpreted as the “minimum” velocity of (0x01).  I couldn’t manage an interval of less than 5ms or so – this corresponded to a velocity of 105 which is the maximum a KX-76 will send anyway (this a throwback to limitations of the original DX-7 as I recall which also stopped short of the 127 maximum velocity).  Also a fair bit of “keybounce” for a ms or so after contact close/open.

Key up time was 9ms if the key was allowed to return to it’s original position via the spring.

Screen capture below is typical for a mid-velocity press.


One other detail I should add – the keyboard in the KX-76 is a matrix with notes as columns and octaves as rows.  It’s scanned by the microcontroller on the main board such that each note is checked once per millisecond. The scanning appears to stop until the key down time is captured, then continues.

Oh and yes, the KX-76 survived the ordeal of being poked and prodded :)