Guitar Bends: Timing/Bend-hold-release question

Hello,

I’m quite new to Dorico, and overall I’m liking it so far. I searched on the forum to see if anyone else was discussing this topic, and could not find anything. Please forgive me if I missed it.

I am trying to notate combinations of bends and holds, such that I can indicate via notation, and control during playback, the timing of the bend vs the hold. For example, a plucked note that is held for a dotted quarter and then bent up over an eighth note, or (in the images below), a bend where a note is plucked, quickly bent up, held, then quickly released.

I’m not certain what the standard notation is for such a bend (if there even is one), but my approach in the past is to use explicit note duration and ties, so as to approximately represent the desired “held” portion, versus the bend. For example, if I want a slow, continual bend, I might use a half note with a bend. Alternatively, if I want to hold and then release, I might use a dotted quarter note tied to an eighth note, and only put the bend on the eighth note - thus indicating my intent: hold for a dotted quarter, and release over the duration of an eighth.

I’m coming from GuitarPro, where that is the approach used, and whilst a bit heavy handed, it works well, both in notation and playback.

In Dorico, the notation appears to work correctly with this approach. The bend is only notated for the final note of a tie chain, both in standard notation and tablature, and a hold line is drawn (if enabled) for the earlier bend, leading up to the release. Forced note duration allows me to control, explicitly, the duration of the bend-hold-bend in the notation:

guitarBendRelease_notation

That’s all well and good. However, in playback, both of these bends play in the exact same way:

guitarBendRelease_pitchBendData

The release occurs slowly, over the duration of a half note, regardless of how it is notated.

On one hand, this playback makes sense - there’s only the one note, and it’s bent, so bending over it’s duration is a logical decision. On the other hand, in the notation there is clearly a difference in duration between the bends - especially in the tab notation, where you can see a hold vs. no hold. It would be nice if there was some way to have this respected in Play mode.

As I could not find a way to automatically control the playback duration of bends, based on how the notation appeared, I thought maybe I could override the pitch bend data, in Play mode, and draw in the desired bend (not ideal, workflow wise, but it would be better than nothing). Unfortunately, it appears you cannot overwrite the pitchbend data generated from the bend notations? When I enter new automation, both the original and my entered automation is present, and the playback gets very strange (with both automation lines competing with each other)

So, I guess I have a few related questions:

  1. Does anyone know if there is a standard way to notate the duration of a bend-hold-release? I’m not convinced what I’m doing is technically correct. It works, but it feels like a hack. I typically don’t like forcing note duration (as it hinders rhythmic readability, versus the recommended notation based on the meter etc), but I’m not really sure of another way to notate it? I’m open to suggestions!

  2. Is there another way in Dorico to specify the duration of the bend-hold-release portions of a complex bend like this? One that works for both notation (the bends in the tab are where I’m most interested in duration being accurately notated) and playback?

  3. Is there a way to override the bends in Play mode, replacing the automatic pitch bend data with my own manually entered data?

  4. Any other thoughts/ideas on how I can achieve this?

Thanks,
Steve

Welcome to the forum, Steve, and thanks for the feedback. There isn’t, so far as I know, any way to influence the start position of the release in playback at the moment. The fundamental problem is that regardless of whether you notate the held note as a series of tied noteheads or a single notehead, internally Dorico is still treating that as a single note. Really the playback interpretation simply needs to be made much smarter, so that it takes into account the position of the end of the last notehead before the release note to decide the start position and duration of the release portion. I’ve made a note of this and we’ll try to address it in a future version.

I’m not an expert on guitar notation, but in the surveys we did when we were primarily working on guitar notation through most of 2019, we saw a lot of variation for all of these kinds of notations, and there seem to be a good many conventions in use.

Hi Daniel,

Thanks for your reply. I really appreciate the community involvement that the development team have here, on the forum. It shows that you truly care about your product.

I completely understand where you are coming from. I’m keeping my fingers crossed that you are able to implement an automatic solution in a future version - that would be a big help to me, personally - though I understand this is no small task, in this case.

In the meantime, is there anything I can do in Play mode to override the automatically generated pitch bend data?

It seems like I can override other MIDI CCs. For example, if MIDI CC1 is generated automatically as a result of the dynamics information, I can see the automatically generated curve:
automationOverride_MIDICC_before

And I can draw new automation on top, replacing the automatic curve:

I can also delete the manual data, and get back to the automatic data. I didn’t find mention of this “override” behavior in the docs, but it seems to work, so I’m assuming this is an intended feature?

Now, the implementation does seem a bit temperamental, in terms of which regions are manual vs automatic when making multiple edits over the same manual region:

midiAutomation_temperamental

So, as a tangent to the main topic at hand: I would personally much prefer if the manual region stayed entirely manual, when drawing over the top of it, and the new CC data blended with the existing manual data. Having sections revert to automatic makes using the line/pencil tools quite difficult - you have to be exact the first time you draw it in, as any attempt to draw over the top quickly mangles the data.

But I digress. For bends and pitch bend information, it seems that no overrides are possible?

I can see the automatic data:

And I can draw over it. But when I do, I see both sets of data, and the playback appears to receive conflicting information from both:

Is this a bug? I’d really like if pitch bend could work the same way as MIDI CC1 (above), such that I can use the automatic pitch bend 90% of the time, and manually adjust the bend timing only in the sections that need it. Any section I draw new information in, I’d really like if that completely replaced the underlying automatic data. And if I later delete that manual data, it would revert back to the automatic data.

I mention this in case implementing pitch bend data overrides is something you can address more easily, in the short term, before addressing the need to understand tied note lengths during playback? Also, it might be something that is more generally applicable to more users?

Thanks again for taking the time to discuss this with me.
Steve

1 Like

I discovered a few more details and thought it was worth providing an update:

I did not realize there were two different Pitch Bend automations (Pitch Bend vs MIDI Pitch Bend). Turns out I can override MIDI Pitch Bend in the same way as MIDI CCs, just not the “Pitch Bend” automation. The same issues I had above regarding re-drawing curves that override automatic data apply here too, unfortunately.

Overriding the MIDI Pitch Bend seemed promising, until I realized that the current Pitch Bend implementation in Dorico (if relying on the automatic guitar bends) is limited to +/-2 semitones (at least I could not find anything in the end point setup/expression maps to allow me to set the Pitch Bend range). I often write bends up to +3 semitones, so this was a bit of a roadblock for me. I’m guessing this system is still a work in progress, and I look forward to seeing where you take it in the future. I’m definitely a fan of separating abstract pitch bend (in semitones) from the underlying MIDI implementation.

So, for now, I’d still like to request the ability to override pitch bend data in the “Pitch Bend” lane, and have that ripple down to the data that is automatically populated in the MIDI Pitch Bend lane. I’d much rather work in semitones than MIDI Pitch Bend data.

Second - and I think I read elsewhere that this is something that’s in the works - I’d like to “+1” getting more robust Pitch Bend support - the ability to specify the pitch bend range of our endpoints, in their expression map, so that we can generate/draw data outside +/-2 semitones. If that’s what you’re planning (and it seems that way), I think it’s a very elegant solution to handling pitch bend data, and I look forward to when it’s fully implemented.

Finally, for anyone else who is trying to achieve the same thing that I am, I did eventually find a workaround to controlling the playback timing of guitar bends - and achieving bends that are outside of the +/-2 semitone range - though it is quite an involved (i.e. slow) process:

For all bends:

  1. Create the bend
  2. Select the bend, and suppress its playback (the bend itself, not the note it is associated with). That will remove the automatically generated pitch bend data, leaving a flat ‘0’ line.
  3. Suppressing playback of the bend will result in the “destination” notes of the bend sounding as true notes. Suppress the playback of these destination notes (in my example above, the note being bent up to, and the note being released down to).
  4. Extend the playback duration of the first note from the bend, so that it occupies the full duration (e.g. the duration of the bend-hold-release)
  5. Manually draw in the pitch bend data into the MIDI Pitch Bend lane, based on the pitch bend range of the target VST. I set mine to +/-10 semitones, so that every 10 cents is a semitone (making it easy to have exact bends).

Because I was not using the default +/-2 semitones, I must suppress the playback of all bends, and manually enter them all in this way. If you are fine using the default pitch bend range, you could simply override the MIDI Pitch Bend data manually, where needed.

Quite a bit of work, but I created a stream deck macro using the hotkey JSON “hack” to enter a bend, immediately suppress its playback, and also show the “hold line”. I’m composing with bends suppressed in this way, whilst determining the timing, and then manually setting up the pitch bend playback once I’m happy with the timing.

Obviously I look forward to the future when this workflow might be improved :slight_smile:

Thanks again,
Steve

1 Like

You’re quite right that the pitch bend implementation in Play mode is quite rudimentary at the moment. Part of the problem, as I understand it, is that it’s tricky to know what pitch bend range is supported by a given virtual instrument or playback device, and the means of changing or extending the pitch bend range differs from device to device as well.

Certainly in the future we do intend to continue improving the capabilities of MIDI editing in all respects in Play mode. It’s not a small project, though, so I hope you will be patient as we continue to improve the software in every respect we can.

1 Like

Absolutely! Dorico has already improved my workflow greatly. I look forward to future improvements, but I totally understand that these things take time.

Thanks,
Steve

1 Like