This is not a Dorico related question, but I am hoping that there could be some experts in this forum that could help me.
I have created a patch in MAX MSP which creates microtonal midi notes. At the moment the microtonality is expressed as a fractional midinote number, for example “65.3645 54”. First part of the message is pitch (65.3645) and second part velocity (54)
I would like to send these microtonal midi notes to pianoteq 8, the same way as Dorico supports microtonal playback. However I don’t know how to create the correct MIDI messages (or how to send VST 3 microtuning parameter) - pianoteq only plays back the notes without the microtonal adjustments.
If some could point me to the correct direction, I would be very thankful!
I’m not too familiar with Pianoteq, so unfortunately can’t help specifically. But obviously you have to express the microtonality in a way the player has implemented.
One strategy might be to encode a microtonal adjustment/offset to a regular note as pitch bend info. If this approach works, you’ll probably have to cycle through MIDI channels for overlapping notes.
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
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)
But I don’t actually understand what the explanations below mean in practice.
For anyone searching for this, here is how SysEx messages for tuning midi notes in pianoteq 8 are formulated. In max msp, messages must be sent with decimal values instead of hexadecimal values.
Here is how the MIDI values are calculated, in your case A4 is midi note 69, you want to retune it to 69.33: