A technical support community for Apple Logic Pro users.

Topic Author
Posts: 9
Joined: Tue May 04, 2010 11:59 pm

Erratic sustain treatment only on some playback cycles

Thu Oct 07, 2021 12:52 am


I think I may I've come across a bit of a bug to do with notes in Logic getting stuck during playback and I'm just wondering if it's a known issue. It's not about errant sustain data, it's more about Logic's erratic treatment of it.

Note: Logic version 10.6.3.

The original symptoms I had
(Although I've removed the errant MIDI sustain automation, I'm describing the original issue here so others can find this post through searches etc)
I have an 8-bar region (let’s call it region X) that consists of some chords playing. The chords do not overlap. When I play from the start of region X, sometimes successive notes all bleed into each other, sounding as though there’s a sustain pedal stuck down. This happens more frequently when I’m in Cycle Mode, 7-8 out of 10 times. In Cycle Mode, it only occurs on the first play cycle, then subsequent cycles do not exhibit this issue. If I'm not in cycle mode and just manually position the playhead to the start of the region with the < > keys, then this still happens, but much less often (say 1 in 8 attempts).

This is actually multiple issues happening at the same time. The first issue is that the preceding region (region W) had some errant MIDI sustain automation that I thought was set to zero at the end of that region, but upon closer inspection it was actually set to 5. I've since gone down the rabbit-hole of learning about MIDI Chase, and I can see why it's a good thing, and that's why it looks at the preceding region W's sustain value when starting playback of region X. So part one of the issue is that I just wasn't using Logic right. But that doesn't explain the 80%/20% inconsistency, and the rest of this post is about that inconsistent application of MIDI chase.

Firstly, I'm observing that Logic ignores MIDI sustain = 0 events when they occur as the first MIDI event in the region.
When I was troubleshooting this issue (ie. before I figured out about region W's sustain being set to 5 rather than zero), I inserted MIDI automation (with a value of zero) in piano roll view, in region X, at the very start, and confirmed in the MIDI Events list view, that this MIDI Sustain = 0 control event was the first event in region X. I figured that if there was some weird sustain issue from preceding regions, then this MIDI event would override that and force it to zero. What I found is that Logic ignores that MIDI event if it's at the very start of the region (eg. 128 1 1 1). If I increment the tick value by one (eg. 128 1 1 2), then my region plays back as expected, with no sustain. Note: I don't know if it was moving it back by one tick that was significant, or if it's the fact that moving it back by a tick moves it down the event list, past the first MIDI notes which are at 128 1 1 1.

Secondly, why was it being so inconsistent?
On cycle playback, ~2 out of 10 times my region X would play back with no sustain. The other ~8 out of 10 times, Logic would play the first cycle with sustain on all notes. Subsequent cycles would have no sustain (presumably because MIDI chase only applies to the first play event?) On non-cycle playback, 1 or 2 times out of 10, Logic would apply the previous region's sustain value. The other 8-9 times, it wouldn't. [When I say non-cycle playback, I mean manually positioning the playhead, using the < > keys, which are snapping to the nearest bar, then pressing spacebar to play.]

So, to summarise what I've observed:
1. Logic seems inconsistent with its treatment of the preceding region's (W) ending sustain value and how this is applied to the playback of this region (X). Surely it should apply MIDI chase either all of the time, or none of the time, based on the Project Preferences > MIDI > Chase > Control Changes > 64-71 setting.

2. Logic ignores a Sustain = 0 message within region X when that message the very first MIDI Event in region X.

I'm thinking that maybe point #2 is actually a 'feature', ie. Logic sees sustain as irrelevant if there's no note playing, even if the sustain event is trying to set sustain to zero. Seems a bit weird though.

Obviously the overriding important thing is to be tidy with one's sustain automation within regions and then this doesn't happen. But it was the inconsistent behaviour of Logic that made it a confusing afternoon of troubleshooting. It seems a bit of a bug?