Thanks for the reply, @hesitz.
hesitz wrote:What do you mean by "regardless of *later* pitch-bend movements"? Note On messages are not pitch-bend messages and the onset of a new key's sound is not a pitch "bend"; it's a discrete movement to entirely new pitch.
I'm aware that pitch bend data is separate from note-on data. My request is that pitch bend data is only audibly heard when a note-on is triggered. That is, whatever the current pitch bend value is at a particular note's channel at the time of the note-on will sound throughout the lifetime of the note, even if the 'pitch wheel' is moved around during the note.
hesitz wrote:If I understand what you mean, though, yes there is a way to turn responsiveness to pitch bend off. Look at the (O)ptions, (M)idi page. There among the midi items that Pianoteq responds to, you will see one row with 'Pitch Bend' as target in Pianoteq. Delete that row. Done.
The problem here is that doing this will disable microtonality entirely. I would like the notes to audibly reflect the current pitch bend CC data when a note-on is triggered, but ignore any other pitch bend data afterward for that note.
Here's an example of what I'm doing here:
Let's say I'm playing a 24-EDO (quarter-tone) chromatic scale. A, A quarter-sharp, B-flat, B quarter-flat, B, etc. Half of these notes would need to be pitch bent up a quarter-step (let's say that's a MIDI pitch bend value of 8192). The other half of the notes should not be pitch bent at all (a value of 0). So as an example, if I play this chromatic scale with the sustain pedal held down...
-"A" would correspond to MIDI note #69 with 0 pitch bend offset (channel 1).
-"A quarter-sharp" would correspond to MIDI note #69 with 8192 pitch bend offset (channel 2).
-"B-flat" would correspond to MIDI note #70 with 0 pitch bend offset (channel 3).
-"B quarter-flat" would correspond to MIDI note #70 with 8192 pitch bend offset (channel 4).
-"B" would correspond to MIDI note #71 with 0 pitch bend offset (channel 5).
...and so on.
The 17th note in this scale would correspond to "F" which has a pitch bend value of 0. We lucked out, because this note would wrap back around to channel 1, but channel 1 already has a pitch bend value of 0. This works because the original "A" note on channel 1 won't be pitch-shifted due to the new "F" note.
But let's say we instead wanted to play "F quarter-sharp"? Well now, the pitch bend value will need to be set to 8192 on channel 1. This will allow F quarter-sharp to sound correct, but the original A note will now sound pitch shifted up a quarter-step. Why? Because PianoTeq is processing additional pitch bend data on notes after they were struck. I would like the plugin to stop processing pitch bend data on a note after it has been struck.
hesitz wrote:I'm a little confused, though, even if microtonal tuning with MPE relies on pitch bend messages, I see no reason why it would apply pitch bend messages beyond a single one at the onset of the note. . . .
It is definitely counterintuitive for a piano. On a synthesizer, you may be pitch-bending a note during its sustain all the time. Bending notes like a guitarist is a hallmark of synth lead playing. But applying bends during a note's sustain on piano often doesn't sound right, and I'd like the ability to have the plugin disable that feature. But you can test this yourself. Hold down a note (with your fingers or with the sustain pedal) and move the pitch wheel up and down. The note will pitch-shift during the sustain. I instead want the note to 'tune' itself to the current pitch bend value, but then not respond to any other wheel movement.
hesitz wrote:In this case, do NOT disable pitch bend response in Pianoteq, but DO disable your controller's sending of pitch bend messages. Pretty sure this means that your controller will then send no pitch bend messages (so no variation after note is hit) and the microtuning functionality in Pianoteq willl automatically send the precise pitch bend required for the microtuned note.
I appreciate the suggestion, though there is a problem. I could filter out pitch bend messages that occur during a note's sustain from the MIDI stream, but this would mean that the 17th, 18th, 19th... notes would not receive new pitch bend data, because those MIDI channels (1, 2, 3...) are already occupied by a sounding note. So the later notes wouldn't be tuned properly; they'd be arbitrarily tuned based on the first 16 channels. This is effectively the opposite of the problem I explained earlier, in which the earlier notes would be arbitrarily re-tuned to the 17th, 18th, 19th... notes, mid-sustain.
hesitz wrote:I do still have a question. Are you seeing multiple midi pitch bend messages for single note-on on the (O)ptions, (M)idi page? If not, there's no reason to think it has to do with pitch bend messages at all, is there? It's just how Pianoteq processes things.
And, just to make sure you're aware: The Pianoteq demo is fully functional apart from the time limitation and a few disabled keys. So you can definitely experiment with it, if you're not already, and it should behave same as a licensed version.
I have been using the demo to test this out. I strike a note and, immediately before the note-on message, a single pitch bend message at that channel is sent that tunes the incoming note through a script I've written. In my system, the plugin should still log and store into memory the current pitch bend values per channel even when modifying those values during the sustain; the plugin should just ignore those other values when generating its tone.
Last edited by jarodfedele (15-05-2023 17:36)