dfro Posted December 1, 2004 Report Share Posted December 1, 2004 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! Quote Link to comment Share on other sites More sharing options...
jimhenry Posted December 1, 2004 Report Share Posted December 1, 2004 It sounds like you are very much on the right track. I don't think it will be so hard to add the necessary programming to get keyboard velocity. Good luck! Quote Link to comment Share on other sites More sharing options...
Guest analouge Posted December 15, 2004 Report Share Posted December 15, 2004 Where can I get books on PIC programming... It's a mystery to me too, and I really would like to crack it...cheers Quote Link to comment Share on other sites More sharing options...
Guest robin_fawelll Posted January 22, 2005 Report Share Posted January 22, 2005 Have a look at the Midi Wiki http://www.avishowtech.com/midibox/wiki/index.php/Book%20Reviews?PHPSESSID=357fdfb74cc86177b6d3c01970b2752dRegards Robin Quote Link to comment Share on other sites More sharing options...
Duggle Posted January 23, 2005 Report Share Posted January 23, 2005 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 tocontrol 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.