I recently wrote a minor key waltz while sitting down at the piano. Parts of the piece were beyond my technique level so I decided to orchestrate a MIDI version of the piece using Logic Pro.
The challenge was that the piece is a slow minor key waltz that is best performed with tempo rubato, meaning the tempo should fluctuate based on a performer's "in the moment" expression. Programming a computer sequencer to emulate a credible tempo rubato interpretation is tedious, and in the end it will never truly sound like a human. But you can come close.
Here is what I learned from programming my waltz:
-Use your tempo settings and tweak them phrase by phrase, down to the level of a single beat, or even a fraction of a beat. In my waltz, I had some measures where each of the three beats had a unique bpm setting.
-While you may have a primary tempo for the piece, don't be afraid to do slight deviations from it even during moments when the time is supposed to be strict. My waltz started at 78.5bpm, but I would often set a measure at 78, 79 etc...just to give it the slightest hint at imperfection.
-Velocity and duration is just as important, and I recommend doing a measure by measure approach (or phrase by phrase) where you adjust tempo, velocity and duration until it sounds right to you (rather than editing the piece one facet at a time). After editing a given phrase, always go back and listen to the phrase in the context of a full playback (at least by section) so that you are truly seeing (or hearing, in this case!) the forest from the trees.
-In addition to tempo, you can microscopically slide the note laterally in the piano roll in to have it not fall exactly on the beat. Try to avoid always having 100% perfect vertical alignment when two or more notes strike at the same point in the beat - but let your ear be the judge.
-When playing chords, consider having different velocities for each note of the chord. When you play a piano chord in real life, your fingers are not simultaneously hitting the keys at exactly the same velocity...there are subtle differences that you can't even feel. If all your velocities are the same, it will sound fake in a heartbeat.
With all that said, your best bet is still to find a real musician who can properly interpret your music. A seasoned player can nail your piece within a couple takes in what took you hours to program. But we don't always have this luxury.