Plug-in integration into hosts with Hermode Tuning

Apple Logic and Hermode Tuning

The MIDI sysex, described below, is recommended for sending tuning data from hosts to plug-ins. Apple-Logic actually sends its tuning messages by this data.

Note:
For plug-ins possessing own tuning means, either tuning tables or Hermode Tuning, it is recommended that incoming tuning messages will have priority.
Additionally for plug-ins it is recommended to reset the tuning to equal temperament at every new start. This is to avoid an out-of-key tuning, basing on the last incoming tuning message.

MIDI Standard: SINGLE NOTE TUNING CHANGE (Real-Time)
F0 7F <device ID> 08 02 tt ll (kk xx yy zz) F7

F0 7F Universal Real Time SysEx header
<device ID> ID of target device
08 Sub-ID#1 (MIDI Tuning Standard)
02 Sub-ID#2 (02H, note change)
tt tuning program number (0-127)
ll number of changes (1 change = 1 set of (kk xx yy zz))
kk = MIDI key number
xx yy zz = frequency data for that key (repeated „ll“ number of times)
F7 EOX

Regarding tt (tuning program number):
The inventors of this data have been in doubt whether it could be useful to equip musical instruments with different tuning tables. But as this doesn’ t make many sense, all actual tuning applications send only one tuning table at the same time. Therefore, it isn’t necessary to support tt.

Apple-Logic sends its tuning tables in principal with the following values:
<deviceID> = 7F
tt = 00

The message is composed of both the following parameters:
1. The level of master tune (higher or lower than A = 440 Hz)
2. The individual tuning deviation from each note to a higher or lower position than with equal temperament.
The level of master tune and the value of the individual deviation of each note from equal temperament are added and exported with the values of “xx yy zz”.

Every new message will substitute the previous one. Every message retunes only the notes, named by “kk”, the other notes keep their frequency.
For dynamic retuning messages, calculated by tuning programs, e.g. Hermode Tuning, it is sufficient to send only the tuning messages of the notes having the status “On”.
For retuning messages caused by changes of master tune or by new selected fixed tuning tables it is necessary to send a message for all 128 Midi notes.

How to set the values of kk xx yy zz
kk marks the Midi note number which has to be retuned.
xx tunes this Midi note number kk to the frequency values of MIDI note xx in equal
temperament. For example: xx = 45 controls the note kk to an A of 440 Hz, xx = 3C controls the note kk to a C of about 261.6256 Hz.
The bytes yy and zz add microtuning values as plus-offsets to the value of xx. Their range of 128 * 128 = 16,384 steps corresponds to 100 Cents.

Remark:
MIDI defines the value of xx yy zz = 7F 7F 7F as “No change”. This is to prevent instruments which do not use the full range of 128 Midi key numbers from sending erroneous tuning data to instruments which do use the full range.

Steinberg Cubase and Hermode Tuning

Note:
For plug-ins possessing own tuning means, either tuning tables or Hermode Tuning, it is recommended that incoming tuning messages will have priority.
Additionally for plug-ins it is recommended to reset the tuning to equal temperament at every new start. This is to avoid an out-of-key tuning, basing on the last incoming tuning message.

Background of the two different tuning data of Cubase:
Hermode Tuning frequently changes the pitch of ringing notes. One reason could be that different notes of a chord start at a different time. The other reason could be that ringing notes change their harmonic function. The frequency changes almost are made below audibility by very little retuning steps.

Cubase therefore exports its tuning messages by two different data.

The first one is the VST message DETUNE, being added to the concerning note at its start.

As soon as ringing notes have to be retuned, a pitch change message for these notes will be sent by the VSt3 Standard “Note Expression”. Therefore the plugin has to support “VSt Note Expression”. As soon as it will report to Cubase that it does so, Cubase will update the pitch of ringing notes if necessary.

As long as “Note Expression” will not be supported, Hermode Tuning will also ameliorate the tuning, but the result would be worse than with the correct tuning data support.

Btw: In contrast to Apple-Logic, with Cubase actually (December 2012) it isn’t possible to change the Master Tune (A = 440 Hz) to a higher or deeper level. As it may be that Steinberg will relieve this shortcoming occasionally and as it could happen that this will be done by a separate message, please study from time to time the publications of Steinberg. – In abstract the change of Master Tune could be added to the Detune parameter so that no additional message would be required, but in the end Steinberg has to decide how to handle this.

deutsch | englisch

updated: 12/16/2012