jmayes

Midibox vs. real piano

8 posts in this topic

Has anyone tried to use midibox on a real piano?  I know it's a no brainier to wire to solenoids but what about dynamic key response?  I recently acquired an older Yahama with built in pianocorder and wish to replace the host controller with midibox.  It works good as-is but has a 1/2 second delay which is intolerable, you can not hook a remote keyboard to it and play it live.  Newer models allowed this "Feature" to be turned off but mine does not, I have dug deep into the circuits to try to trick it out but it comes down to the firmware in the host controller, the software must be reverse engineered and modified.  My main expertise is hardware and wiring midibox to the existing drivers would be much easier for me but i will loose dynamic response which brings me to the question above.

 

The drivers require pwm outputs from the host to set the strike pressure, so the velocity of the midi notes needs to be translated and turned to pwm for each pin output.  Has it been done?  I tried a quick search without luck so far.  This feature would also be neat for driving LEDs as you could get variable brightness from them.

 

Any help would be greatly appreciated,

Jmayes

Edited by jmayes

Share this post


Link to post
Share on other sites

I've no experiences with this topic, and won't be able to help you on the mechanical part.

 

But: MIDIbox NG allows to control digital outputs with PWM quite easily.

See also the "first steps" section in the user manual: http://www.ucapps.de/midibox_ng_manual_fs.html

search for "Dim me!"

 

 

While previously the LED was only switched between on and off state depending on the incoming MIDI value, now we want to control the brightness level with the received velocity value instead:
EVENT_BUTTON id=1 fwd_id=LED:1 dimmed=1 type=NoteOn key=36 lcd_pos=1:1:1 label="Button #%3i: %3d" 

Only the dimmed=1 parameter has been added. The LED will change the brightness over the 0..127 value range in 16 levels.

 

Note that more than 16 velocity levels are not supported by the MBNG firmware, but this could already be enough?

(I doubt that you will get a noticeable change with a higher resolution)

 

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Another chance is to use optical sensors. But I think this may take quite a bit of time to implement this feature.

Share this post


Link to post
Share on other sites

With the Pianocorder the only interface that came with the piano is a cassette tape player.  Did you make an interface which gives you your measured 1/2 second response time? 

 

It will be very difficult to remove all of the delay when playing a real piano from a Midi keyboard.  The first issue is that most Midi keyboards send the Midi message when the key is 1/2 pushed down but the piano hammer hasn't even started to move until it receives the 3 byte midi message.  The piano hammer has to move its mass about 1-1/2 inch before striking the string which takes time.  To play the note loud you put more energy into the action to accelerate the hammer quickly to hit the string.   This time is fairly fast when playing loudly.  But when you want the note to play softly, you put very little energy into the action and the hammer moves much slower to the string which plays softly.    When playing music on these newer player pianos with prerecorded files, the player logic delays the playing of the notes so that it can compensate for this mechanical problem between playing the notes loud or soft.  To play 2 notes at different velocities and have them sound at the same time, the softer note solenoid can be activated 100ms earlier than the louder note.  This time varies depending on how softly you want the piano to play.

 

Even if you can get the delay down to 80ms it still may sound like the piano is echoing with the Midi voices.  And most people can't detect a delay of 40ms from the time the key is pressed and the note sounds.

 

Pete 

Share this post


Link to post
Share on other sites

First off thank you Thorsten for the fast reply and the solution to my issue, I will read up and follow that route- 16 levels is more then enough considering the mechanical issues that kpete detailed so well.  I have the pianocorder that uses the floppy disk and already has midi input (and output).  The 1/2 second delay they add was put there exactly because of the mechanical issues of hammer strike times.  While this is fine for canned midi music I need to be able to link the piano to my organ for live performance and I must kill the 1/2 second for that to happen.  Most likely I will have to play at full velocity but still want to play around with some dynamics.  I expect to have both the old and new host wired together so I can pick the best interface depending on what I am doing (canned midi most likely will be fed via the 1/2 second delay).  I looked at getting the newer pianocorder host controller boards but they changed the driver addressing so radically it would not work unless I changed the driver boards too so hot-wiring the midibox to the drivers will be much easier. Will report back once things are wired and let you know how it works. 

 

 

Thankx again all,

Jmayes

Edited by jmayes

Share this post


Link to post
Share on other sites

Hi, after reviewing the NG documents I am sure it will do what I need but it looks like most of the examples deal with matrix buttons and matrix LED's.  Is there a ngc example file I can look at that uses the midi 'receive' command (for input) and the 'srio' (DIO for output). If there is an example like that it will save me alot of trial and error.  I have ordered the parts and can't wait to get started.

 

Thankx again,

Jmayes

Share this post


Link to post
Share on other sites

Can someone point me to a good NG example script I can look at that receives midi and outputs to the DIO?

 

Thankx again all,

J

Share this post


Link to post
Share on other sites

See http://www.ucapps.de/midibox_ng_manual_fs.html

 

Please read everything from the top to the "Remote me" topic; these are important background informations.

 

Instead of the "EVENT_BUTTON ... fwd_id=LED:1" configuration you could directly specify EVENT_LED of course (like in the "Dim me" example, just without "dimmed=1"

 

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now