Topic: MTS-ESP issues

Is anyone successfully using real-time microtuning over MTS or MTS-ESP? I have made a virtual hexatone app at www.plainsound.org/hex which generates the MTS data for arbitrary tunings and it works beauifully with fluidsynth and Surge and VCV Rack, working on a GrandeOrgue implementation also. MTS-ESP MIni master responds correctly but I cannot get a proper response from Pianoteq even though the Settings claim one can turn on MIDI Tuning, choose a MTS MIDI profile, and select single note non pitch-bend (next note) retuning. Any help would be appreciated.

Re: MTS-ESP issues

With MTS-ESP controlling the intonation of Pianoteq, use the 'Continuous retuning (pitch-bending)' option, which enables doing things such as dynamic-microtuning and scale-morphs.

Using the other option, New notes only (no pitch-bending), requires new MIDI note-ons to be played before the tuning will update. Often this is the default selection in that drop-down options list...

Last edited by JL (11-02-2023 05:02)

Re: MTS-ESP issues

JL wrote:

With MTS-ESP controlling the intonation of Pianoteq, use the 'Continuous retuning (pitch-bending)' option, which enables doing things such as dynamic-microtuning and scale-morphs.

Using the other option, New notes only (no pitch-bending), requires new MIDI note-ons to be played before the tuning will update. Often this is the default selection in that drop-down options list...

yes, thanks, i tried that but it sounds poorly and not clean. Just to clarify, Pianoteq wants to receive MTS after the note-on? Would this not be better implemented before the note is played? I will try sending the sysex after as well in my program but that seems backwards to me

Last edited by 000masa000 (11-02-2023 10:35)

Re: MTS-ESP issues

000masa000 wrote:
JL wrote:

With MTS-ESP controlling the intonation of Pianoteq, use the 'Continuous retuning (pitch-bending)' option, which enables doing things such as dynamic-microtuning and scale-morphs.

Using the other option, New notes only (no pitch-bending), requires new MIDI note-ons to be played before the tuning will update. Often this is the default selection in that drop-down options list...

yes, thanks, i tried that but it sounds poorly and not clean. Just to clarify, Pianoteq wants to receive MTS after the note-on? Would this not be better implemented before the note is played? I will try sending the sysex after as well in my program but that seems backwards to me

I just tested an implementation sending MTS data before AND after the note being played. This does not work, and pitch-bending produces silly scooping artifacts on each note! Here is the MTS spec from MIDI 1.0:

[SINGLE NOTE TUNING CHANGE (REAL-TIME)]
The single note tuning change message (Exclusive Real Time sub-ID#1 = 08) permits on-the-fly adjustments to any tuning
stored in the instrument's memory. These changes should take effect immediately, and should occur without audible artifacts
if any affected notes are sounding when the message is received.
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)
02 sub-ID#2 (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
Page 2 of 8
This message also permits (but does not require) multiple changes to be embedded in one message, for the purpose of
maximizing bandwidth. The number of changes following is indicated by the byte ll; the total length of the message equals 8
+ (ll x 4) bytes.
If an instrument does not support the full range of 128 MIDI key numbers, it should ignore data associated with un-playable
notes on reception.
This message can be used to make changes in inactive (background) tunings as well. This message may also, at the
discretion of the manufacturer, be transmitted by the instrument under particular circumstances (for example, while holding
down one or more keys and pressing a "send-single-note-tuning" front panel button).

Here is my code:

if ((this.mts.length > 0) && (this.mts[0] >= 0) && (this.mts[0] < 128)) {
    this.midi_output.send([240, 127, 0, 8, 2, 0, 1, note_count, this.mts[0], this.mts[1], this.mts[2], 247]);
  };

note_count cycles between MIDI note 9 and 91 (the dampered notes) to produce target pitches. Unfortunately, Pianoteq is NOT retuning those notes, instead it is producing random retunings when either single note retuning option is selected.

Has Modartt implemented a "tuning map" concept for built-in retunings? can this be addressed?

cheers and thanks so much for your time and attention! This would be a great feature to have working properly!

Last edited by 000masa000 (11-02-2023 10:35)

Re: MTS-ESP issues

Apologies for not fully grasping the context of your application.

Now I see that you're endeavoring to tune PTQ with actual MTS (MIDI Tuning Standard) SYSEX data, but have also tried MTS-ESP Mini.

In the work here, although I was aware that PTQ can be tuned with MTS, I've mostly only used its Scala SCL-KBM and MTS-ESP functionality, and with the latter, specifically using MTS-ESP Master to retune the instrument...

In the case of MTS-ESP Master, depending on compositional context, sometimes one will want to configure it for note-on tuning, while using the continuous mode for when it's important to change the intonation while notes and chords are being held, such as in the case of using the scale-morph macros.

So, although I've used MTS microtuning extensively in other hardware and software virtual-instruments, just not in PTQ...

However, with the combination of MTS-ESP Master and an instance of MTS-ESP Client inserted before PTQ, it is then possible to transmit MTS from Client that's microtuned using Master.

As to why it's not behaving as expected with your use case is a little out of my scope, although I'm interested in seeing anything of this nature work properly. If you can get it working, please feel free to post a followup here. Occasionally I pass through and read some posts, so would be curious to learn it you can get it working with MTS.

Last edited by JL (11-02-2023 14:14)

Re: MTS-ESP issues

JL wrote:

Apologies for not fully grasping the context of your application.

Now I see that you're endeavoring to tune PTQ with actual MTS (MIDI Tuning Standard) SYSEX data, but have also tried MTS-ESP Mini.

In the work here, although I was aware that PTQ can be tuned with MTS, I've mostly only used its Scala SCL-KBM and MTS-ESP functionality, and with the latter, specifically using MTS-ESP Master to retune the instrument...

In the case of MTS-ESP Master, depending on compositional context, sometimes one will want to configure it for note-on tuning, while using the continuous mode for when it's important to change the intonation while notes and chords are being held, such as in the case of using the scale-morph macros.

So, although I've used MTS microtuning extensively in other hardware and software virtual-instruments, just not in PTQ...

However, with the combination of MTS-ESP Master and an instance of MTS-ESP Client inserted before PTQ, it is then possible to transmit MTS from Client that's microtuned using Master.

As to why it's not behaving as expected with your use case is a little out of my scope, although I'm interested in seeing anything of this nature work properly. If you can get it working, please feel free to post a followup here. Occasionally I pass through and read some posts, so would be curious to learn it you can get it working with MTS.

Hello and thanks for the reply. Yes, the chain I was using was : my program sends sysex with retuning of one note (real-time MTS) followed by a noteon message with that note. The MTS messages are cycling through different notes to allow maximum polyphony as the preceding notes may have tails. I am curious to learn about the working chain you mention, with MTS-ESP Master (a paid software) BEFORE a MTS-ESP client, followed by PTQ. Which client is this, and how is it configured? Thanks
Marc

Last edited by 000masa000 (11-02-2023 18:16)

Re: MTS-ESP issues

For anyone using MTS (MIDI tuning standard) with Pianoteq: please note the following, which is crucial to getting the setup working.

When installing MTS-ESP Suite, the "Client" VST is sometimes not installed correctly on 64-bit Windows,and therefore may not show up correctly in a DAW or other VST host! You may need (possibly) to manually copy the VST called MTS-ESP MIDI Client.dll into your Program Files (x86)\Common Files\VST2 folder (or one of the other locations where the host is looking for it). Once your DAW shows BOTH MTS-ESP Master (or the freeware Master MINI, which is also fine) AND MTS-ESP MIDI Client, you can chain them with Master first followed afterwards by Client, and set SysEx ON in both Master and Client, turning off the "built in" sound of Master MINI once functionality is confirmed.Then Pianoteq VST may be installed after the two MIDI processors.

In PTQ 8+ you can set External Tuning to Single Note (no pitch bend) for accurate and undistorted retuning.

Without Client in place, the MTS information appears to be sent TOO FAST for Pianoteq to properly retune itself.

There are several annoying bugs in the current PTQ implementation and I cross my fingers the Modartt can address them in an update: for instruments with a specifically limited range (notes that do not produce sound), PTQ currently simply ignores when retuned notes are sent as messages on those notes, even if the resulting pitches are in fact WITHIN range. Ideally, PTQ should accept all incoming pitches, and if there has been a retuning, look at the byte in the MTS sysex which gives the sounding pitch MIDI note, and THEN decide whether or not the instrument should produce sound.

Basically MTS uses the MIDI notes as placeholders for new, retuned note data, and this requires a small reimplementation of the current handling. Would be helpful!

Re: MTS-ESP issues

Hello and thanks for the reply. Yes, the chain I was using was : my program sends sysex with retuning of one note (real-time MTS) followed by a noteon message with that note. The MTS messages are cycling through different notes to allow maximum polyphony as the preceding notes may have tails. I am curious to learn about the working chain you mention, with MTS-ESP Master (a paid software) BEFORE a MTS-ESP client, followed by PTQ. Which client is this, and how is it configured? Thanks
Marc

Since it appears that this forum doesn't permit pasting in, or uploading screenshots in posts, I was unable to provide them earlier, although I made some to share that would've clarified on some details...

So, yes, it will require MTS-ESP Suite, which features two plugins: MTS-ESP Master, and MTS-ESP MIDI-Client.

For MTS SYSEX microtuning, the MTS-ESP MIDI-Client plugin instance would need to be placed before Pianoteq (or others that can be tuned with MTS), then from the top-right Preset menu options, choose from the MTS SYSEX Bulk or Single Note options (sounds like the latter is what's needed in this case).

Then when the tunings are changed in the MTS-ESP Master Scale List, MTS SYSEX dumps will be transmitted from MTS-ESP MIDI Client to the instrument after.

In testing this early on, I've not experienced any of the anomalous behaviors you've found, but rather the MTS tuning was robust and reliable.

For anyone that needs to work in these ways and with a wide range of musical intonation systems, MTS-ESP Suite is well worth the small investment. It just makes all of this so much easier to manage, with the added benefit of being able to save MTS-ESP Master Scale List presets, but recall all of the parameters of MTS-ESP MIDI Client as well. It's an elegant way of working.

Last edited by JL (12-02-2023 01:29)

Re: MTS-ESP issues

JL wrote:

So, yes, it will require MTS-ESP Suite, which features two plugins: MTS-ESP Master, and MTS-ESP MIDI-Client.

For MTS SYSEX microtuning, the MTS-ESP MIDI-Client plugin instance would need to be placed before Pianoteq (or others that can be tuned with MTS), then from the top-right Preset menu options, choose from the MTS SYSEX Bulk or Single Note options (sounds like the latter is what's needed in this case).

Then when the tunings are changed in the MTS-ESP Master Scale List, MTS SYSEX dumps will be transmitted from MTS-ESP MIDI Client to the instrument after.

In testing this early on, I've not experienced any of the anomalous behaviors you've found, but rather the MTS tuning was robust and reliable.

For anyone that needs to work in these ways and with a wide range of musical intonation systems, MTS-ESP Suite is well worth the small investment. It just makes all of this so much easier to manage, with the added benefit of being able to save MTS-ESP Master Scale List presets, but recall all of the parameters of MTS-ESP MIDI Client as well. It's an elegant way of working.


Just as an additional note, the free MTS-ESP Master MINI is enough if you use my onscreen microtonal keyboard (plainsound.org/hex) with Scale Workshop.... gives a no-cost open-source solution. Not sure if the Client is a free part of the Suite, otherwise it is, as you say, well worth supporting for this kind of work...

Re: MTS-ESP issues

Hello again, a final update! Now I have successfully set up Pianoteq standalone to receive and respond to MIDI Tuning Standard real-time messages by sending the right kind of message: Pianoteq needs the Device ID to be set to 127 (all) rather than 0, which some other devices prefer. I have updated my code at plainsound.org/hex so BOTH versions are sent, and now Pianoteq responds to the retuning in real-time:

thanks for the input and advice, also the support team from MTS_ESP who helped walk through it!

cheers
Marc

Re: MTS-ESP issues

That's really great news that you've got it working and ODDSound are amazing.