I'd like to be able to change the active tone of my digital piano while I'm playing it, using the MIDI interface.

I tried sending SysEx strings similar to the following but the piano kind of ignores them:

F0 41 10 42 12 40 1x 00 00 03 yy F7

My piano is compliant to GM2, GS and XG lite standards.


You don't need Sysex, you just need to send the Program Change message.

According to the MIDI spec, that is:

Status: 1100nnnn
Data: 0ppppppp

Where nnnn is the four bit MIDI channel number, and ppppppp is the seven bit program number.

If your module supports more than 127 patches, you may need to use a bank select message to access them.

  • I managed to change the tune that will be played next via MIDI, not the tune that piano will play when I press keys. For instance after a Program Change, if I send a [90 xx yy] piano does play that note using the new tune, but still uses the old tune (that is the one selected by buttons) whenever I press the keys.
    – Hemme
    Dec 29 '12 at 17:49
  • I think you mean tone, not tune? Also, your synth may support splits and layers, or otherwise use different programs for the keys and MIDI interface. Check the manual for details. Dec 30 '12 at 2:27
  • @Hemme You may need to change it on a different channel. MIDI supports at least 16 channels.
    – derobert
    Jan 2 '13 at 19:24
  • MIDI supports up to 16 channels per MIDI interfaces. Devices like the XV-5080 that support more than 16 channels have multiple MIDI interfaces. But your point stands, you should try out different channels as well as omni (0, I believe) to be sure. Jan 3 '13 at 0:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy