Ignore release frames for single-streamed instruments - #3900
Conversation
|
Getting there. The issue is still present for cutoff and resonance. |
7878331 to
f7af370
Compare
|
True. There was a mistake and now fixed. |
If m_instrumentTrack->instrument() is NULL, there's no reason to return non-zero value in InstrumentSoundShaping::releaseFrames(). And such situation shouldn't occur anymore.
|
@zonkmachine Now everything is done. Could you re-test it now? |
|
Now release doesn't seem to work. |
|
Yes. I put |
|
Just got a crash around where you're coding here but on my 'automation' branch (which doesn't touch anything there, so basically stable-1.2). |
|
What were you doing when it crashed? |
|
I think I pressed either of the Open existing project and Open Recenty opened projects buttons while looping a track. |
|
I think it's a separate issue and very rare one. It is "dereferencing a deallocated pointer" problem. There are several approaches to fix it. I guess it could be fixed easily if needed. |
|
OK. Open a separate issue for it? |
|
I'll merge it after about 10 hours.
Well, I don't think that's a major bug. Anyway, you may do so if needed. |
|
No separate issue. If you search the site you get this discussion anyway so it's already documented. |
Where can I find that? |
|
I mean when you search for a part of the backtrace. Like this. |
|
Though I think the ctash is not really relevant to this PR, fixing that isn't harmful. I suggest fixing it later, but it can be done now if needed. |
|
You call the shots here. Fixing later is fine by me. |
|
Got another crash like the one in #3900 (comment) when poking the arpeggiator release time in #4355. I was just listening to a four beat groove when it took a dive. By judging from the backtrace it crashed when looping back to the beginning.
Full backtrace in gist here. |
|
@zonkmachine Do you remember which instrument was playing? Or do you know steps to reproduce? |
|
No steps to reproduce. It's just one kick and an arpeggiated lb302 running over 4 beats. I'll try and see if I can make it crash again. I'll leave it up and running until something happens. Just one instrument so there'll be no doubt on the matter. |
|
8 hours and not a glitch. I think I need a plan for testing this on a larger scale. |
Let InstrumentSoundShaping::releaseFrames() ignore release frames for single-streamed instruments. And make it return 0 if m_instrumentTrack->instrument() is NULL.
Fixes #3899 by letting
InstrumentSoundShaping::releaseFrames()checkInstrument::IsSingleStreamedflag.There is one further option, disabling volume envelope when a single-streamed instrument is dropped(or even loaded). However, this change seems enough.