No extra bar with beat note near end

This commit is contained in:
Oskar Wallgren
2016-12-22 18:52:55 +01:00
parent ea88c906eb
commit f367604af7
3 changed files with 36 additions and 4 deletions

View File

@@ -125,6 +125,7 @@ private:
void upgrade_1_0_99();
void upgrade_1_1_0();
void upgrade_1_1_91();
void upgrade_1_2_0_rc3();
void upgrade();

View File

@@ -901,6 +901,32 @@ void DataFile::upgrade_1_1_91()
}
void DataFile::upgrade_1_2_0_rc3()
{
// Upgrade from earlier bbtrack beat note behaviour of adding
// steps if a note is placed after the last step.
QDomNodeList list = elementsByTagName( "bbtrack" );
for( int i = 0; !list.item( i ).isNull(); ++i )
{
list = elementsByTagName( "pattern" );
for( int i = 0; !list.item( i ).isNull(); ++i )
{
int patternLength, steps;
QDomElement el = list.item( i ).toElement();
for( int i = 0; !list.item( i ).isNull(); ++i )
{
if( el.attribute( "len" ) != "" )
{
patternLength = el.attribute( "len" ).toInt();
steps = patternLength / 12;
el.setAttribute( "steps", steps );
}
}
}
}
}
void DataFile::upgrade()
{
ProjectVersion version =
@@ -977,6 +1003,10 @@ void DataFile::upgrade()
{
upgrade_1_1_91();
}
if( version < "1.2.0-rc3" )
{
upgrade_1_2_0_rc3();
}
// update document meta data
documentElement().setAttribute( "version", LDF_VERSION_STRING );

View File

@@ -196,21 +196,22 @@ MidiTime Pattern::beatPatternLength() const
if( ( *it )->length() < 0 )
{
max_length = qMax<tick_t>( max_length,
( *it )->pos() +
MidiTime::ticksPerTact() /
MidiTime::stepsPerTact() );
( *it )->pos() + 1 );
}
}
if( m_steps != MidiTime::stepsPerTact() )
{
max_length = m_steps * MidiTime::ticksPerTact() /
MidiTime::stepsPerTact() ;
MidiTime::stepsPerTact();
}
return MidiTime( max_length ).nextFullTact() * MidiTime::ticksPerTact();
}
Note * Pattern::addNote( const Note & _new_note, const bool _quant_pos )
{
Note * new_note = new Note( _new_note );