logobosscure

Send Midi System Exclusive Messages Data To Ensoniq Sd1 From A Pc

Transferring Sounds Via Midi On The Korg M1. You can use your sequencer program (Logic, Cubase, Digital Performer etc) to load in the data. To load via your sequencer just import the file into a track. Then play the track and the data will load into your synth. The midi files will also work with windows media player. Just import them into windows media player and play.

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?

nakhlenakhle

2 Answers

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

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

Send Midi System Exclusive Messages Data To Ensoniq Sd1 From A Pc Windows 10

Data

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

Send midi system exclusive messages data to ensoniq sd1 from a pc laptop

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

TetsujinTetsujin
9,1682 gold badges19 silver badges39 bronze badges

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.

Todd WilcoxTodd Wilcox
39.6k4 gold badges76 silver badges136 bronze badges

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

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?

nakhlenakhle

2 Answers

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)

John deere f935 service manual download. 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.

System

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

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

Send Midi System Exclusive Messages Data To Ensoniq Sd1 From A Pc Software

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

TetsujinTetsujin
9,1682 gold badges19 silver badges39 bronze badges

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.

Send Midi System Exclusive Messages Data To Ensoniq Sd1 From A Pc Computer

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.

Todd WilcoxTodd Wilcox
39.6k4 gold badges76 silver badges136 bronze badges

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