LMMS / lmms

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

Possibly save error from earlier versions problematic in latest stable. #4521

Closed spongeboburu closed 6 years ago

spongeboburu commented 6 years ago

Version 1.1.3 on Fedora 28 64-bit.

I found a strange problem, even though I removed the global time signature my song would change signature numerator multiple times while playing. Even if I removed all old tracks and added a new empty beat line it would still change signature.

I saved an uncompressed version of the song and examined the XML. In there I found an automation track of type 6 that was outside the trackcontainer element. Somehow LMMS is playing that track, but it is not showing up in the UI.

The song has been through several versions of LMMS and it looks like this is a save artefact from previous versions.

PhysSong commented 6 years ago

That's rather a feature not known well. Type 6 means "hidden automation track" amd we use it for global automation feature. We know it can be confusing, see e.g. #403. If you want to remove them, you can right-click the target(meter denominator and/or numerator in your case) and click Remove song-global automation.

spongeboburu commented 6 years ago

Like I wrote

"even though I removed the global time signature my song would change"

It's a bug. I clicked the remove global automation multiple times and even edited and it was set to 4/4 as a straight line with no exceptions, but the track in the actual file had about 20 points in the track.

This track was completely out of reach from LMMS it seemed, could not be removed and could not be seen or accounted for in the UI.

PhysSong commented 6 years ago

Could you post the project file? You may remove irrelevant parts before posting here.

spongeboburu commented 6 years ago

Sure.

<?xml version="1.0"?>
<!DOCTYPE lmms-project>
<lmms-project version="1.0" creator="LMMS" creatorversion="1.1.3" type="song">
  <head mastervol="100" bpm="142" masterpitch="0">
    <timesig_numerator scale_type="linear" value="8" id="4258194"/>
    <timesig_denominator scale_type="linear" value="4" id="3722157"/>
  </head>
  <song>
    <trackcontainer width="1405" x="57" y="19" maximized="0" height="855" visible="1" type="song" minimized="0">
      <track muted="0" type="1" name="Beat/Bassline 0" solo="0">
        <bbtrack>
          <trackcontainer width="578" x="610" y="5" maximized="0" height="300" visible="0" type="bbtrackcontainer" minimized="0"/>
        </bbtrack>
      </track>
    </trackcontainer>
    <track muted="0" type="6" name="Automation track" solo="0">
      <automationtrack/>
      <automationpattern tens="1" mute="0" prog="0" name="Numerator" pos="0" len="8640">
        <time value="4" pos="0"/>
        <time value="9" pos="1728"/>
        <time value="8" pos="1920"/>
        <time value="2" pos="2112"/>
        <time value="4" pos="2208"/>
        <time value="8" pos="2352"/>
        <time value="12" pos="3840"/>
        <time value="24" pos="3984"/>
        <time value="12" pos="4272"/>
        <time value="16" pos="4416"/>
        <time value="9" pos="4656"/>
        <time value="8" pos="4848"/>
        <time value="9" pos="5040"/>
        <time value="8" pos="5280"/>
        <time value="2" pos="5664"/>
        <time value="4" pos="5760"/>
        <time value="12" pos="7872"/>
        <time value="24" pos="8016"/>
        <time value="12" pos="8304"/>
        <time value="16" pos="8448"/>
        <object id="4258194"/>
      </automationpattern>
      <automationpattern tens="1" mute="0" prog="0" name="Denominator" pos="0" len="192">
        <time value="4" pos="0"/>
        <object id="3722157"/>
      </automationpattern>
    </track>
    <fxmixer width="561" x="5" y="310" maximized="0" height="349" visible="0" minimized="0">
      <fxchannel num="0" muted="0" volume="1" name="Master">
        <fxchain numofeffects="0" enabled="0"/>
      </fxchannel>
    </fxmixer>
    <ControllerRackView width="258" x="880" y="310" maximized="0" height="154" visible="0" minimized="0"/>
    <pianoroll width="1436" x="0" y="5" maximized="0" height="829" visible="0" minimized="0"/>
    <automationeditor width="868" x="410" y="0" maximized="0" height="937" visible="0" minimized="0"/>
    <projectnotes width="400" x="700" y="10" maximized="0" height="300" visible="0" minimized="0"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#e0e0e0;">Put down your project notes here.</span></p></body></html>]]></projectnotes>
    <timeline lp1pos="192" lp0pos="0" lpstate="0"/>
    <controllers/>
  </song>
</lmms-project>
PhysSong commented 6 years ago

Remove song-global automation works to me. You need to do that for both meter numerator and denominator. After doing that, everything should work as expected.

spongeboburu commented 6 years ago

Doh, of course there are two different globals for top and bottom signature.

Yes sir, that does the trick. Sorry for wasting your time.

PhysSong commented 6 years ago

No worries. :smiley: