LMMS / lmms

Cross-platform music production software
https://lmms.io
GNU General Public License v2.0
7.85k stars 991 forks source link

Silent tracks #2711

Closed zonkmachine closed 7 years ago

zonkmachine commented 8 years ago

Lately I've seen tracks turning up silent on creation. I don't know when this started or how to reproduce it. The buggy tracks will however save and i enclose two examples with an extra working version that's been recreated from scratch. As far as I can remember I've only seen this in BBTracks. If I Ctrl+drag the silent tracks to the Song Editor they play just fine.


Test projects

testprojects.zip

Fastigium commented 8 years ago

It would seem silentsnare.mmp has an extra empty <pattern> element with the same position and length before the <pattern> element that contains the actual notes. Could it be that playback picks the first pattern in the right range it comes across, while the UI picks the last or processes them all?

Here's the extra <pattern> element:

(...)
</instrumenttrack>
<pattern steps="16" muted="0" type="0" name="Snare.ds" pos="0" len="192"/>
<pattern steps="16" muted="0" type="0" name="Snare.ds" pos="0" len="192">
    <note pan="0" key="57" vol="100" pos="48" len="-192"/>
(...)
musikBear commented 8 years ago

Perhaps related

2191

But with the exact opposite end result. Blocks that has this behavior are not saved! They disappears at project-reload, even though they playback and look normal in lmms. I can not advice a way to reproduce, it happens completely randomly.

https://www.youtube.com/watch?v=4U6EtpvfUcA

Fastigium commented 8 years ago

@musikBear I've read the issues you linked (both before and after the edit :wink:) and have to agree with what is said there: the random nature of this bug makes it extremely hard to investigate. We'd need to have a debug build of LMMS running in gdb when it happens and a developer handy to poke around to find out what's going on.

What might help is to add an assert that fails if copying a pattern (or noteblock, if you will) fails, so that debug builds will halt and allow investigation whenever it happens. It'd still need to happen to the right person, but it greatly increases the chance that it will be noticed and investigated.

@zonkmachine Same goes for this issue itself: an assert that fails if there are two patterns with the same starting point and length on a BBTrack might help uncover how that situation ever comes to be.

Let me know if you guys like the idea of adding an assert. It will mean that debug builds of LMMS will crash whenever the issue pops up, but it might uncover the cause.

zonkmachine commented 7 years ago

I never figured out a good way to reproduce this. Closing as likely fixed in #2981 I'll reopen this if it pops up again.