mirror of
https://github.com/LMMS/lmms.git
synced 2026-05-17 19:24:52 -04:00
Separate DataFile::Upgrade into smaller functions
This commit is contained in:
@@ -385,6 +385,411 @@ void DataFile::cleanMetaNodes( QDomElement _de )
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_2_1_20070501()
|
||||
{
|
||||
// Upgrade to version 0.2.1-20070501
|
||||
QDomNodeList list = elementsByTagName( "arpandchords" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.hasAttribute( "arpdir" ) )
|
||||
{
|
||||
int arpdir = el.attribute( "arpdir" ).toInt();
|
||||
if( arpdir > 0 )
|
||||
{
|
||||
el.setAttribute( "arpdir", arpdir - 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
el.setAttribute( "arpdisabled", "1" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list = elementsByTagName( "sampletrack" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.attribute( "vol" ) != "" )
|
||||
{
|
||||
el.setAttribute( "vol", el.attribute(
|
||||
"vol" ).toFloat() * 100.0f );
|
||||
}
|
||||
else
|
||||
{
|
||||
QDomNode node = el.namedItem(
|
||||
"automation-pattern" );
|
||||
if( !node.isElement() ||
|
||||
!node.namedItem( "vol" ).isElement() )
|
||||
{
|
||||
el.setAttribute( "vol", 100.0f );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list = elementsByTagName( "ladspacontrols" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
QDomNode anode = el.namedItem( "automation-pattern" );
|
||||
QDomNode node = anode.firstChild();
|
||||
while( !node.isNull() )
|
||||
{
|
||||
if( node.isElement() )
|
||||
{
|
||||
QString name = node.nodeName();
|
||||
if( name.endsWith( "link" ) )
|
||||
{
|
||||
el.setAttribute( name,
|
||||
node.namedItem( "time" )
|
||||
.toElement()
|
||||
.attribute( "value" ) );
|
||||
QDomNode oldNode = node;
|
||||
node = node.nextSibling();
|
||||
anode.removeChild( oldNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
node = node.nextSibling();
|
||||
}
|
||||
}
|
||||
|
||||
QDomNode node = m_head.firstChild();
|
||||
while( !node.isNull() )
|
||||
{
|
||||
if( node.isElement() )
|
||||
{
|
||||
if( node.nodeName() == "bpm" )
|
||||
{
|
||||
int value = node.toElement().attribute(
|
||||
"value" ).toInt();
|
||||
if( value > 0 )
|
||||
{
|
||||
m_head.setAttribute( "bpm",
|
||||
value );
|
||||
QDomNode oldNode = node;
|
||||
node = node.nextSibling();
|
||||
m_head.removeChild( oldNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if( node.nodeName() == "mastervol" )
|
||||
{
|
||||
int value = node.toElement().attribute(
|
||||
"value" ).toInt();
|
||||
if( value > 0 )
|
||||
{
|
||||
m_head.setAttribute(
|
||||
"mastervol", value );
|
||||
QDomNode oldNode = node;
|
||||
node = node.nextSibling();
|
||||
m_head.removeChild( oldNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if( node.nodeName() == "masterpitch" )
|
||||
{
|
||||
m_head.setAttribute( "masterpitch",
|
||||
-node.toElement().attribute(
|
||||
"value" ).toInt() );
|
||||
QDomNode oldNode = node;
|
||||
node = node.nextSibling();
|
||||
m_head.removeChild( oldNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
node = node.nextSibling();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_2_1_20070508()
|
||||
{
|
||||
// Upgrade to version 0.2.1-20070508 from some version greater than or equal to 0.2.1-20070501
|
||||
QDomNodeList list = elementsByTagName( "arpandchords" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.hasAttribute( "chorddisabled" ) )
|
||||
{
|
||||
el.setAttribute( "chord-enabled",
|
||||
!el.attribute( "chorddisabled" )
|
||||
.toInt() );
|
||||
el.setAttribute( "arp-enabled",
|
||||
!el.attribute( "arpdisabled" )
|
||||
.toInt() );
|
||||
}
|
||||
else if( !el.hasAttribute( "chord-enabled" ) )
|
||||
{
|
||||
el.setAttribute( "chord-enabled", true );
|
||||
el.setAttribute( "arp-enabled",
|
||||
el.attribute( "arpdir" ).toInt() != 0 );
|
||||
}
|
||||
}
|
||||
|
||||
while( !( list = elementsByTagName( "channeltrack" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "instrumenttrack" );
|
||||
}
|
||||
|
||||
list = elementsByTagName( "instrumenttrack" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.hasAttribute( "vol" ) )
|
||||
{
|
||||
float value = el.attribute( "vol" ).toFloat();
|
||||
value = roundf( value * 0.585786438f );
|
||||
el.setAttribute( "vol", value );
|
||||
}
|
||||
else
|
||||
{
|
||||
QDomNodeList vol_list = el.namedItem(
|
||||
"automation-pattern" )
|
||||
.namedItem( "vol" ).toElement()
|
||||
.elementsByTagName( "time" );
|
||||
for( int j = 0; !vol_list.item( j ).isNull();
|
||||
++j )
|
||||
{
|
||||
QDomElement timeEl = list.item( j )
|
||||
.toElement();
|
||||
int value = timeEl.attribute( "value" )
|
||||
.toInt();
|
||||
value = (int)roundf( value *
|
||||
0.585786438f );
|
||||
timeEl.setAttribute( "value", value );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_3_0_rc2()
|
||||
{
|
||||
// Upgrade to version 0.3.0-rc2 from some version greater than or equal to 0.2.1-20070508
|
||||
QDomNodeList list = elementsByTagName( "arpandchords" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.attribute( "arpdir" ).toInt() > 0 )
|
||||
{
|
||||
el.setAttribute( "arpdir",
|
||||
el.attribute( "arpdir" ).toInt() - 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_3_0()
|
||||
{
|
||||
// Upgrade to version 0.3.0 (final) from some version greater than or equal to 0.3.0-rc2
|
||||
QDomNodeList list;
|
||||
while( !( list = elementsByTagName(
|
||||
"pluckedstringsynth" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "vibedstrings" );
|
||||
el.setAttribute( "active0", 1 );
|
||||
}
|
||||
|
||||
while( !( list = elementsByTagName( "lb303" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "lb302" );
|
||||
}
|
||||
|
||||
while( !( list = elementsByTagName( "channelsettings" ) ).
|
||||
isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "instrumenttracksettings" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_4_0_20080104()
|
||||
{
|
||||
// Upgrade to version 0.4.0-20080104 from some version greater than or equal to 0.3.0 (final)
|
||||
QDomNodeList list = elementsByTagName( "fx" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.hasAttribute( "fxdisabled" ) &&
|
||||
el.attribute( "fxdisabled" ).toInt() == 0 )
|
||||
{
|
||||
el.setAttribute( "enabled", 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_4_0_20080118()
|
||||
{
|
||||
// Upgrade to version 0.4.0-20080118 from some version greater than or equal to 0.4.0-20080104
|
||||
QDomNodeList list;
|
||||
while( !( list = elementsByTagName( "fx" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement fxchain = list.item( 0 ).toElement();
|
||||
fxchain.setTagName( "fxchain" );
|
||||
QDomNode rack = list.item( 0 ).firstChild();
|
||||
QDomNodeList effects = rack.childNodes();
|
||||
// move items one level up
|
||||
while( effects.count() )
|
||||
{
|
||||
fxchain.appendChild( effects.at( 0 ) );
|
||||
}
|
||||
fxchain.setAttribute( "numofeffects",
|
||||
rack.toElement().attribute( "numofeffects" ) );
|
||||
fxchain.removeChild( rack );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_4_0_20080129()
|
||||
{
|
||||
// Upgrade to version 0.4.0-20080129 from some version greater than or equal to 0.4.0-20080118
|
||||
QDomNodeList list;
|
||||
while( !( list =
|
||||
elementsByTagName( "arpandchords" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement aac = list.item( 0 ).toElement();
|
||||
aac.setTagName( "arpeggiator" );
|
||||
QDomNode cloned = aac.cloneNode();
|
||||
cloned.toElement().setTagName( "chordcreator" );
|
||||
aac.parentNode().appendChild( cloned );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_4_0_20080409()
|
||||
{
|
||||
// Upgrade to version 0.4.0-20080409 from some version greater than or equal to 0.4.0-20080129
|
||||
QStringList s;
|
||||
s << "note" << "pattern" << "bbtco" << "sampletco" << "time";
|
||||
for( QStringList::iterator it = s.begin(); it < s.end(); ++it )
|
||||
{
|
||||
QDomNodeList list = elementsByTagName( *it );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
el.setAttribute( "pos",
|
||||
el.attribute( "pos" ).toInt()*3 );
|
||||
el.setAttribute( "len",
|
||||
el.attribute( "len" ).toInt()*3 );
|
||||
}
|
||||
}
|
||||
QDomNodeList list = elementsByTagName( "timeline" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
el.setAttribute( "lp0pos",
|
||||
el.attribute( "lp0pos" ).toInt()*3 );
|
||||
el.setAttribute( "lp1pos",
|
||||
el.attribute( "lp1pos" ).toInt()*3 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_4_0_20080607()
|
||||
{
|
||||
// Upgrade to version 0.4.0-20080607 from some version greater than or equal to 0.3.0-20080409
|
||||
QDomNodeList list;
|
||||
while( !( list = elementsByTagName( "midi" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "midiport" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_4_0_20080622()
|
||||
{
|
||||
// Upgrade to version 0.4.0-20080622 from some version greater than or equal to 0.3.0-20080607
|
||||
QDomNodeList list;
|
||||
while( !( list = elementsByTagName(
|
||||
"automation-pattern" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "automationpattern" );
|
||||
}
|
||||
|
||||
list = elementsByTagName( "bbtrack" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
QString s = el.attribute( "name" );
|
||||
s.replace( QRegExp( "^Beat/Baseline " ),
|
||||
"Beat/Bassline " );
|
||||
el.setAttribute( "name", s );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_4_0_beta1()
|
||||
{
|
||||
// Upgrade to version 0.4.0-beta1 from some version greater than or equal to 0.4.0-20080622
|
||||
// convert binary effect-key-blobs to XML
|
||||
QDomNodeList list;
|
||||
list = elementsByTagName( "effect" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
QString k = el.attribute( "key" );
|
||||
if( !k.isEmpty() )
|
||||
{
|
||||
const QList<QVariant> l =
|
||||
base64::decode( k, QVariant::List ).toList();
|
||||
if( !l.isEmpty() )
|
||||
{
|
||||
QString name = l[0].toString();
|
||||
QVariant u = l[1];
|
||||
EffectKey::AttributeMap m;
|
||||
// VST-effect?
|
||||
if( u.type() == QVariant::String )
|
||||
{
|
||||
m["file"] = u.toString();
|
||||
}
|
||||
// LADSPA-effect?
|
||||
else if( u.type() == QVariant::StringList )
|
||||
{
|
||||
const QStringList sl = u.toStringList();
|
||||
m["plugin"] = sl.value( 0 );
|
||||
m["file"] = sl.value( 1 );
|
||||
}
|
||||
EffectKey key( NULL, name, m );
|
||||
el.appendChild( key.saveXML( *this ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade_0_4_0_rc2()
|
||||
{
|
||||
// Upgrade to version 0.4.0-rc2 from some version greater than or equal to 0.4.0-beta1
|
||||
QDomNodeList list = elementsByTagName( "audiofileprocessor" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
QString s = el.attribute( "src" );
|
||||
s.replace( "drumsynth/misc ", "drumsynth/misc_" );
|
||||
s.replace( "drumsynth/r&b", "drumsynth/r_n_b" );
|
||||
s.replace( "drumsynth/r_b", "drumsynth/r_n_b" );
|
||||
el.setAttribute( "src", s );
|
||||
}
|
||||
list = elementsByTagName( "lb302" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
int s = el.attribute( "shape" ).toInt();
|
||||
if( s >= 1 )
|
||||
{
|
||||
s--;
|
||||
}
|
||||
el.setAttribute( "shape", QString("%1").arg(s) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DataFile::upgrade()
|
||||
@@ -395,387 +800,61 @@ void DataFile::upgrade()
|
||||
|
||||
if( version < "0.2.1-20070501" )
|
||||
{
|
||||
QDomNodeList list = elementsByTagName( "arpandchords" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.hasAttribute( "arpdir" ) )
|
||||
{
|
||||
int arpdir = el.attribute( "arpdir" ).toInt();
|
||||
if( arpdir > 0 )
|
||||
{
|
||||
el.setAttribute( "arpdir", arpdir - 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
el.setAttribute( "arpdisabled", "1" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list = elementsByTagName( "sampletrack" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.attribute( "vol" ) != "" )
|
||||
{
|
||||
el.setAttribute( "vol", el.attribute(
|
||||
"vol" ).toFloat() * 100.0f );
|
||||
}
|
||||
else
|
||||
{
|
||||
QDomNode node = el.namedItem(
|
||||
"automation-pattern" );
|
||||
if( !node.isElement() ||
|
||||
!node.namedItem( "vol" ).isElement() )
|
||||
{
|
||||
el.setAttribute( "vol", 100.0f );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list = elementsByTagName( "ladspacontrols" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
QDomNode anode = el.namedItem( "automation-pattern" );
|
||||
QDomNode node = anode.firstChild();
|
||||
while( !node.isNull() )
|
||||
{
|
||||
if( node.isElement() )
|
||||
{
|
||||
QString name = node.nodeName();
|
||||
if( name.endsWith( "link" ) )
|
||||
{
|
||||
el.setAttribute( name,
|
||||
node.namedItem( "time" )
|
||||
.toElement()
|
||||
.attribute( "value" ) );
|
||||
QDomNode oldNode = node;
|
||||
node = node.nextSibling();
|
||||
anode.removeChild( oldNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
node = node.nextSibling();
|
||||
}
|
||||
}
|
||||
|
||||
QDomNode node = m_head.firstChild();
|
||||
while( !node.isNull() )
|
||||
{
|
||||
if( node.isElement() )
|
||||
{
|
||||
if( node.nodeName() == "bpm" )
|
||||
{
|
||||
int value = node.toElement().attribute(
|
||||
"value" ).toInt();
|
||||
if( value > 0 )
|
||||
{
|
||||
m_head.setAttribute( "bpm",
|
||||
value );
|
||||
QDomNode oldNode = node;
|
||||
node = node.nextSibling();
|
||||
m_head.removeChild( oldNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if( node.nodeName() == "mastervol" )
|
||||
{
|
||||
int value = node.toElement().attribute(
|
||||
"value" ).toInt();
|
||||
if( value > 0 )
|
||||
{
|
||||
m_head.setAttribute(
|
||||
"mastervol", value );
|
||||
QDomNode oldNode = node;
|
||||
node = node.nextSibling();
|
||||
m_head.removeChild( oldNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if( node.nodeName() == "masterpitch" )
|
||||
{
|
||||
m_head.setAttribute( "masterpitch",
|
||||
-node.toElement().attribute(
|
||||
"value" ).toInt() );
|
||||
QDomNode oldNode = node;
|
||||
node = node.nextSibling();
|
||||
m_head.removeChild( oldNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
node = node.nextSibling();
|
||||
}
|
||||
upgrade_0_2_1_20070501();
|
||||
}
|
||||
|
||||
if( version < "0.2.1-20070508" )
|
||||
{
|
||||
QDomNodeList list = elementsByTagName( "arpandchords" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.hasAttribute( "chorddisabled" ) )
|
||||
{
|
||||
el.setAttribute( "chord-enabled",
|
||||
!el.attribute( "chorddisabled" )
|
||||
.toInt() );
|
||||
el.setAttribute( "arp-enabled",
|
||||
!el.attribute( "arpdisabled" )
|
||||
.toInt() );
|
||||
}
|
||||
else if( !el.hasAttribute( "chord-enabled" ) )
|
||||
{
|
||||
el.setAttribute( "chord-enabled", true );
|
||||
el.setAttribute( "arp-enabled",
|
||||
el.attribute( "arpdir" ).toInt() != 0 );
|
||||
}
|
||||
}
|
||||
|
||||
while( !( list = elementsByTagName( "channeltrack" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "instrumenttrack" );
|
||||
}
|
||||
|
||||
list = elementsByTagName( "instrumenttrack" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.hasAttribute( "vol" ) )
|
||||
{
|
||||
float value = el.attribute( "vol" ).toFloat();
|
||||
value = roundf( value * 0.585786438f );
|
||||
el.setAttribute( "vol", value );
|
||||
}
|
||||
else
|
||||
{
|
||||
QDomNodeList vol_list = el.namedItem(
|
||||
"automation-pattern" )
|
||||
.namedItem( "vol" ).toElement()
|
||||
.elementsByTagName( "time" );
|
||||
for( int j = 0; !vol_list.item( j ).isNull();
|
||||
++j )
|
||||
{
|
||||
QDomElement timeEl = list.item( j )
|
||||
.toElement();
|
||||
int value = timeEl.attribute( "value" )
|
||||
.toInt();
|
||||
value = (int)roundf( value *
|
||||
0.585786438f );
|
||||
timeEl.setAttribute( "value", value );
|
||||
}
|
||||
}
|
||||
}
|
||||
upgrade_0_2_1_20070508();
|
||||
}
|
||||
|
||||
|
||||
if( version < "0.3.0-rc2" )
|
||||
{
|
||||
QDomNodeList list = elementsByTagName( "arpandchords" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.attribute( "arpdir" ).toInt() > 0 )
|
||||
{
|
||||
el.setAttribute( "arpdir",
|
||||
el.attribute( "arpdir" ).toInt() - 1 );
|
||||
}
|
||||
}
|
||||
upgrade_0_3_0_rc2();
|
||||
}
|
||||
|
||||
if( version < "0.3.0" )
|
||||
{
|
||||
QDomNodeList list;
|
||||
while( !( list = elementsByTagName(
|
||||
"pluckedstringsynth" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "vibedstrings" );
|
||||
el.setAttribute( "active0", 1 );
|
||||
}
|
||||
|
||||
while( !( list = elementsByTagName( "lb303" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "lb302" );
|
||||
}
|
||||
|
||||
while( !( list = elementsByTagName( "channelsettings" ) ).
|
||||
isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "instrumenttracksettings" );
|
||||
}
|
||||
upgrade_0_3_0();
|
||||
}
|
||||
|
||||
if( version < "0.4.0-20080104" )
|
||||
{
|
||||
QDomNodeList list = elementsByTagName( "fx" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
if( el.hasAttribute( "fxdisabled" ) &&
|
||||
el.attribute( "fxdisabled" ).toInt() == 0 )
|
||||
{
|
||||
el.setAttribute( "enabled", 1 );
|
||||
}
|
||||
}
|
||||
upgrade_0_4_0_20080104();
|
||||
}
|
||||
|
||||
if( version < "0.4.0-20080118" )
|
||||
{
|
||||
QDomNodeList list;
|
||||
while( !( list = elementsByTagName( "fx" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement fxchain = list.item( 0 ).toElement();
|
||||
fxchain.setTagName( "fxchain" );
|
||||
QDomNode rack = list.item( 0 ).firstChild();
|
||||
QDomNodeList effects = rack.childNodes();
|
||||
// move items one level up
|
||||
while( effects.count() )
|
||||
{
|
||||
fxchain.appendChild( effects.at( 0 ) );
|
||||
}
|
||||
fxchain.setAttribute( "numofeffects",
|
||||
rack.toElement().attribute( "numofeffects" ) );
|
||||
fxchain.removeChild( rack );
|
||||
}
|
||||
upgrade_0_4_0_20080118();
|
||||
}
|
||||
|
||||
if( version < "0.4.0-20080129" )
|
||||
{
|
||||
QDomNodeList list;
|
||||
while( !( list =
|
||||
elementsByTagName( "arpandchords" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement aac = list.item( 0 ).toElement();
|
||||
aac.setTagName( "arpeggiator" );
|
||||
QDomNode cloned = aac.cloneNode();
|
||||
cloned.toElement().setTagName( "chordcreator" );
|
||||
aac.parentNode().appendChild( cloned );
|
||||
}
|
||||
upgrade_0_4_0_20080129();
|
||||
}
|
||||
|
||||
if( version < "0.4.0-20080409" )
|
||||
{
|
||||
QStringList s;
|
||||
s << "note" << "pattern" << "bbtco" << "sampletco" << "time";
|
||||
for( QStringList::iterator it = s.begin(); it < s.end(); ++it )
|
||||
{
|
||||
QDomNodeList list = elementsByTagName( *it );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
el.setAttribute( "pos",
|
||||
el.attribute( "pos" ).toInt()*3 );
|
||||
el.setAttribute( "len",
|
||||
el.attribute( "len" ).toInt()*3 );
|
||||
}
|
||||
}
|
||||
QDomNodeList list = elementsByTagName( "timeline" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
el.setAttribute( "lp0pos",
|
||||
el.attribute( "lp0pos" ).toInt()*3 );
|
||||
el.setAttribute( "lp1pos",
|
||||
el.attribute( "lp1pos" ).toInt()*3 );
|
||||
}
|
||||
|
||||
upgrade_0_4_0_20080409();
|
||||
}
|
||||
|
||||
if( version < "0.4.0-20080607" )
|
||||
{
|
||||
QDomNodeList list;
|
||||
while( !( list = elementsByTagName( "midi" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "midiport" );
|
||||
}
|
||||
upgrade_0_4_0_20080607();
|
||||
}
|
||||
|
||||
if( version < "0.4.0-20080622" )
|
||||
{
|
||||
QDomNodeList list;
|
||||
while( !( list = elementsByTagName(
|
||||
"automation-pattern" ) ).isEmpty() )
|
||||
{
|
||||
QDomElement el = list.item( 0 ).toElement();
|
||||
el.setTagName( "automationpattern" );
|
||||
}
|
||||
|
||||
list = elementsByTagName( "bbtrack" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
QString s = el.attribute( "name" );
|
||||
s.replace( QRegExp( "^Beat/Baseline " ),
|
||||
"Beat/Bassline " );
|
||||
el.setAttribute( "name", s );
|
||||
}
|
||||
upgrade_0_4_0_20080622();
|
||||
}
|
||||
|
||||
if( version < "0.4.0-beta1" )
|
||||
{
|
||||
// convert binary effect-key-blobs to XML
|
||||
QDomNodeList list;
|
||||
list = elementsByTagName( "effect" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
QString k = el.attribute( "key" );
|
||||
if( !k.isEmpty() )
|
||||
{
|
||||
const QList<QVariant> l =
|
||||
base64::decode( k, QVariant::List ).toList();
|
||||
if( !l.isEmpty() )
|
||||
{
|
||||
QString name = l[0].toString();
|
||||
QVariant u = l[1];
|
||||
EffectKey::AttributeMap m;
|
||||
// VST-effect?
|
||||
if( u.type() == QVariant::String )
|
||||
{
|
||||
m["file"] = u.toString();
|
||||
}
|
||||
// LADSPA-effect?
|
||||
else if( u.type() == QVariant::StringList )
|
||||
{
|
||||
const QStringList sl = u.toStringList();
|
||||
m["plugin"] = sl.value( 0 );
|
||||
m["file"] = sl.value( 1 );
|
||||
}
|
||||
EffectKey key( NULL, name, m );
|
||||
el.appendChild( key.saveXML( *this ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
upgrade_0_4_0_beta1();
|
||||
}
|
||||
if( version < "0.4.0-rc2" )
|
||||
{
|
||||
QDomNodeList list = elementsByTagName( "audiofileprocessor" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
QString s = el.attribute( "src" );
|
||||
s.replace( "drumsynth/misc ", "drumsynth/misc_" );
|
||||
s.replace( "drumsynth/r&b", "drumsynth/r_n_b" );
|
||||
s.replace( "drumsynth/r_b", "drumsynth/r_n_b" );
|
||||
el.setAttribute( "src", s );
|
||||
}
|
||||
list = elementsByTagName( "lb302" );
|
||||
for( int i = 0; !list.item( i ).isNull(); ++i )
|
||||
{
|
||||
QDomElement el = list.item( i ).toElement();
|
||||
int s = el.attribute( "shape" ).toInt();
|
||||
if( s >= 1 )
|
||||
{
|
||||
s--;
|
||||
}
|
||||
el.setAttribute( "shape", QString("%1").arg(s) );
|
||||
}
|
||||
|
||||
upgrade_0_4_0_rc2();
|
||||
}
|
||||
|
||||
// update document meta data
|
||||
@@ -798,7 +877,6 @@ void DataFile::upgrade()
|
||||
m_head.setAttribute( "mastervol", 100 );
|
||||
}
|
||||
}
|
||||
//printf("%s\n", toString( 2 ).toUtf8().constData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user