Menu

The Disklavier Reproducing Piano as a MIDI Instrument

The Disklavier is an amazing instrument with a sophisticated record-and-playback system. When used as a standalone device, it is a simple matter to initiate recording and playback. Little instruction is required.

The instrument also has MIDI connectivity features that make it a compelling instrument for use in varied contexts, including music composition, interactive performance using computer software, and recording studio applications.

When one uses the instrument as a MIDI device, it is important to have a deeper understanding of the ways in which MIDI is implemented in this acoustic piano.

(Click here for a PDF version of this article.)

Two Instruments in One
The Disklavier is 2 instruments in one: an acoustic piano and a digital tone generator.

As one would expect, the digital tone generator is capable of responding to incoming MIDI data in real time. It includes a 480-instrument XG sound set. In the manner that you would expect, this tone generator responds to program changes, bank select commands, pitch bend, various controllers, and so forth. The Disklavier’s manual includes a complete program list and MIDI implementation chart.

The acoustic piano, itself, on the other hand, responds differently from other digital MIDI instruments by virtue of the fact that it is a mechanical instrument. When it receives MIDI data, the keys and pedals must move in order to render the performance—and that movement takes time.

Sending MIDI Data to a Disklavier
When MIDI data is received by the Disklavier, the instrument makes a decision as to which messages should be performed by the piano and which should be played by the tone generator. This decision is governed by the MIDI In channel setting for the piano.

Most Disklavier’s offer a range of MIDI In channel settings for the piano which include:
  • any one MIDI channel from 1-16
  • MIDI channels 1 and 2
  • HP (notes and on/off pedals received on channel 1 and incremental pedal data received on channel 3)
  • PRG (the lowest of 16 MIDI channels that contains a program message for a “piano group voice,” i.e. any program from 1-8)
  • PRG All (all MIDI channels that contain a program message for a “piano group voice”)
All MIDI data that is not sent to the piano is sent to the tone generator.

NOTE: The Disklavier has an optional MIDI In setting that delays all incoming MIDI messages by 500 ms. This feature is discussed below. When this feature is turned on, the piano, itself, and its tone generator will sound notes 1/2 second after the note-on messages are received.

When you play back a MIDI sequence from a computer sequencer, you may observe that your sequencer’s on-screen counter and moving cursor are ahead of the playback that you hear. This is normal.

The acoustic piano responds to MIDI data somewhat differently than does an electronic instrument. For starters, it is impossible for the acoustic piano to receive incoming MIDI data and immediately produce sound. In order to produce sound, the piano must move the keys which, in turn, throw hammers against the strings. A digital instrument, of course, is capable of producing sound instantly.

Although it may seem obvious, it is important to note that loud notes are produced by fast-moving keys and soft notes by slow-moving keys. If the Disklavier is configured to respond to incoming MIDI data in real time, loud notes played by the piano will be heard sooner than soft notes.

The timing difference between soft and loud notes can be quite noticeable. The very loudest notes might be heard within 30-50 milliseconds following the receipt of a note-on message whereas the very softest notes might be heard more than 200 milliseconds later.

Given this timing discrepancy, the Disklavier offers the musician two different modes for receiving MIDI data, a real-time mode (which has the timing discrepancy) and a “delay in” mode in which all notes are sounded with correct relative timing but 500 ms (i.e. 1/2 second) after the note-on messages are received.

When accurate playback of external MIDI data is required, the Disklavier’s MIDI In feature should be set to the 500 ms. delay. For quasi real-time applications, the MIDI In Delay should be turned off—and one’s expectations should be adjusted accordingly.

Using the Disklavier’s MIDI In Delay Mode
If your musical application is centered around the concept of recording a pianist and then reproducing the performance, there is little to trouble-shoot when the Disklavier’s MIDI In is set to Delay mode. If your MIDI data was originally captured on the piano and you are sending the data back to the piano on the correct MIDI channel, the result should be what you expect: excellent reproduction.

Note, however, that you can get unexpected results if your data was artificially created on a computer. The reason is that your data may be outside the bounds of what a human would produce when playing the piano with ten fingers and two feet.

Here are some examples:

Repeated Notes
Repeated notes will not reproduce correctly if there is not enough time between the note-off message of one note and the note-on message of the next.



This situation often results when the data was created by a music notation program. For example, repeated, full-length quarter notes will have almost no time between the note-off message and the subsequent note-on message.
 Remember the nature of the acoustic piano and how is it played by a human pianist: a depressed key must return at least part way to its rest position before it can be physically pressed again with enough force to throw the hammer toward the string a second time.


Volume Too Loud or Too Soft
You may find that the playback of your sequence results in notes that are way too loud or way too soft.

The range of note-on velocities should match the range that is normally generated during human performance. See the section on Velocitybelow.



TIP: The Disklavier has a volume control, either a knob on the control box or a slider in an app that you use to manipulate the instrument. With the exception of the Mark IV Disklavier, the loudest setting of the volume control is the normal setting. Other choices result in a scaling-down of note-on velocities. In general, it is best to set the Disklavier to play at full (normal) volume and to adjust the notes in your sequence accordingly.

On most Disklaviers, the normal volume setting is “0.” On the Mark IV, the normal setting is “100.”

Dropped Notes

The Disklavier is designed to play notes of very low velocity when the MIDI In Delay is on. If you experience dropped notes in this situation, there is a good chance that your sequence has exceeded the polyphony of the instrument.

 

Keep in mind the amount of polyphony available for your particular model of Disklavier. All “standard model” Disklaviers have 16-note polyphony, which means that the Disklavier can physically hold down 16 keys at a time. Certain PRO models have 32-note polyphony. If you exceed the available polyphony, keys will be released, resulting in dropped notes.



In normal playing by a human pianist, this polyphony limitation is not a problem. When a pianist needs to sustain more than 16 notes, the sustain pedal is usually engaged. When engaged, the sustain pedal (controller 64) will keep all of the dampers raised.

NOTE: This polyphony limitation applies to the piano, itself, and its physical ability to hold down multiple keys simultaneously. The built-in XG tone generator has up to 256-note polyphony, depending on the model.



One other possible reason for dropped notes can be repeated notes whose durations overlap. This can result in two note-on messages in a row, one of which occurs while the key is depressed.

 

Using the Disklavier in Real-Time Mode
As mentioned above, when the Disklavier’s MIDI In Delay is set to Off, the piano will attempt to respond to all in-coming MIDI messages immediately. Notes that are sent to the tone generator will be heard immediately, and notes produced by the piano will be heard somewhat later.

There are 4 primary areas of concern when the Disklavier receives MIDI data in real time:
  1. Timing Discrepancies
  2. Overall Latency
  3. Repeated Notes
  4. Staccato Notes
The primary issue with timing is the audible rhythmic discrepancy between soft and loud notes, with loud notes being heard before soft notes. The only way to minimize this timing discrepancy is to keep the incoming notes within a narrow range of note-on velocity.

In the case of latency, there is only one way to decrease the latency when the Disklavier is set to real-time performance: Increase the note-on velocities.

Fast, repeated notes constitute a special challenge when the piano is set to real-time mode. Rapidly repeated notes consist of note-on messages that are very quickly followed by corresponding note-off messages. Problems result when a note-off message is received by the piano before the piano has completed the key-movement for the corresponding note-on message.

In other words, when notes are repeated quickly, the note-off messages can interrupt the keystrokes generated by the note-on messages. The result is that the piano will seem to “mumble” as it attempts to play the notes.

There are two potential workarounds for the repeated note problem:
    (1) repeat the notes less rapidly and (2) increase the note-on velocities of the notes, thus quickening the downward movement of the keys.
Staccato notes can also have an issue with note-off messages that come in too quickly. When this happens, staccato notes can exhibit the same playback issue as repeated notes. If your staccato notes do not speak correctly, you need to delay the note-off messages either by lengthening the staccato notes or slowing the tempo.

The Disklavier’s Unique Velocity Profile
The acoustic portion of the Disklavier has a unique velocity profile. Sending note-on messages with velocities outside of the “boundaries” of human performance yields poor or even unintended results.

The MIDI specification offers a range of note-on velocities from 0-127, with the value 0 having the same meaning as note-off. In the case of digital instruments, higher note-on velocities mean louder sound and often brighter timbre.

In the case of the Disklavier, note-on velocities are related to the speed of the hammer as it strikes the strings. The hammer speed, of course, determines the resulting loudness and brightness of sound.

MIDI files recorded on the Disklavier itself will typically have note-on velocities in the range of 30-90. If the performance has wide-ranging dynamics from ppp to fff, the range may go from 20-25 up to 105-110. In “normal” playing, notes in the velocity range above 90 rarely occur unless supported by other notes that form a chord.

MIDI files that are created on the computer without an understanding of the Disklavier’s normal velocity range often sound excruciatingly loud on the Disklavier. The same is true for MIDI files that were recorded on light-action keyboards or digital pianos whose volume was turned down during the recording (thus encouraging the pianist to play with a heavy touch).

It is also important to understand how MIDI volume messages (controller 7) can affect hammer velocity on playback.

Controller 7 is a MIDI message with a range of values from 0-127. Its function is to set relative volume levels for various instruments in a multi-track sequence. In essence, it is used to balance one instrumental track against another, much like faders on a mixer which are used to balance audio tracks.

When a performance is recorded on the Disklavier, the Disklavier puts a controller 7 message in the piano track at the beginning of the MIDI file, setting the volume level of the piano to 100.

This is the normal controller 7 value for a Disklavier recording.

If the controller 7 value is changed, up or down, the Disklavier will effectively scale up or down the note-on velocities in order to make the piano louder or softer.

When creating a sequence for playback on the Disklavier, it is generally a poor practice to use any value for controller 7 other than 100. You will have much more control over your sequence if you set controller 7 to 100 for the piano track and then scale the note-on velocities as needed to get the volume of sound that you want.

NOTE: MIDI files recorded to internal memory on digital pianos (including some digital pianos made by Yamaha) may put a different controller 7 setting into the file. Be sure and check the controller 7 value for the piano track in your sequencer and change it to 100 if necessary.

Controller 11, known as expression, has a similar MIDI function to that of controller 7. It, too, can raise and lower the volume of sound. Generally, controller 11 is used in MIDI sequences to create swells and diminuendo for digital instruments that have a sustained sound. MIDI devices typically set their internal digital instruments to a default controller 11 value of 127 unless programmed otherwise.

The Disklavier will respond to controller 11 messages, but it is good practice to avoid them for the piano track. They cannot make the Disklavier louder, only softer. It’s best to control loudness with velocity.

Incremental Pedal Data
The Disklavier generates and responds to controller data for these pedals:
  • Sustain Pedal (Controller 64)
  • Una Corda Pedal (Controller 67)
  • Sostenuto Pedal (Controller 66)
Recordings made on modern Disklaviers result in continuous pedal data for both the sustain and una cordapedals. In other words, these instruments generate a full range of MIDI values from 0-127.

The Disklavier can, of course, play back sequences that contain just on/off information for these pedals (controller values of 0 and 127). When receiving values of 0 and 127, these pedals move between their positions of fully-at-rest and fully-depressed.

If you wish, you can create sequences on the computer that contain just simple on/off values for these controllers. However, if you want more control over the movement of the pedals, you should use incremental values between 0 and 127.

Sostenuto Pedal
In MIDI terms, there is no point in trying to think of the sostenuto pedal (controller 66) as anything other than an on/off controller that uses just two MIDI values: 0 and 127. In terms of its implementation in an acoustic piano, the sostenuto pedal has a binary function: it is either fully engaged (and, thus, doing its job) or it is not engaged.

Unlike the sustain and una corda pedals, the sostenuto pedal on a Disklavier does not move during playback. However the instrument does respond to controller 66 messages, albeit in a unique manner.

The function of the sostenuto pedal is to sustain selectively any note whose key is depressed at the time that the pedal is engaged. An acoustic piano achieves this goal in live performance by selectively holding the dampers of those notes off the strings while the sostenutopedal remains engaged. When the Disklavier receives a controller 66 message with a value of 127 during playback, it checks to see which keys are depressed and keeps them depressed until a controller 66 message with a value of 0 is received.

Poloyphonic Aftertouch Messages
MIDI polyphonic aftertouch messages are note-specific messages that are generally used in certain keyboards to enable the performer to modulate the sound of a note by varying the finger-pressure on a fully-depressed key. Recordings made on a Disklavier sometimes include polyphonic aftertouch messages but for different reasons.

When these messages occur in a Disklavier recording, they have one of the following functions:

  • These messages can indicate silent notes, that is, notes whose keys were depressed without the hammers striking the strings.

  • These messages may pertain to playback that you would only hear when using headphones to listen to the Disklavier in silent mode.

  • Lastly, such messages occur throughout recordings that are made on a Disklavier PRO. As such, they are part of a Disklavier PRO-specific extension of the MIDI spec known as XP (i.e. eXtended Precision). For more information, see the section below on XP Data.
XP Data
The Disklavier PRO has a high resolution recording system that records:
  • Note-on velocity on a scale of 0-1023*
  • Key-down velocity on a scale of 0-1023*
  • Key-up velocity on a scale of 0-1023*
  • Incremental movement of the sustain and una corda pedals on a scale of 0-255


* Although a scale of 0-1023 is used for hammer and key velocity, the practical range is somewhat less.

Quite obviously, the scope and resolution of XP recordings go beyond the limits of MIDI as MIDI data is normally defined. In order to store XP data in a MIDI data stream, the Disklavier PRO encodes additional bits of data using a combination of polyphonic aftertouch messages and normally-undefined controller messages.

The XP data specification is unpublished at this time. XP data cannot be effectively edited or created using standard MIDI editing tools.

In general, if your intention is to edit, create, or play back MIDI data using a computer, it is best to strip out any XP data that you may have recorded in your sequence. That extraneous data will not improve playback from an external source.
Disklavier PROs have a built-in function for stripping the XP data. You can also do so in a sequencer by removing the following from the piano track:
  • polyphonic aftertouch messages
  • controllers 16 and 81
  • any SysEx messages recorded on the Disklavier other than GM reset and XG reset
Other MIDI Data
Depending upon the source of your MIDI data (Disklavier recording, music notation file, other MIDI sequence), you may have a piano track that contains a lot of useless data. It is generally a good idea to keep your data stream lean, particularly if you intend to play your sequence on the Disklavier by sending the Disklavier MIDI data from an external source.

Setup Measure for a Disklavier MIDI Sequence
It is good practice to begin any MIDI sequence with a setup measure that prepares each channel of the receiving MIDI device for the performance data that comes next. Setup measures generally start with a program message that sets the voice for the track followed by a volume message (controller 7) and then any additional messages that might be desired, such as expression, panning, reverb, and so forth.

In the case of a Disklavier, it is a good idea to start the sequence with a General MIDI reset message on measure 1, beat 1, tick 0. This is a universal system exclusive (SysEx) message that is recognized by many instruments:

F0 7E 7F 09 01 F7

The purpose of the message is to set the Disklavier and its General MIDI tone generator to neutral (default) parameters before sending additional setup information. If you intend to use XG voices in your sequence, it is best to follow the GM reset message with an XG reset message, which is a Yamaha-specific SysEx message:

F0 43 10 4C 00 00 7E 00 F7

These SysEx messages are not track-specific. All other setup messages (such as program, volume, etc.) are track-specific. The track-specific messages should occur at least one beat later than the SysEx messages in order to give the Disklavier time to respond to the SysEx messages.

At a minimum, each instrumental track in your sequence (including the piano track) should contain a program setting as the first setup message (measure 1, beat 2 or later) followed by a volume message (controller 7) and any other appropriate controller messages.

Using the Disklavier as a MIDI Controller
The Disklavier has two options for transmitting MIDI data to external devices, and these options are mutually exclusive:
  • Keyboard Out
    In this mode, the Disklavier transmits your playing of the instrument.

  • Ensemble Out
    In this mode, the Disklavier transmits MIDI data when you play a song file from the Disklavier’s internal memory (including a song file on floppy disk or USB flash drive). By default, only the non-piano tracks are transmitted. Certain models can be configured to transmit the piano track(s) as well (by setting Piano Part Ensemble Out to On).
When used as a MIDI controller, the Disklavier can be configured to transmit your playing to an external MIDI device on any single MIDI channel from 1 to 16. Certain models offer the option to send on 2 channels with a designated split point and to transpose the data.

If your Disklavier has a silent feature, you can mute the piano itself and just transmit MIDI data. The data that is transmitted is standard* MIDI data:
  • Note-on and note-off on a scale of 0-127
  • Incremental controller data for the sustain pedal (controller 64) and the una corda pedal (controller 67) on a scale of 0-127**
  • On/off controller data for the sostenuto pedal (controller 66)**
* The Mark IIXG PRO and the Mark III PRO also offer the option to transmit XP data.
** Early model Disklaviers, very small grands, and upright models vary in their ability to transmit pedal data.

When using the Disklavier to control virtual instruments, it is important to reconcile the Disklavier’s velocity parameters with the expectations of the virtual instrument. As mentioned earlier, most playing on the Disklavier results in note-on velocities in the range of 30 to 90. Depending upon how gently or forcefully you depress the keys, you may expand that range from 20-25 to 100-110.

There is currently no mechanism in the Disklavier for adjusting the range of note-on velocities that it generates. If your virtual instruments expect higher velocities or a wider range of velocities, you will need to do one of the following:
  1. Between the Disklavier and the virtual instrument, insert a MIDI hardware device or MIDI app that can alter note-on velocities in real time. As necessary, adjust the hardware device or MIDI app to do one or both of the following:
    • Add or subtract a uniform value from each note-on velocity. This will enable you to raise or lower the range of velocities generated by the Disklavier.
    • Scale each note-on velocity up or down by a percentage. This will enable you to widen or narrow the range of velocities generated by the Disklavier.
  2. Adjust the velocity expectations of the virtual instrument. Many virtual instruments have this capability. Look for a feature that enables you to adjust the virtual instrument’s “velocity curve.” The velocity curve provides a mapping of note-on velocities to response of the virtual instrument (typically loudness and timbre).