6

I know about the possibility to microtune softwares such as Logic or Pianoteq, connect a regular midi keyboard and be able to play microtuned scales.

My question, however, is if I connect an Oriental Keyboard which has the scales already microtuned to a software such as Reason, would the midi messages come out microtuned automatically?

2 Answers 2

5

There is provision in the MIDI Standard to send & receive microtuning, both as entire data dumps & some realtime modifications, using SysEx messages.

7EH 08 nn is MIDI Tuning Standard (Non-Real Time) &
7FH 08 nn is MIDI Tuning Standard (Real Time)

I have never personally used either of these, though I knew of their existence - so some further research may be required to see exactly how they are implemented.

The Raw spec is available from the MIDI Association : Universal System Exclusive Messages & there is a Wikipedia article on it : MIDI Tuning Standard


Further research would appear to show that some instruments - specifically Yamaha, that's where I used to work so still have people I can ask, but a Google search shows some Roland devices as also being capable - use Scale/Octave Tuning Adjust from the GM2 General MIDI 2 spec.
This is capable of adjusting each of the 12 notes in any octave by cent steps, but is repeated the same for each octave.

I found this data guide from a Roland manual

❍Scale/Octave Tuning Adjust

Status  Data byte                                       Status  
F0H     7EH, 7FH, 08H, 08H, ffH, ggH, hhH, ssH...       F7H

Byte    Explanation
F0H     Exclusive status
7EH     ID number (Universal Non-realtime Message) 
7FH     Device ID (Broadcast)
08H     Sub ID#1 (MIDI Tuning Standard)
08H     Sub ID#2 (scale/octave tuning 1-byte form) 
ffH     Channel/Option byte 1
        bits 0 to 1 = channel 15 to 16
        bit 2 to 6 = Undefined 
ggH     Channel byte 2
        bits 0 to 6 = channel 8 to 14 
hhH     Channel byte 3
        bits 0 to 6 = channel 1 to 7
ssH     12 byte tuning offset of 12 semitones from C to B
        00H = -64 [cents]
        40H = 0 [cents] (equal temperament) 7FH = +63 [cents]
F7H     EOX (End Of Exclusive)

Looking at that spec it would appear too be either a subset or a stricter definition of the above-mentioned MIDI Tuning Standard.

I have managed to find a link to the entire MIDI Tuning Standard spec on Microtonal Synthesis com, but frankly I'm getting well above my pay grade on the entirety of the structure.

I'll repro it here in case of future web-rot

Formatting this was a nightmare & I'm not even going to attempt to correctly code-format it, but feel free to tweak/fix any errors found

The MIDI Tuning Standard

The MIDI Tuning Standard was ratified by the MIDI Manufacturers' Association in January 1992. Credit should be given to Robert Rich and Carter Scholz who wrote and lobbied for this addition to the MIDI specification. Manufacturers have the option of supporting the tuning standard partially or in full. It is featured on some Emu and Ensoniq instruments. Currently they implement only the non-realtime features of the standard.

Non-realtime messages

Request a bulk tuning dump from your synthesizer by sending the following codes:

F0 7E id 08 00 tt F7
where

F0 7E = universal non-realtime SysEx header
id = target device ID
08 = sub-ID #1 (MIDI tuning standard)
00 = sub-ID #2 (bulk dump request)
tt = tuning program number 0 to 127 in hexadecimal
F7 = end of SysEx message

for example, request a bulk dump of tuning program 16 from device 1 with the following message:

F0 7E 01 08 00 10 F7

The synthesizer sends the bulk tuning dump in the following format:

F0 7E id 08 01 tt x16 x128 ck F7
where

F0 7E = universal non-realtime
SysEx header id = target device ID 08 = sub-ID #1 (MIDI tuning standard)
01 = sub-ID #2 (Bulk dump reply)
tt = tuning program number 0 to 127 in hexadecimal
tn = tuning name (16 ASCII characters)
xx yy zz = frequency data for one note (repeated 128 times) see below for format
ck = checksum
F7 = end of SysEx message

Realtime messages

The following message changes the tuning of one or more notes in realtime. The "preferred" method according to the specification is to change the tuning immediately for any notes currently sounding. The optional method is to change the tuning only for new notes that follow the tuning message. In reality, the preferred method depends on what the composer is trying to accomplish and this author recommends a global parameter on the synthesizer to select between immediate and new note only retuning.

F0 7F id 08 02 tt ll [kk xx yy zz]x(ll) F7
where

F0 7F = universal realtime SysEx header
id = target device ID
08 = sub-id #1 (MIDI tuning standard)
02 = sub-id #2 (note change)
tt = tuning program number from 0 to 127
ll = number of notes to be changed (sets of [kk xx yy zz])
[kk xx yy zz] = MIDI note number, followed by frequency data for note
F7 = end of SysEx message

Tuning program and bank changes

Tuning programs and banks are changed using registered parameter number controller messages.

Tuning program change

Bn 64 00 65 03 06 tt (data entry)
Bn 64 00 65 03 60 7F (data increment)
Bn 64 00 65 03 61 7F (data decrement)
n = basic channel number
tt = tuning program number from 1 to 128

Tuning bank change

Bn 64 00 65 04 06 tt (data entry)
Bn 64 00 65 04 60 7F (data increment)
Bn 64 00 65 04 61 7F (data decrement)

n = basic channel number
tt = tuning bank number from 1 to 128

Frequency data format (all bytes in hex)

xx = semitone (MIDI note number to retune to, unit is 100 cents)
yy = MSB of fractional part (1/128 semitone = 100/128 cents = .78125 cent units)
zz = LSB of fractional part (1/16384 semitone = 100/16384 cents = .0061 cent units)

7F 7F 7F is reserved for no change to the existing note tuning

I also discovered Yamaha make a free iPhone/Pad app, Scale Tuner to adjust this on the fly for supported keyboards. It may work on other devices that support the same spec. It does look like it requires a hardware purchase of lightning/30-pin connector to MIDI, though I didn't track one of those down specifically.
I hope that's not considered spammy even if I did used to work there. I haven't tried it, just providing info for interested parties

7
  • 1
    Very interesting. So the upshot is whether one has both a keyboard controller that will send these messages and a tone generator that will interpret them as intended. Apr 3, 2016 at 20:36
  • @ToddWilcox Very much the case, I would think. The interesting thing might be to find out if at least some Arabic/Asian keyboards with non-western tunings actually have their tuning implemented in this way -i.e., transmissible - or if it is purely an internal hardware feature. There's someone I can ask about that - I'll drop another comment or add to the answer if I can find out...
    – Tetsujin
    Apr 4, 2016 at 6:36
  • @Tetsujin Interesting indeed. It would certainly be very beneficial to know.
    – nakhle
    Apr 5, 2016 at 11:32
  • at nakhle & @ToddWilcox - I managed to find a complete spec (written by people a whole lot smarter than me ;) & also an iOS app that can handle the tuning structure - added to answer.
    – Tetsujin
    Apr 6, 2016 at 11:13
  • 1
    on topic for a sec - I'd be tempted to say [without confirmation but I know how the hardware engineers think, I worked with them for 10 years] it would make more sense to have one piece of hardware with different firmware default tunings per 'tonal market' than make 2 hardware designs, so I would guess it's going to be done on that spec, even for the cheap stuff. Off-topic - yes, that's my old Japanese nickname, from when I worked there, in the R&D Centre, way back in the 90s ;)
    – Tetsujin
    Apr 6, 2016 at 11:26
5

So far, in my experience, alternate tunings are a feature of the sound module, not the MIDI controller. Tetsujin (see the other answer) has found that there is a spec for this, but as far as I know it is not often supported. You can determine whether a keyboard supports this by finding the manual and looking for the "MIDI Implementation Chart", just like the one linked in the other answer. You would want to check that both the keyboard you intend to use can send these messages and the tone generator/software you want to use will receive them and play in the altered tuning.

Barring that, we can continue with the original text of my answer, already in progress:


MIDI NOTE ON messages (which are the messages that are sent from a keyboard to a sound generator to play a note) normally only send two values, the velocity (how loud the note should be) and the note number, which is only 0 through 127 and does not contain any tuning information.

It is up to the sound generator to react to the incoming note numbers in the appropriate way. The most common response from a tone generator to a note number is to play an equal tempered note with the appropriate timbre corresponding to the note number. For instance, if your keyboard sends a NOTE ON message with note number 36, most tone generators will play an equal tempered C2.

It's easy to see how MIDI note numbers do not actually specify notes or tuning when one uses a drum module that complies with General MIDI. If you send the exact same NOTE ON message with note number 36 to a GM drum module, the module will normally play a mid tom drum sound instead of a C2 note. The note number is just a number from 0 to 127. It isn't even always used to play notes or sounds at all. Many people have programmed software such as Ableton Live to respond to note numbers by triggering loops or making other changes to the music they are making.

So tunings and alternate scales are all created by sound modules, not by keyboards or other MIDI controllers.

There is one way to make an equal tempered sound module play an alternate tuning with a MIDI controller, but I've never heard of one that does this. If there were a controller that allowed you to program it to send a PITCH BEND CC number at the same time it sends a NOTE ON with the appropriate tuning adjustments made by the PITCH BEND value, you could fake an altered tuning.

There are so many problems with this, it's no wonder that no one has made a keyboard that does it. First, the pitch bend range setting on the receiving module would have to be set to the correct amount(s) or else the altered tuning would not sound right. Also, you could only play monophonically, no chords, because the pitch bend value affects all the tones simultaneously.

3
  • I'm not sure how Oriental Keyboards work but what if they themselves quarter the tones by applying pitch bend, wouldn't then the pitch bend be sent along with the "NOTE ON" message? We know that this works with pitch bend wheels so why not with quarter tones? I'm not familiar with the mechanism of Oriental Keyboards but if the above was not the case, it's worth investigating if newer models have figured this out by applying the quarter tone using pitch bend.
    – nakhle
    Apr 3, 2016 at 20:31
  • 1
    Pitch bend is MIDI CC message which is a totally separate message from NOTE ON. The difference with oriental keyboards is that the tone generator/sound module supports alternate tunings, not the keyboard controller. Apr 3, 2016 at 20:34
  • The recent MPE standard allows controllers to send per-note controller information including pitch bend.
    – Adamski
    Aug 30, 2018 at 22:21

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.