Hi everyone,
Here's a slightly long yet hopefully useful update on our progress regarding some users experiencing hung notes with CSS / CSB in Logic. We tried to identify the cause by adding a script to Kontakt that monitors all of the MIDI data being sent to Kontakt by Logic. Bear with me because it's a little bit complicated.
What we found was that if you have MIDI chase enabled for CC64, and you then press stop during playback at a part where CC64 = ON, the following will occur. First, all notes currently sounding should stop at that point, because Logic always sends a CC64 = OFF command whenever you press stop.
However, since playback was stopped at a part where CC64 = ON, Logic will restore CC64 to ON immediately after it sends the initial CC64 = OFF message when playback was stopped. What this means is that any notes you then subsequently trigger, either by selecting a note in the editor or playing a note on the keyboard, these notes will be "hung", in that they will continue to sound as though the sustain pedal is engaged, because it is.
This is made slightly more complicated by the fact that there seems to be a minor bug in Logic, whereby even though you may have pressed stop during a part where CC64 = ON, sometimes Logic randomly neglects to restore CC64 to ON, for no apparent reason. Obviously in these random cases, hung notes will not occur.
But apart from those random cases, overall this is not a bug as such, and the same thing will occur whether you're using CSS, CSB or any other library that has long notes, e.g. the Logic default strings patches. If you want to avoid this specific situation, you could try turning off MIDI chase for CC64 in the preferences:
---
Another factor that may apply to some users relates to the pause button. As mentioned above, Logic sends a CC64 = OFF message at the end of a region or if you press stop, but not if you press pause. Any note sounding in this case should continue to sound.
Also, if you press the pause button close to or at the moment a new note starts, Logic sends this "note on" command
after the pause command to Kontakt. As a result, pressing the pause button will sometimes stop all notes, but other times the notes will continue to sound - creating the impression of hung notes. We will address this specific issue in the next script update, but hopefully this information helps folks that use the pause button in this scenario.
Some users have also reported hung notes after pressing the stop button. This never happened during our tests. It would be interesting to see if turning off MIDI chase for CC64 resolves this issue in those cases.
---
And lastly, this following scenario is something we're doing more ongoing testing on, but it would be useful to hear user feedback regarding this. Please see
this video of an example of a hung note being created with the default Logic EXS strings patch. It seems that we can constantly create hung notes by placing the playhead within a region shortly after a note, or perhaps just before the end of a note (as in the video).
In the video, notice it is the second note (the A) that becomes hung, possibly due to the playhead's position relative to the end of the note. It seems that Logic managed to send a "Note On" message for this note, but it never sent a "Note Off" message to it, hence it hung. Again, this is not CSS / CSB, just the default Logic strings. It seems that the "pre-roll" function in Logic is to blame here, and switching it off should hopefully alleviate this problem.
As I mentioned there is more testing to be done on this specific scenario, but can anyone else confirm / replicate this on their system, and does switching off pre-roll fix it? If you want to leave pre-roll on, here are other things that may help avoid the problem:
Always start the playback from the beginning of a region.
Do not use the fast-forward or rewind button during playback.
Do not manually reposition the playhead during playback.
Do these things help?
---
Thanks everyone for your patience, hopefully we'll continue to shed more light on the issue.
Best,
Alex